Tier 1 · Capital Solvency Assessment

ORSA Stress Testing & Solvency Projection

M-051 · lifecycle: monitoring · RAT-051-v1.0.1

Intended Use

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).


Components

Inputs, processing, outputs

data sources
DS-001 · DS-008 · DS-021
assumptions
A-001, A-002, A-050, A-080, A-081, A-100
engines
insmodel.L3.stress_testing
insmodel.L3.capital_engine
insmodel.L4.stochastic_engine
insmodel.L6.projection_orchestrator
contracts
orsa_summary_v1
upstream
M-120 · M-050
dimensions
D3 · D5

Methodology & Mechanics

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:

  1. interest_rate_up_300 — parallel +300bp curve shift (interest_rate: +0.03, credit_spread: +0.005).
  2. interest_rate_down_100 — parallel −100bp shift (interest_rate: −0.01, credit_spread: −0.002).
  3. equity_crash_40 — 40% equity decline with a volatility spike (equity_return: −0.40, volatility: +0.15).
  4. credit_crisis — spread widening with elevated defaults (credit_spread: +0.03, default_rate: +0.05, recovery_rate: −0.10).
  5. pandemic — mortality spike, lapse surge, expense increase (mortality_factor: +0.50, lapse_factor: +0.30, expense_factor: +0.15).
  6. stagflation — high inflation with stagnant growth (mixed rate/equity/expense/lapse shocks).
  7. 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) (default asset_duration = 5.0); investment-income impact scaled by ir_shock / 0.04 against a ~4% base-yield reference.
  • Equity return: applied to the equity sleeve only, total_assets × equity_allocation × eq_shock (default equity_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, else total_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

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

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

Limitations and Known Gaps

  1. Single-period, not a multi-year solvency projection. Despite the time_horizon_months parameter and the ORSA framing of "project solvency," calculate applies 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 separate ProjectionOrchestrator (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.

  2. 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.

  3. No asset-class look-through. asset_duration and equity_allocation are 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.

  4. 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 via custom_scenarios.

  5. 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 as base_rbc × (1 − e + e × stressed_assets/base_assets) with e = 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. Setting e = 0.0 restores the legacy frozen-denominator behaviour exactly.

  6. 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 through run_prudential_t0 or any live filing-data pipeline; no 10-K-validated output is claimed.

  7. 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 StressTestingEngine does 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 ProjectionOrchestrator into M-051) (INV-017 residual); a frozen gold case pinning the interest_rate_up_300 negative-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 runs CapitalEngine on the stressed balance sheet rather than the current C-1-asset-base proxy (Limitation 5, INV-017 recommendation).


Validation Evidence

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

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

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 log M-051-changes.md (closes COND-002). Refreshed the Output Snapshot worst-case figures from scripts/model_snapshots.py M-051 (interest_rate_up_300 RBC ratio −0.2532×, capital shortfall $13.65M, 6/7 breaching the 3.0× target) — the formerly "pending refresh" cells. Reconciled the registry documentation_pack flags (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 tbdengine-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-06Methodology 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 as base_rbc × (1 − e + e × stressed_assets/base_assets), e = rbc_stress_elasticity (ENGINE_CONTRACT default 1.0, C-1 asset-risk proxy). Removed the deleted cost_of_capital parameter (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). Updated equity_crash_40 gold value 1.575× → 1.6958× per the existing frozen test_gold_tier3.py assertion; pandemic 1.80× unchanged (shocks do not touch the asset base). Rate-up worst-case RBC ratio / shortfall marked pending refresh (scripts/model_snapshots.py not 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.

2L Inventory Review

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.

HIGH INV-029 · P5 · validation-gap

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.

MEDIUM INV-017 · P3 · proxy

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.


Validation Coverage

Per-tier expectations

Per MRM Framework §10.2 + §10.3, this model's regulatory_frameworks tag list activates the following overlays:

asop_56 naic_orsa sr_26_2 internal
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

Ratification

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.