A world-class financial analytics platform equivalent to dashboards used at Goldman Sachs, JPMorgan, BlackRock, McKinsey, and Fortune 500 finance departments. Built to demonstrate senior-level competency in Power BI, DAX, SQL data warehousing, financial analysis, risk analytics, and executive reporting.
| Metric | Value |
|---|---|
| Dashboard Pages | 12 |
| Visual Elements | 179 |
| DAX Measures | 98 |
| SQL Tables | 14 |
| Star Schema Relationships | 15 |
| Data Rows | 45,581 |
| Data Sources | SEC EDGAR · NSE · LSE · NYSE · NASDAQ · FRED · World Bank · IMF |
| Technologies | Power BI · DAX · PostgreSQL · Excel |
Audience: CFO · CEO · Board of Directors
Displays the complete profit and loss summary for executive consumption. Revenue KPI cards update dynamically using DAX CALCULATE with ALLSELECTED. The rolling 12-month revenue uses DATESINPERIOD. YoY growth uses SAMEPERIODLASTYEAR.
Key Metrics: Total Revenue · Gross Profit · EBITDA · Net Income · Gross Margin % · EBITDA Margin % · Net Margin % · ROE · ROA · ROIC
Visuals: Revenue trend line · Revenue by sector column chart · Gross profit by company bar chart · EBITDA trend · Revenue by region donut

Audience: CFO · Financial Controllers · Auditors · Equity Analysts
Ten-year financial statement explorer. The DuPont decomposition — Net Margin × Asset Turnover × Equity Multiplier — is calculated through a multi-level CTE in SQL and exposed as a DAX chain.
Key Metrics: Revenue · Gross Profit · EBIT · Net Income · Total Debt · Total Equity · Cash · Debt-to-Equity · Current Ratio · Quick Ratio
Visuals: Revenue vs COGS by year · EBITDA by company · Net income trend · Debt by company · Assets by sector donut

Audience: Equity Research Analysts · Portfolio Managers · Investment Committees
Bloomberg-style market data terminal. MA20, MA50, MA200 calculated with DATESINPERIOD. 30-day annualised volatility = STDEV.P × SQRT(252). 52-week range using 365-day window.
Key Metrics: Latest Price · Total Market Cap · Total Volume · 52W High · 52W Low · Avg Daily Return · 30D Volatility %
Visuals: Price trend with moving averages · Market cap by sector · Volume area chart · Return by sector · Market cap by exchange donut

Audience: Asset Managers · Portfolio Managers · Investment Committees
Full CFA-compliant risk analytics. Sharpe Ratio = (Return − Rf) / σ. Sortino uses downside deviation only. Information Ratio = Active Return / Tracking Error.
Key Metrics: Total Portfolio Value · Avg Daily Return · Avg Beta · Avg Std Dev · Benchmark Return · Sharpe Ratio · Sortino Ratio · Information Ratio · Alpha
Visuals: Portfolio return trend · Sector allocation donut · Portfolio value area · Beta by sector · Return by sector bar

Audience: Chief Risk Officers · Credit Committees · Basel III Compliance
Implements the Basel III / IFRS 9 Expected Credit Loss model: EL = PD × EAD × LGD. Risk tier classification: Green (<1% PD) · Amber (<5%) · Red (<15%) · Critical (≥15%).
Key Metrics: Total EAD · Avg PD · Avg LGD · Collateral Value · Expected Loss · NPL Ratio · Coverage Ratio · Unexpected Loss
Visuals: EAD by rating bar · Avg PD by sector · Exposure by sector donut · Collateral by rating · EAD by tenor · Exposure by tenor donut

Audience: Internal Audit · Compliance · Forensic Accountants · CFO
Benford's Law first-digit analysis. Composite fraud score combining 5 signals: Benford deviation · 3-sigma amount threshold · Duplicate payment flag · Round number bias · Off-hours timing.
Key Metrics: Total Transactions · Total Amount · Avg Fraud Score · Flagged Transaction Count · Off-Hours % · Benford Deviation Index
Visuals: Amount by flag reason · Fraud score by reason · Transaction trend · Amount by hour of day · Amount mix donut

Audience: CFO · FP&A Directors · Department Heads · Cost Centre Managers
Full budget-actual-forecast triangle. Variance Status uses SWITCH(TRUE()) for dynamic RAG classification. Full Year Forecast adds actuals to remaining-month forecasts using DimDate[Month] > MONTH(TODAY()).
Key Metrics: Budget · Actual · Forecast · Variance $ · Variance % · Forecast Accuracy % · Budget Attainment % · Full Year Forecast
Visuals: Budget vs actual by department · Actual by cost centre · Budget trend · Actual vs forecast trend · Spend by department donut

Audience: Group Treasurer · Treasury Committee · CFO · ALCO
Basel III regulatory ratios daily monitoring. LCR = HQLA / Net Stressed Outflows ≥ 100%. NSFR = ASF / RSF ≥ 100%. FX exposure net long/short by currency.
Key Metrics: Total Cash · FX Long · FX Short · HQLA · Net Cash Outflows 30D · LCR % · NSFR % · LCR Status
Visuals: Cash balance trend · FX exposure by currency · HQLA area trend · Cash by currency · FX mix donut

Audience: Board ESG Committee · Investor Relations · Sustainability Officers
MSCI-methodology ESG composite: E × 40% + S × 35% + G × 25%. Rating bands: AAA (≥80) · AA (≥70) · A (≥60) · BBB (≥50) · BB (≥40) · B (<40). Carbon intensity YoY uses SAMEPERIODLASTYEAR.
Key Metrics: Avg E Score · Avg S Score · Avg G Score · ESG Composite Score · ESG Rating Band · Avg Carbon Intensity · Carbon YoY Change % · Board Diversity %
Visuals: E score by company · S score by company · Carbon intensity by company · G score by company · ESG by sector donut

Audience: Strategy Teams · Investment Committees · Chief Economists
Country-level macro aggregation from FRED, World Bank, and IMF. Real Policy Rate = Nominal Rate − Inflation (Fisher equation proxy).
Key Metrics: Avg GDP Growth · Avg Inflation · Avg Policy Rate · Real Policy Rate · Avg Unemployment · Avg USD Index · Avg VIX
Visuals: GDP growth trend · Inflation by country · Policy rate trend area · Unemployment by country · VIX by country

Audience: CFO · Credit Analysts · Rating Agency Analysts
Full balance sheet decomposition. Cash Conversion Cycle = DIO + DSO − DPO. Equity Multiplier feeds the DuPont ROE chain. Working Capital = Current Assets − Current Liabilities.
Key Metrics: Total Assets · Total Equity · Total Debt · Cash · Current Assets · Current Liabilities · Working Capital · Debt-to-Equity · Net Debt to EBITDA
Visuals: Total assets trend · Debt by company · Equity by company · Cash trend area · Assets by company donut

Audience: Board of Directors · CEO · CFO · Investment Committee
The flagship page. All 12 analytical domains unified on one screen. Cross-filtering: clicking any visual instantly updates all others. Three-row layout: Revenue & Portfolio | Credit & Treasury | P&L & FP&A & ESG.
Key Metrics: All 9 fact table KPIs on a single page
Visuals: 3 × 3 grid of the most important chart from each analytical domain with 7 KPI cards at the top

EnterpriseFinancialPortfolio/
│
├── README.md ← You are here
│
├── dashboards/
│ ├── EnterpriseFinancialPortfolio.pbix ← Main portfolio (12 pages, 179 visuals)
│ ├── EnterpriseFinancialPortfolio_Template.pbit ← Portable template version
│ └── Nairobi_Womens_Hospital_Dashboard.pbix ← Bonus healthcare dashboard
│
├── data/
│ └── EnterpriseFinancialPortfolio_Data.xlsx ← 14 tables, 45,581 rows
│ ├── DimDate (2,192 rows)
│ ├── DimCompany (10 rows)
│ ├── DimTicker (10 rows)
│ ├── DimDepartment (8 rows)
│ ├── DimEconomicIndicators (30 rows)
│ ├── FactFinancials (720 rows)
│ ├── FactBalanceSheet (720 rows)
│ ├── FactMarketPrices (5,220 rows)
│ ├── FactPortfolio (5,220 rows)
│ ├── FactCreditRisk (600 rows)
│ ├── FactFPA (288 rows)
│ ├── FactTreasury (27,370 rows)
│ ├── FactFraud (3,000 rows)
│ └── FactESG (60 rows)
│
├── sql/
│ ├── 01_star_schema_DDL.sql ← Full data warehouse DDL (PostgreSQL compatible)
│ └── 02_analytics_queries.sql ← Advanced SQL: CTEs, window functions, procedures
│
├── dax/
│ └── DAX_Measures_Library.dax ← All 98 DAX measures with documentation
│
├── docs/
│ ├── Data_Dictionary.md ← Full data dictionary for all 14 tables
│ └── Interview_Talking_Points.md ← Dashboard-by-dashboard interview guide
│
└── screenshots/
└── (add your dashboard screenshots here for LinkedIn and GitHub preview)
All data originates from official public sources. No Kaggle datasets used.
| Domain | Source | URL |
|---|---|---|
| Financial Statements | SEC EDGAR | https://efts.sec.gov |
| Market Prices (US) | NYSE · NASDAQ | https://finance.yahoo.com |
| Market Prices (Africa) | NSE Kenya | https://www.nse.co.ke |
| Market Prices (Europe) | London Stock Exchange | https://www.londonstockexchange.com |
| Macro Indicators | FRED (St. Louis Fed) | https://fred.stlouisfed.org |
| GDP · Unemployment | World Bank | https://data.worldbank.org |
| Country Macro | IMF Data | https://www.imf.org/en/Data |
| Kenya Rates | Central Bank of Kenya | https://www.centralbank.go.ke |
| Technology | Version | Purpose |
|---|---|---|
| Power BI Desktop | June 2026 (v2.155) | Dashboard development |
| DAX | — | 98 measures across 9 domains |
| PostgreSQL | 15+ | Star schema DDL, analytics queries |
| Excel (xlsx) | — | Data source (14 sheets, 45K rows) |
| SQL Server | 2022 | Partitioned fact tables, materialized views |
| Snowflake | — | Cloud data warehouse compatible DDL |
| Function Category | Functions Used |
|---|---|
| Filter context | CALCULATE · FILTER · ALL · ALLSELECTED · ALLEXCEPT |
| Aggregation | SUM · AVERAGE · SUMX · AVERAGEX · STDEV.P · RANKX |
| Time intelligence | DATESINPERIOD · SAMEPERIODLASTYEAR · DATEADD · TOTALYTD · TOTALQTD · TOTALMTD · PREVIOUSQUARTER · LASTDATE |
| Logical / flow | SWITCH · IF · SELECTEDVALUE · ISINSCOPE |
| Table functions | TREATAS · TOPN · GENERATESERIES · VALUES |
| Statistical | STDEV.P · SQRT · DIVIDE (zero-safe) |
| Dynamic | Dynamic titles · Context-aware tooltips · Conditional formatting |
| Category | Techniques |
|---|---|
| Window functions | ROW_NUMBER · RANK · DENSE_RANK · NTILE · LAG · LEAD · SUM OVER · AVG OVER · STDEV OVER |
| CTEs | Multi-level CTEs · Recursive CTEs · DuPont decomposition |
| Stored procedures | sp_calc_expected_loss with risk tier classification |
| Views & materialized views | vw_fpa_variance · mv_monthly_kpi_summary |
| Partitioning | Range partitioning on fiscal_year for FactFinancials |
| Indexing | Clustered indexes on date+company keys · Covering indexes |
| Advanced | Benford's Law detection · Dynamic SQL · Triggers |
┌─────────────┐
│ DimDate │
└──────┬──────┘
│
┌─────────────────┼─────────────────┐
│ │ │
┌──────┴───────┐ ┌──────┴───────┐ ┌──────┴───────┐
│FactFinancials│ │FactMarketPrx │ │ FactPortfolio│
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
┌──────┴───────┐ ┌──────┴───────┐ ┌──────┴───────┐
│ DimCompany │ │ DimTicker │ │ DimTicker │
└──────────────┘ └──────────────┘ └──────────────┘
┌───────────────┐ ┌────────────┐ ┌──────────────┐
│FactBalanceSheet│ │ FactFPA │ │FactTreasury │
└───────┬───────┘ └─────┬──────┘ └──────┬───────┘
│ │ │
┌───────┴───────┐ ┌─────┴──────┐ ┌──────┴───────┐
│ DimCompany │ │DimDepartmnt│ │ DimDate │
└───────────────┘ └────────────┘ └──────────────┘
┌───────────────┐ ┌────────────┐ ┌──────────────┐
│FactCreditRisk │ │ FactFraud │ │ FactESG │
└───────┬───────┘ └─────┬──────┘ └──────┬───────┘
│ │ │
┌───────┴───────┐ ┌─────┴──────┐ ┌──────┴───────┐
│ DimDate │ │ DimDate │ │ DimCompany │
└───────────────┘ └────────────┘ └──────────────┘
- Download
dashboards/EnterpriseFinancialPortfolio.pbix - Download
data/EnterpriseFinancialPortfolio_Data.xlsx - Open the
.pbixin Power BI Desktop (June 2026 or later) - Go to
Home → Transform Data → Data Source Settings - Select the Excel source → click
Change Source - Browse to
EnterpriseFinancialPortfolio_Data.xlsx→ clickOK - Click
Close & Apply - All 179 visuals across 12 pages populate automatically
- Open Power BI Desktop
Home → Get Data → Excel Workbook- Browse to
EnterpriseFinancialPortfolio_Data.xlsx - Select all 14 sheets in the Navigator → click
Load - In
Model View, draw the 15 relationships per the table indocs/Data_Dictionary.md - In
Report View, add measures fromdax/DAX_Measures_Library.dax - Build your own visualisations or import the
.pbixlayout
# PostgreSQL
psql -U postgres -d financial_dw -f sql/01_star_schema_DDL.sql
psql -U postgres -d financial_dw -f sql/02_analytics_queries.sql
# Load data from Excel into staging tables then run ETLHome → Get Data → PostgreSQL database- Server:
localhost· Database:financial_dw - Select all fact and dimension tables
- Relationships auto-detect from matching key column names
- Add DAX measures from
dax/DAX_Measures_Library.dax
- Income statement, balance sheet, and cash flow analysis
- Profitability, liquidity, leverage, and efficiency ratios
- DuPont ROE decomposition
- DCF valuation concepts
- Investment portfolio risk metrics (CFA methodology)
- Basel III credit risk: PD, EAD, LGD, EL, LCR, NSFR
- ESG scoring (MSCI methodology)
- Forensic accounting and Benford's Law
- Star schema and snowflake schema design
- SCD Type 2 slowly changing dimensions
- Table partitioning by fiscal year
- Materialized views for performance
- Row-level security design
- ETL pipeline design
- Data quality framework
- 98 DAX measures across 9 analytical domains
- Time intelligence (YTD, QTD, MTD, YoY, rolling windows)
- Advanced CALCULATE with ALL, ALLSELECTED, ALLEXCEPT
- Dynamic titles and conditional formatting
- Cross-filtering and drill-through design
- Interactive slicers for Year, Sector, Region, Currency
- Complex joins and self-joins
- Window functions and analytical queries
- Multi-level CTEs
- Stored procedures and triggers
- Views and materialized views
- Query optimisation and index strategy
Philip Kibet Biostatistician & Data Manager | Financial Data Analyst Nairobi, Kenya
- GitHub: @Apollop24
- Specialisations: Biostatistics · Financial Analytics · SQL · Power BI · Python · R · SPSS · SAS
- Available for: Freelance data analytics, biostatistics consulting, financial reporting projects
This project is released under the MIT Licence. See LICENSE for details.
Data used in this portfolio originates exclusively from official public sources (SEC EDGAR, NSE, LSE, FRED, World Bank, IMF) and is used for educational and portfolio demonstration purposes only.
Built with Power BI · DAX · SQL · Excel · Python Data: SEC EDGAR · NSE Kenya · LSE · NYSE · NASDAQ · FRED · World Bank · IMF