This project quantifies and visualizes market risk for a multi-asset portfolio (AAPL, JPM, SPY) using Value-at-Risk (VaR) and EWMA volatility models.
It integrates Python for statistical risk modeling and Power BI for interactive visualization, simulating how top investment banks (like J.P. Morgan or Goldman Sachs) monitor daily portfolio exposure.
Financial institutions must estimate potential losses over one trading day under normal market conditions.
This analysis answers the key question:
“What is the maximum expected 1-day loss at 95 % and 99 % confidence levels?”
| Phase | Description | Tools |
|---|---|---|
| 1️⃣ Data Acquisition | Fetched historical prices for AAPL, JPM, SPY (2018-2025) | Python yfinance, pandas |
| 2️⃣ Return & Volatility Modeling | Calculated daily returns, rolling σ, and EWMA volatility | NumPy, Pandas |
| 3️⃣ Value-at-Risk (VaR) | Computed Parametric VaR at 95 % & 99 % using z-scores | SciPy, Pandas |
| 4️⃣ Backtesting | Performed Kupiec Proportion-of-Failures Test | Statistical validation |
| 5️⃣ Visualization | Built interactive Power BI dashboards (Overview + Asset Analytics) | Power BI Desktop |
| 6️⃣ Insights | Interpreted risk exposure & model calibration | Quant Analysis |
- Portfolio VaR₉₅ ≈ 29.6 %, VaR₉₉ ≈ 40–42 % → maximum expected 1-day loss.
- AAPL VaR₉₅ = 47.45 %, VaR₉₉ = 67.11 %
- JPM VaR₉₅ = 42.39 %, VaR₉₉ = 59.96 %
- SPY VaR₉₅ = 28.14 %, VaR₉₉ = 39.80 %
➡️ Portfolio diversification lowers total VaR relative to individual risks.
| Ticker | Conf. | Obs. | Exceptions | Rate | p-value |
|---|---|---|---|---|---|
| AAPL | 95 % | 1 ,949 | 0 | 0 % | 1.0 |
| JPM | 95 % | 1 ,949 | 0 | 0 % | 1.0 |
| SPY | 95 % | 1 ,949 | 0 | 0 % | 1.0 |
No VaR breaches occurred, confirming the model is statistically calibrated and reliable for daily risk monitoring.
- Portfolio VaR (95/99 %), Volatility σ, Average Return
- SPY Volatility Trend (EWMA vs Rolling)
- Portfolio Return vs VaR Bands
- Date Range Slicer + Summary Footer
-
- Asset KPIs (AAPL | JPM | SPY)
- Risk Ranking (Bar Chart – VaR 95 %)
- Volatility Trend (Line Chart)
- Python 3.10+ → Pandas, NumPy, Matplotlib, SciPy
- Power BI Desktop 2025 for visual analytics
- Yahoo Finance API (yfinance) for data extraction
- Kupiec Test for VaR backtesting
- **GitHub
The model predicts daily portfolio losses will not exceed ≈ 30 % (95 %) or ≈ 40 % (99 %) under normal market conditions.
Kupiec backtesting (0 exceptions / p = 1.0) confirms the model is statistically sound and robust for real-world risk management.
- 📊 Page 3 – Correlation & Stress-Test Dashboard
- 🔧 Add Monte Carlo & Historical VaR simulation
- ⚙️ Automate daily data refresh in Power BI Service
- 🧠 Integrate Sharpe ratio and Expected Shortfall metrics
Sangram Shivaji Dedge
Business / Data Analyst – Risk Analytics
📍 Worcester | Boston Area 🇺🇸
🔗 LinkedIn | GitHub
#PowerBI #Python #FinanceAnalytics #MarketRisk #ValueAtRisk #QuantAnalysis #PortfolioManagement #DataVisualization