Spaces:
Sleeping
Sleeping
File size: 4,522 Bytes
8f1c2fc | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # Variable Dictionary β every modelled variable: source, transformation, window, rationale, fitted sign
Data window: panel quarters t=1..60 β **2000Q2β2015Q1** (calendar anchoring verified vs FRED UNRATE, corr 0.996).
Train = tβ€40 (2000Q2β2010Q1); OOT = t=41β60 (2010Q2β2015Q1, the stress aftermath). All fits on train only.
Macro series are US **national** (state-level upgrade = Freddie rung 3). Timing convention: every macro
*regressor* is lagged; the two deliberate current-quarter **state variables** are flagged β‘ below.
| Variable (model name) | Source β transformation | Lag / window | Economic rationale | Expected sign | Fitted (verified) | Consumed by |
|---|---|---|---|---|---|---|
| `fico_s` | `FICO_orig_time` / 100 | static (origination) | Ability/willingness to pay | PD β | β negative | default hazard; LGD cure |
| `ltv10` β‘ | `updated_ltv`/10 = LTV_orig Γ (bal_t/bal_orig) Γ (hpi_orig/hpi_t), winsor 300 | current-quarter state (collateral indexation, documented exception) | Equity cushion / strategic-default trigger; = vendor `LTV_time` to 5e-9 | PD β, severity β, cure β | β all three (sev +0.107/10pp, cure β0.764) | default hazard; LGD both stages; staging legs |
| `loan_age` | `time β orig_time` β natural cubic spline (hazard) / linear (LGD) | per-quarter | Seasoning baseline; underwriting β trouble β survivor selection | hump | β peak 12q fitted vs 10q empirical | both hazards; LGD |
| `prepay_incentive` β‘ | `interest_rate_time β rate_time` (note β market rate) | current-quarter state (option value is real-time) | Refinancing incentive (competing risk) | prepay β | β (Spearman +0.95) | prepay hazard |
| `investor_orig_time`, RE-type flags | raw origination flags | static | Strategic default propensity (no home to lose) | PD β (investor) | β | default hazard |
| `uer_lag1` | `uer_time` (national level, pp) via within-loan shift | lag 1q | Cash-flow channel (job loss β arrears) | net shock β | β net +1pp β HR 1.28 (level β0.367 + momentum +0.614 under 0.94 collinearity β quote the NET effect) | default hazard; LGD cure (+0.277 disclosed anomaly) |
| `uer_chg4_lag1` | 4-quarter change of `uer_time`, lagged | lag 1q over 4q window | Labour-market momentum | β | β +0.614 | default hazard |
| `hpi_growth_lag1` | Ξlog `hpi_time` (national index) | lag 1q | Collateral macro channel | PD β | β | default hazard; satellite (+13.64) |
| `gdp_lag1` / `gdp_growth_lag2` | `gdp_time` growth | lag 1q / 2q | Activity channel | PD β / Z β | β (+0.730 satellite) | default hazard; satellite |
| `dt_ltv_uer` | center(`ltv10`) Γ center(`uer_lag1`) | mixed | Double trigger (can't pay AND negative equity) | β | β0.006 (p=.04): in-sample substitution; main effects + momentum carry the joint stress β honest finding, see fit_stats.md | default hazard |
| `lgd_time` (target) | vendor realised workout LGD, **resolved workouts only** (`res_time` non-null): 9,496 of 11,420 train defaults | resolution window | Two-stage: cure (β€0.05) Γ severity; LGD>1 tail (14.2% of non-cures, max 3.17) = constant excess loading +0.0255, never clipped | β | OOT calibration +0.047 (conservative) | LGD |
| `Z_t` (recovered) | Vasicek inversion of observed vs composition-adjusted expected quarterly default rates (frozen hazard, macro at panel means) | 60 quarters | Systematic credit-cycle factor; Ο via Belkin Var(Z)=1 β **Ο=0.0227** (vs 0.12 notes / 0.15 Basel β regulatory Ο is conservatism, not time-series fit); mean(Z)=β1.145 level gap documented | trough in GFC | β trough 2008Q1 (Z=β2.74) | satellite target; PIT conditioning |
| Scenario paths | DFAST 2026 CSVs: UER (pp), HPI level β Ξlog, GDP SAAR β quarterly, mortgage rate | 2026Q1β2029Q1 (13q) rebased as **deltas onto the 2015Q1 jump-off**, reversion to panel long-run means by q21, hold to 40q | Coherent supervisory multivariate shapes; upside = damped mirror (Γβ0.35), weights 50/25/25 (SPF anchoring = named enhancement) | severe ECL > base > upside | β ($47.6m / $30.5m / $27.7m) | scenario ECL |
Model equations live in the module docstrings (cloglog hazard; two-stage LGD; ECL sum; Vasicek PIT
transform with the Gauss-Hermite anchor proof; satellite Z = β1.694 + 13.642Β·hpi_growth_lag1 +
0.730Β·gdp_growth_lag2, n=57, with ADF/KPSS/DW/AIC and the GFC-dummy sensitivity in
outputs/satellite/satellite_report.md). Coefficient tables with CIs: outputs/hazard/hazard_ratios.md,
outputs/lgd/lgd_report.md.
|