Skip to content

Commit a38b12e

Browse files
committed
Add model risk validation documentation (measurement + backtesting)
1 parent 25fb6c5 commit a38b12e

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

docs/model_risk_report.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Model Risk Report (V1) — Market Risk VaR/ES
2+
3+
## 1. Purpose
4+
Demonstrate a validation-ready risk engine that:
5+
1) computes VaR/ES under clear assumptions and conventions, and
6+
2) evaluates reliability using standard model risk diagnostics.
7+
8+
## 2. Loss Convention (Non-negotiable)
9+
All risk measures are reported as **positive loss amounts**:
10+
- returns < 0 represent losses
11+
- VaR, ES ≥ 0
12+
- ES ≥ VaR
13+
14+
## 3. Models Implemented
15+
### 3.1 Historical Simulation (HS)
16+
- VaR computed as the empirical *(1 − α)* quantile of portfolio returns
17+
- ES computed as the conditional mean of returns beyond the VaR threshold
18+
19+
### 3.2 Parametric Normal
20+
- assumes portfolio returns are approximately normal
21+
- VaR/ES derived from μ and σ using Φ^{-1}(α) and φ(z)
22+
23+
### 3.3 Monte Carlo (MVN)
24+
- simulates multivariate normal returns using sample μ, Σ
25+
- includes light covariance shrinkage toward diagonal for stability
26+
- VaR/ES computed from simulated portfolio return distribution
27+
28+
### 3.4 Filtered Historical Simulation (GARCH-lite)
29+
- fixed-parameter GARCH(1,1) volatility filter produces σ_t
30+
- standardized residuals z_t = r_t / σ_t
31+
- VaR/ES computed from z distribution and scaled by σ_{t+1}
32+
33+
## 4. Validation Approach
34+
### 4.1 Rolling Backtest (1-day VaR)
35+
- estimate VaR_t from trailing window using data up to t−1
36+
- exception occurs if realized r_t falls below VaR threshold
37+
- output: exception series and backtest summary
38+
39+
### 4.2 Kupiec POF (Unconditional Coverage)
40+
- H₀: exception probability equals (1 − α)
41+
- returns LR statistic and p-value
42+
- small p-values indicate rejection of correct coverage
43+
44+
## 5. Known Limitations (Explicit)
45+
- HS assumes returns are iid/stationary within window
46+
- Normal and MVN assume elliptical tails and may understate tail risk
47+
- GARCH-lite uses fixed parameters (not MLE-estimated)
48+
- Backtest currently targets unconditional coverage only (no independence test in V1)
49+
50+
## 6. Next Validation Extensions (Planned)
51+
- Christoffersen independence / conditional coverage
52+
- stress testing of window sensitivity and α calibration
53+
- bootstrap confidence intervals for VaR estimates

0 commit comments

Comments
 (0)