ifrs9-ecl-copilot / outputs /variable_dictionary.md
Preetomsorkar's picture
Ship App v2 + Tier-2 sandbox (5-tab UI, analyze_data, contract-first API)
8f1c2fc verified
|
Raw
History Blame Contribute Delete
4.52 kB

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.