ORSA Stress Testing & Solvency Projection Multi-year capital and solvency projection under stress scenarios for the NAIC ORSA Summary Report, and the carrier's internal economic-capital (management) view — the level of capital required to support the business mix — as distinct from the M-050 regulatory NAIC RBC formula.
Annual ORSA exercise — own assessment of risk and solvency. Multi-year projections under defined stresses; output is the ORSA Summary Report submitted to lead state. Also the home of the economic-capital allocation view: an internal, management-defined measure of capital needed to support the mix of business (e.g. as a goodwill reporting-unit input), which is conceptually distinct from the regulator-prescribed NAIC RBC formula computed by M-050. ORSA is the natural ASOP-56 home for this self-assessed economic capital; no separate economic-capital model is warranted (gap-analysis §6).
Inputs, processing, outputs
Methodology
M-051 implements deterministic Own Risk and Solvency Assessment (ORSA) stress testing: a fixed library of prescribed adverse scenarios is applied to a carrier's current balance sheet, and solvency is re-projected under each. The model answers the core ORSA question — would the firm remain solvent under a set of severe-but-plausible shocks? — without requiring a stochastic engine. It is implemented by StressTestingEngine (firmmodel/engines/stress_testing_engine.py, registered as insmodel.L3.stress_testing, internal model ID M-902, v1.0.0).
The engine consumes a single-row balance-sheet snapshot with five required fields — total_assets, total_liabilities, net_income, available_capital, total_rbc — and five optional cash-flow fields (premium, benefit, expense, investment_income, reserve). For each scenario it produces a stressed surplus, an RBC ratio, a P&L impact, and a capital shortfall against a target ratio, then ranks all scenarios by severity.
Prescribed scenario library (PRESCRIBED_SCENARIOS, 7 scenarios). Each scenario is a named bundle of factor shocks:
interest_rate_up_300— parallel +300bp curve shift (interest_rate: +0.03,credit_spread: +0.005).interest_rate_down_100— parallel −100bp shift (interest_rate: −0.01,credit_spread: −0.002).equity_crash_40— 40% equity decline with a volatility spike (equity_return: −0.40,volatility: +0.15).credit_crisis— spread widening with elevated defaults (credit_spread: +0.03,default_rate: +0.05,recovery_rate: −0.10).pandemic— mortality spike, lapse surge, expense increase (mortality_factor: +0.50,lapse_factor: +0.30,expense_factor: +0.15).stagflation— high inflation with stagnant growth (mixed rate/equity/expense/lapse shocks).catastrophe— natural-catastrophe claims with expense load (mortality_factor: +0.20,expense_factor: +0.30).
Callers may additionally pass custom_scenarios (merged into the prescribed set) or a scenarios filter list to run a named subset.
Shock transmission (_apply_scenario). Each shock maps to closed-form balance-sheet impacts:
- Interest rate: asset impact via duration approximation
total_assets × (−asset_duration × ir_shock)(defaultasset_duration = 5.0); investment-income impact scaled byir_shock / 0.04against a ~4% base-yield reference. - Equity return: applied to the equity sleeve only,
total_assets × equity_allocation × eq_shock(defaultequity_allocation = 0.15), with a matching investment-income effect. - Credit spread: spread duration taken as half of rate duration on the non-equity (fixed-income) sleeve.
- Default / recovery: principal loss on the fixed-income sleeve and a small recovery offset.
- Mortality factor: scales a benefit base (explicit
benefit, elsetotal_liabilities × 0.05) into both a liability increase and an income reduction. - Lapse factor: reduces premium income.
- Expense factor: increases expense, reducing net income.
- Volatility: a drag term on the equity sleeve.
Stressed values are base + Σ(impacts). Solvency metrics then follow: stressed_surplus = stressed_assets − stressed_liabilities; pnl_impact = stressed_net_income − base_net_income; and capital_impact = stressed_surplus − base_surplus.
The required-capital (RBC) denominator is re-derived under stress rather than frozen at the base value. _stressed_required_capital() (stress_testing_engine.py lines 176–226) computes stressed_rbc = base_rbc × (1 − e + e × stressed_assets / base_assets), where e = rbc_stress_elasticity (ENGINE_CONTRACT default 1.0). The rationale: the C-1 asset-risk charge — the dominant RBC component for asset-intensive life insurers — scales with the stressed asset base, so a shock that erodes assets also lowers required capital. At e = 1.0 the denominator re-derives fully via the stressed-asset ratio; at e = 0.0 it reverts to the legacy frozen-denominator mode (stressed_rbc == base_rbc). When base assets or base RBC are unavailable the function falls back to the base RBC.
The ratio and shortfall then follow: stressed_rbc_ratio = stressed_surplus / stressed_rbc (zero when stressed_rbc ≤ 0); and capital_shortfall = max(0, target_ratio × stressed_rbc − stressed_surplus). Scenarios are ranked by capital_impact ascending — rank 1 is the most capital-destructive (worst-case) scenario.
Reverse stress testing (reverse_stress_test). Given a target RBC ratio (default 1.0), the engine scales each prescribed scenario's shocks by an increasing multiplier [0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0] and reports the first multiplier at which each scenario breaches the target — i.e., how severe must this shock get before we fail? This is the ORSA "reverse" complement to forward stress testing.
A summary_report method renders the result frame as a human-readable severity-ranked table with breach flags.
Key Assumptions and Their Justification
The engine has no formally-bound A-NNN assumption entries in the modelling registry — all parameters are either ENGINE_CONTRACT defaults or hardcoded transmission coefficients. The load-bearing choices:
| Parameter / coefficient | Value | Source | Justification |
|---|---|---|---|
capital_ratio_target |
3.0× (default) | ENGINE_CONTRACT | Target RBC ratio for shortfall computation; a conservative going-concern threshold well above the 2.0× NAIC Company Action Level. Configurable per run. |
rbc_stress_elasticity |
1.0 (default) | ENGINE_CONTRACT | Elasticity e controlling how the required-capital (RBC) denominator re-derives under stress: stressed_rbc = base_rbc × (1 − e + e × stressed_assets/base_assets). e = 1.0 re-derives required capital via the stressed asset base — a C-1 asset-risk-charge proxy, the dominant RBC component for asset-intensive life insurers; e = 0.0 freezes the denominator (legacy behaviour). See Methodology / Limitation 6. |
time_horizon_months |
12 (default) | ENGINE_CONTRACT | Stated stress horizon; the engine is single-period and does not multi-year project, so this is descriptive rather than computational (Limitation 1). |
asset_duration |
5.0 yr (default) | kwarg | Drives the linear duration approximation for rate/spread shocks. A single portfolio-level duration; no key-rate decomposition. |
equity_allocation |
0.15 (default) | kwarg | Fraction of assets treated as equity-sensitive. Single scalar; no asset-class look-through. |
| base-yield reference | 0.04 | hardcoded | Denominator in the investment-income rate-shock term; a fixed ~4% portfolio book yield reference. |
| spread-duration ratio | 0.5 × rate duration | hardcoded | Approximation that spread duration is half key-rate duration. |
| benefit base fallback | total_liabilities × 0.05 |
hardcoded | Used for mortality shocks when explicit benefit is absent. |
The prescribed scenario shock magnitudes themselves are the primary assumptions. The +300bp / −100bp rate moves, 40% equity crash, and pandemic mortality/lapse/expense loads are stylized severe-but-plausible calibrations consistent with the ORSA and EIOPA/CCAR stress-test traditions the engine's governance metadata cites. They are not calibrated to a specific carrier's historical experience or to a regulator-prescribed scenario file — they are platform-default severities. A regulator running a prescribed ORSA scenario set would supply those via custom_scenarios.
The shock-transmission model is first-order and linear: duration approximation for rates (no convexity), a flat equity beta, and additive (non-interacting) impacts across risk factors. This is a deliberate simplification appropriate for a deterministic screening tool, not a full ALM projection.
Output Snapshot
Deterministic run of StressTestingEngine v1.0.0 over the full 7-scenario prescribed ORSA suite — reproducible, requires no live firm data (python scripts/model_snapshots.py M-051 in InsModel; the canonical balance sheet and the equity_crash_40 (RBC 1.6958×) / pandemic (RBC 1.80×) solvency values are asserted by tests/mrm/test_gold_tier3.py::TestGoldStressTesting, with broader coverage in tests/test_stress_testing.py).
Input (canonical balance sheet): assets $100M · liabilities $85M · net income $5M · available capital $15M · total RBC $5M · premium $20M · benefit $12M · expense $3M · investment income $4.5M · target RBC ratio 3.0×. Base surplus = $15M (RBC ratio 3.0×).
| output | value | meaning |
|---|---|---|
| scenarios_run | 7 | full prescribed ORSA suite applied |
| scenarios_breaching_target_3.0x | 6 | scenarios whose stressed RBC ratio falls below the 3.0× target |
| worst_scenario | interest_rate_up_300 | most capital-destructive scenario (severity rank 1) |
| worst_capital_impact | −16,062,500.00 | surplus destroyed under +300bp (vs. $15M base surplus) — capital_impact is independent of the RBC denominator |
| worst_stressed_surplus | −1,062,500.00 | surplus goes negative — technical insolvency under this shock |
| worst_stressed_rbc_ratio | −0.2532 | re-derived-denominator value (prior −0.21 used the frozen denominator); ratio is negative because the +300bp shock drives stressed surplus negative while the re-derived denominator stays positive |
| worst_capital_shortfall | 13,653,125.00 | max(0, target_ratio × stressed_rbc − stressed_surplus) against the re-derived denominator (target 3.0×) |
| worst_pnl_impact | +3,375,000.00 | P&L rises under +300bp — see prose below |
| equity_crash_40_rbc_ratio | 1.6958 | gold-frozen value per test_gold_tier3.py (was 1.575 under the frozen denominator) |
| pandemic_rbc_ratio | 1.80 | gold-frozen 1.80 — unchanged (pandemic shocks do not touch the asset base, so the re-derived denominator equals the base) |
The worst-case is interest_rate_up_300, and it drives surplus negative (−$1.06M). The mechanism is the duration approximation: a +300bp shift on $100M of assets at duration 5.0 produces a ~$15M mark-to-market asset loss (plus a credit-spread term), wiping out the entire $15M base surplus. Notably, worst_pnl_impact is positive (+$3.375M) even though this is the most capital-destructive scenario: rising rates increase projected investment income (the ir_shock / 0.04 term), so net income improves while the asset value collapses. This divergence between P&L impact (income statement) and capital impact (balance sheet) is a genuine and important feature of the engine — capital adequacy, not earnings, is what fails under a rate spike — and it is why severity is ranked on capital_impact, not pnl_impact. The worst-case RBC ratio is −0.2532× and the capital shortfall is $13.65M under the current re-derived denominator (refreshed 2026-06-06 via scripts/model_snapshots.py M-051). The ratio is negative because the +300bp shock drives stressed surplus negative (−$1.06M) while the re-derived denominator stays positive — the shock shrinks the asset base, lowering required capital, but not enough to offset the surplus collapse. The prior −0.21× figure was computed against the frozen denominator. The capital_impact / stressed_surplus figures above are denominator-independent and remain valid.
Six of seven scenarios breach the 3.0× going-concern target (confirmed against the re-derived denominator, 2026-06-06). The equity_crash_40 ratio is now 1.6958× — the equity crash shrinks the asset base, lowering required capital, so the ratio is less punitive than the legacy frozen-denominator 1.575×. The pandemic ratio is 1.80×, unchanged, because pandemic shocks (mortality / lapse / expense) do not touch the asset base, leaving the re-derived denominator equal to the base. Both reproduce the current frozen gold values in test_gold_tier3.py.
Snapshot equity_crash_40 / pandemic values verified against the current frozen gold (test_gold_tier3.py); rate-up worst-case ratio (−0.2532×) / shortfall ($13.65M) refreshed 2026-06-06 from scripts/model_snapshots.py M-051 under the re-derived denominator. Card re-stamped 2026-06-06 · deterministic, no live data.
Limitations and Known Gaps
-
Single-period, not a multi-year solvency projection. Despite the
time_horizon_monthsparameter and the ORSA framing of "project solvency,"calculateapplies each shock to the current balance sheet once and reports the instantaneous stressed state. There is no multi-period roll-forward of capital under sustained stress; the multi-period capability lives in a separateProjectionOrchestrator(M-701) that this engine does not invoke. A true ORSA forward-looking solvency projection (3–5 year capital path under stress) is not implemented here. -
First-order linear shock transmission only. Interest-rate impact is a pure duration approximation with no convexity term; equity exposure is a flat beta on a scalar
equity_allocation; and risk-factor impacts are additive with no cross-factor interaction (e.g., a rate spike and a credit crisis are independent sums, not a correlated joint stress). Adequate for screening; not a substitute for a full ALM / Monte-Carlo capital model. -
No asset-class look-through.
asset_durationandequity_allocationare single portfolio-level scalars supplied as kwargs (defaults 5.0 and 0.15). The engine cannot differentiate duration or credit quality across asset classes, so a barbell vs. bullet portfolio of identical aggregate duration produces identical results. -
Prescribed scenario severities are platform defaults, not regulator- or carrier-calibrated. The +300bp / 40%-crash / pandemic magnitudes are stylized and hardcoded in
PRESCRIBED_SCENARIOS. They are not bound to any carrier's experience, not validated against any 10-K, and not tied to a specific year's NAIC/EIOPA prescribed scenario file. Regulator-prescribed scenarios must be injected viacustom_scenarios. -
RBC re-derivation is an asset-base C-1 proxy only — not a full required-capital re-run. The denominator is no longer frozen by default:
_stressed_required_capital()re-derives required RBC asbase_rbc × (1 − e + e × stressed_assets/base_assets)withe = rbc_stress_elasticity(default 1.0). This re-derivation scales the asset-risk (C-1) charge with the stressed asset base only; it does not re-derive the C-2 (insurance), C-3 (interest-rate), or C-4 (business-risk) charges under the shock. So a shock that raises insurance or interest-rate risk without shrinking assets (e.g.pandemic) leaves the denominator unchanged, and the C-1 proxy may under- or over-state the true required-capital move. Settinge = 0.0restores the legacy frozen-denominator behaviour exactly. -
No firm-data ingestion path exercised here. Consistent with BV-032 (firm-data path divergent), this card and snapshot use a synthetic canonical balance sheet via
MagicMock/MockDataProvider, exactly as the gold test does. The engine is not driven throughrun_prudential_t0or any live filing-data pipeline; no 10-K-validated output is claimed. -
Economic-capital view is documented in scope but not yet quantified. The economic-capital-vs-regulatory-RBC distinction (see Intended Use / Description) is registered as in-scope for ORSA, but the current
StressTestingEnginedoes not compute a firm-defined economic-capital figure (e.g. a 1-in-200 VaR / risk-appetite-calibrated allocation). The card documents the distinction so consumers do not conflate the internal allocation view with M-050 statutory RBC; a quantified economic-capital output is a potential future extension, not a current capability.
Tracked for ratification (not applied in this documentation pass). Output-changing / modeling-code items left for ratification, noted here for transparency: multi-year ORSA solvency projection (3–5 year capital roll-forward, wiring
ProjectionOrchestratorinto M-051) (INV-017 residual); a frozen gold case pinning theinterest_rate_up_300negative-surplus / negative-RBC worst-case path (Validation Packet gap (d), INV-017); a quantified economic-capital (1-in-200 VaR / risk-appetite-calibrated) allocation output (Limitation 7); a back-test record and sensitivity-test suite over the prescribed shock magnitudes (INV-029); and a full required-capital re-derivation that runsCapitalEngineon the stressed balance sheet rather than the current C-1-asset-base proxy (Limitation 5, INV-017 recommendation).
Validation Packet
Severity-ranking invariant (mechanically enforced in calculate): scenarios are ranked by capital_impact ascending, so severity_rank == 1 always corresponds to capital_impact == result["capital_impact"].min(). Asserted by tests/test_stress_testing.py::TestSeverityRanking.
Shock-direction invariants (tests/test_stress_testing.py): equity_crash_40 reduces stressed_assets and yields negative P&L; interest_rate_up_300 produces negative capital impact (duration loss). These are sign/direction guards on the transmission model.
| Check | Where | What it asserts |
|---|---|---|
| Gold frozen solvency | tests/mrm/test_gold_tier3.py::TestGoldStressTesting |
On the $100M canonical sheet, equity_crash_40 → RBC 1.6958× (was 1.575× under the frozen denominator), surplus $7.875M, capital impact −$7.125M, P&L impact −$270,000; pandemic → RBC 1.80× (unchanged — its shocks do not touch the asset base), P&L −$12.45M, capital impact −$6.0M (±1% rel tol). Passes. |
| Full-suite + custom + filter | tests/test_stress_testing.py::TestPrescribedScenarios, TestCustomScenarios |
7 prescribed scenarios run by default; custom scenarios merge to 8; named-subset filter returns the requested count. 9/9 pass. |
| Reverse stress | tests/test_stress_testing.py::TestReverseStress |
reverse_stress_test finds ≥1 breach multiplier on the canonical sheet. Passes. |
| Governance metadata | tests/test_stress_testing.py::TestGovernance |
model_id == M-902, category == Risk, ≥3 references; contract exposes scenario_name + stressed_rbc_ratio. Passes. |
| Snapshot reproducibility | scripts/model_snapshots.py M-051 (this card) |
Full 7-scenario suite; worst = interest_rate_up_300 (surplus −$1.06M, RBC ratio −0.2532×, shortfall $13.65M); 6/7 breach the 3.0× target; equity_crash_40=1.6958×, pandemic=1.80× reproduce current gold. Refreshed against the re-derived denominator 2026-06-06. Deterministic, no live data. |
Validation-evidence pack: present at insightalm/modelling/validation_evidence/M-051/v1.0.0/README.md (authored 2026-06-06, closes RAT-051 COND-001). It maps each MRM §10.5 item 5 sub-requirement to the InsModel test files (test_stress_testing.py, test_gold_tier3.py::TestGoldStressTesting) and the deterministic snapshot, and records the honest validation gaps (no disclosed-firm back-test per BV-032; sensitivity / multi-year / economic-capital items remain engine-builds). 2L re-review (RAT-051-v1.0.x supersession) is the remaining step — 1L prepares, 2L attests.
Known validation gaps: (a) no frozen gold values for the rate-up worst-case or for credit_crisis / stagflation / catastrophe — only equity_crash_40 (now 1.6958×) and pandemic (1.80×) are gold-frozen; (b) no multi-period solvency projection to validate (Limitation 1); (c) no 10-K / firm-data validation (BV-032, Limitation 6); (d) no test pins the negative-surplus / negative-RBC behavior of interest_rate_up_300, which the snapshot surfaces (worst RBC ratio −0.2532×, surplus −$1.06M) — recommend adding a frozen assertion so the worst-case path is regression-guarded (tracked for ratification, INV-017).
References
Regulatory / framework:
- NAIC Own Risk and Solvency Assessment (ORSA) Guidance Manual — stress-testing and solvency-self-assessment requirements for insurers (cited in the engine's governance metadata).
- NAIC Risk-Based Capital Model Act — RBC ratio and Company Action Level (2.0×) thresholds underlying the capital_ratio_target and stressed_rbc_ratio mechanics; the upstream RBC engine is documented in M-050.
- EIOPA Insurance Stress Test Framework — prescribed-scenario methodology (engine governance metadata reference).
- Federal Reserve CCAR / DFAST — comprehensive-capital-analysis stress framework adapted for insurance (engine governance metadata reference).
- Society of Actuaries, "Stress Testing and Scenario Analysis for Insurance Companies"; IAA Risk Book Ch. 12, "Stress Testing in Insurance" (engine governance metadata references).
Actuarial standards: - ASOP No. 56 — Modeling (cross-cutting modeling standard: intended use, sensitivity, reliance, documentation). - Federal Reserve SR 26-2 (April 2026, supersedes SR 11-7) — Model risk management; applicable to InsightALM platform consumers via Decision 018 (MRM Framework).
Code:
- Engine: ecosystem/InsModel/Models/firmmodel/engines/stress_testing_engine.py (StressTestingEngine, insmodel.L3.stress_testing, internal ID M-902, v1.0.0).
- Gold test: ecosystem/InsModel/Models/tests/mrm/test_gold_tier3.py::TestGoldStressTesting.
- Unit tests: ecosystem/InsModel/Models/tests/test_stress_testing.py.
- Snapshot: ecosystem/InsModel/Models/scripts/model_snapshots.py (M-051).
Internal:
- Decision 018 (MRM Framework) — Management/decisions/018-mrm-framework-multi-regime.md.
- Decision 040 / 042 — models under modelrisk.app; tenk2win as the inverse/diagnostic engine.
- BV-032 — firm-data path divergence (why no live-data / 10-K validation is claimed here).
Change Log
Card change history. The full per-version governance change log is at M-051-changes.md (MRM §10.5 item 7). Code-side change history lives in git log of the component files.
-
2026-06-06 (remediation, RAT-051-v1.0.0) — Assembled the validation-evidence pack at
validation_evidence/M-051/v1.0.0/README.md(closes COND-001) and the per-version change logM-051-changes.md(closes COND-002). Refreshed the Output Snapshot worst-case figures fromscripts/model_snapshots.py M-051(interest_rate_up_300RBC ratio −0.2532×, capital shortfall $13.65M, 6/7 breaching the 3.0× target) — the formerly "pending refresh" cells. Reconciled the registrydocumentation_packflags (validation_evidence: present,change_log: present). No values invented; multi-year projection / full CapitalEngine re-derivation / economic-capital quantification / disclosed-firm back-test / transmission-coefficient sensitivity suite remain honest engine-build limitations. Pending 2L re-review. -
2026-05-08 — stub created from registry data per Decision 023 Phase 5 / B-07.
- 2026-06-05 — Owner resolved
tbd→engine-owner-risk(mirrors registry INV-030 / Q-09, resolved 2026-06-04). Intended Use / Description extended to document the economic-capital (management/allocation) view vs. regulatory NAIC RBC (M-050) distinction as an ORSA scope extension — no duplicate economic-capital model created (insurance gap-analysis §6). Added Limitation 8 (economic-capital view documented but not yet quantified). Draft pending 2L re-attestation. - 2026-06-06 — Methodology re-stamp + doc-currency re-baseline. Methodology, Key Assumptions, Limitations, Output Snapshot, and Validation Packet brought current with the engine code: the RBC denominator is no longer frozen —
_stressed_required_capital()(lines 176–226) re-derives required capital asbase_rbc × (1 − e + e × stressed_assets/base_assets),e = rbc_stress_elasticity(ENGINE_CONTRACT default 1.0, C-1 asset-risk proxy). Removed the deletedcost_of_capitalparameter (INV-014 / InsModel #52) from Key Assumptions; deleted the stale "cost_of_capital inert" limitation; rewrote the former "frozen denominator" limitation as the residual asset-base-C-1-proxy limitation (does not re-derive C-2/C-3/C-4). Updatedequity_crash_40gold value 1.575× → 1.6958× per the existing frozentest_gold_tier3.pyassertion;pandemic1.80× unchanged (shocks do not touch the asset base). Rate-up worst-case RBC ratio / shortfall marked pending refresh (scripts/model_snapshots.pynot runnable in this environment — scipy unavailable). Added a Standards Coverage section (naic_orsa / asop_56 / sr_26_2) modelled on M-001, and an SR 26-2 reference. Output-changing items (multi-year projection, full CapitalEngine re-derivation, economic-capital quantification, worst-case gold pin, back-test/sensitivity suite) flagged under Limitations for ratification — not applied. Draft pending 2L re-attestation.
Open findings (2)
Independent 2nd-line review (INV-2026-06) — implemented capability vs registered scope. Each carries a recommended fix and is tracked in insightalm-mrm until closed.
Validation evidence + change logs missing across most of the inventory
Only M-001/M-020/M-050 carried full documentation packs before this pass. Most models record validation_evidence: missing and change_log: missing with peer_review: pending. Gold tests freeze behaviour but many assert only structural invariants (e.g. reserve>0), not correctness against external truth. The flagship T0-vs-10-K match is circular (BV-032).
Recommendation: For each Tier-1 model: produce a validation-evidence pack (back-test vs disclosed results once BV-032 re-calibration lands, sensitivity suite, challenger comparison), a change log, and a 2L ratification. Sequence behind BV-032 (firm-data) for anything needing 10-K reconciliation.
ORSA stressed RBC: single-period only; no multi-year capital roll-forward
Re-scoped 2026-06-06 to the multi-period leg (the frozen-denominator leg is fixed, see progress). Each shock is still applied once to the current balance sheet — no multi-year capital roll-forward (that lives in a separate ProjectionOrchestrator the engine doesn't call), and there is no frozen gold pinning the counterintuitive rate-up path (positive P&L yet most capital-destructive). Output-changing → gated on ratification + gold.
Recommendation: Re-derive required RBC under each scenario (run CapitalEngine on the stressed balance sheet) so the ratio reflects both numerator and denominator; integrate the ProjectionOrchestrator for multi-year ORSA solvency projection; add a frozen gold case for the negative-surplus path.
Per-tier expectations
Per MRM Framework §10.2 + §10.3, this model's regulatory_frameworks tag list activates the following overlays:
| component | tier-1 expectation | status |
|---|---|---|
| Registry entry | required | present |
| Model card (§10.5 doc pack) | required | present |
| Validation evidence | required | present |
| Change log | required | present |
| Independent effective challenge (2L) | required | attested |
Ratified — RAT-051-v1.0.1
Latest ratification on file: RAT-051-v1.0.1. Authored by 2L (mrm-peer-reviewer) per Decision 028 charter §5 Pattern A.