Macro and valuation
56/ 100
67% evidence coveragePartial
Cross-asset stress
Reading market observations
In progressCalculating cross-asset stress
WaitingAssembling the risk report
WaitingDisclaimer. For informational and research purposes only. Not investment, financial, legal, or tax advice, and not an offer or solicitation to buy, sell, or hold any security or to take any action.
Cross-asset stress
No broad credit, funding or liquidity stress. No transmission stage is Elevated or Severe.
Each score is versus its own history, not a loss probability. Building pressure begins at 55.
Transmission
A severe factor is not book-level stress until credit, funding and liquidity confirm it.
56/ 100
67% evidence coveragePartial
54/ 100
50% evidence coveragePartial
48/ 100
75% evidence coveragePartial
46/ 100
75% evidence coveragePartial
Risk factors
79 / 79 features within age limits
At the report date · 0 stale · 0 missing
Latest-release completeness is not verified.
7 / 12 distinct risk families
Partial evidence · shared families counted once
Availability is not statistical independence.
Stress states
Current relative-stress scores and escalation states are available.
Downturn probabilities are withheld pending historical validation.
Assessment limits: Missing valuation, breadth, earnings, private credit, positioning. Available readings cannot establish an all-clear.
Rates & refinancing pressure
2.88%
10Y real yield · as of 2026-10-01
10Y Treasury 5.24% · 2026-10-01
44.5 score points
Real yield 30% + nominal yield 20%
+62 bp
Change over 63 S&P sessions
As of 2026-10-01
16.3 score points
20% of the rates score
1.02%
10Y model estimate · THREEFYTP10
As of 2026-09-25
14.8 score points
15% of the rates score
+109 bp
10Y minus 3M · positive
As of 2026-10-02
6.0 score points
15% of the rates score
Contributions use normalized scores; they are not a decomposition of Treasury yields. A positive curve can still contribute points relative to its history. Recent changes cover 63 sessions, not a one-day shock. Falling yields alone do not establish lower recession risk.
Input-cost shock
+27.0%
Brent · 21 S&P sessions
As of 2026-09-29
+61.7% over 63 sessions · as of 2026-09-29
53.6%
Qualifying oil prints · last 30 S&P sessions
As of 2026-09-29
Positive annual oil returns at least one standard deviation above their prior mean.
21 / 100
Feeds macro and valuation
As of 2026-09-29
Annual shock magnitude × persistence. A low reading does not rule out a sharp recent rise.
Recent moves and pump prices provide context; they do not add to the layer score. These readings do not identify the cause of an oil move or estimate downturn probability.
Elevated evidence: Rates.
Contained evidence: Inflation and energy.
Missing: Valuation.
Elevated evidence: Credit.
Missing: Breadth, Earnings.
Missing: Private credit.
Elevated evidence: Credit.
Missing: Positioning.
No validated 63-session model artifact. Long equity/credit history and out-of-sample calibration are required.
SLOOS contributes 15% of the credit engine and 100% of the bank-lending family. Market and credit are reused across layers; these are not independent votes. Composite indices may also overlap economically. The source list detects direct reuse, not every shared underlying exposure.
Historical results are unavailable in this environment. No performance numbers are inferred. Research must be generated offline and reviewed before publication.
A selected issuer sample, not an industry estimate. Reporting lags, mark uncertainty and different portfolio mixes limit comparisons. Private-credit family coverage remains unavailable.
| Issuer | Non-accrual | Basis & period | Publication & source |
|---|---|---|---|
| Ares Capital Corporation (ARCC) | 2.4% | Amortized costTotal investments at amortized cost30 June 2026 | 2026-07-29 · filingChecked 2026-09-16 |
| Blue Owl Capital Corporation (OBDC) | 2.8% | CostTotal portfolio at cost30 June 2026 | 2026-08-05 · filingChecked 2026-09-17 |
| Blackstone Secured Lending Fund (BXSL) | 3.6% | Amortized costTotal investments at amortized cost30 June 2026 | 2026-08-06 · filingChecked 2026-09-17 |
No blended non-accrual rate is calculated. Comparable multi-period PIK, NAV, leverage and borrower-maturity coverage are still incomplete.
Methodology
Source observations become features, features form eight signals, and grouped evidence families form four layers. These are provisional stress scores, not probabilities.
z = (current value − prior mean) / prior sample standard deviationscore = clamp(50 + 20 × direction × z, 0, 100)
The current observation is excluded from its reference history. Direction is +1 when higher values imply more stress and −1 when lower values imply more stress. A zero standard deviation gives z = 0. A score of 50 means the historical mean, not a 50% chance of a crash. Energy uses its separate persistence formula below.
| Frequency | Target history | Minimum history | Age limit |
|---|---|---|---|
| daily | 2520 prints | 60 prior prints | 7 business days |
| weekly | 520 prints | 26 prior prints | 21 calendar days |
| monthly | 120 prints | 24 prior prints | 75 calendar days |
| quarterly | 40 prints | 12 prior prints | 150 calendar days |
VIX short normalization uses 20 prior prints. Source-specific release allowances apply to slower economic releases. Missing inputs, stale observations and insufficient history prevent scoring; they are never replaced with zero. Dollar and basis-point conversions happen before scoring.
Each signal is the weighted sum of its component scores. Every required component must be available; weights are never redistributed around missing data.
Confirmation
A score of 60 or higher requires all five credit inputs. A five-point exit margin reduces false state changes.
Price trend and volatility must reach 60. Market and credit must each reach 60 for cross-asset corroboration; their average alone is insufficient.
Funding, bank lending and labour are assessed separately from market-price stress.
Market, credit and funding must all be Severe; positioning evidence remains unavailable.
Current-vintage inputs as of the report date; historical publication timestamps are not verified. Daily horizon changes use observed S&P sessions; levels retain the latest source print. Oil volatility uses available oil prints. Model 2026.09.17.6.
| Feature | Reading | As of | Quality & history |
|---|---|---|---|
| HY OASBAMLH0A0HYM2 | 324.00 bp | 2026-10-01 | CurrentMeasured 806 / 2,520prior observations |
| HY widening · 1 sessionsBAMLH0A0HYM2 | 12.00 bp | 2026-10-01 | CurrentDerived 770 / 2,520prior observations |
| HY widening · 5 sessionsBAMLH0A0HYM2 | 44.00 bp | 2026-10-01 | CurrentDerived 766 / 2,520prior observations |
| HY widening · 20 sessionsBAMLH0A0HYM2 | 58.00 bp | 2026-10-01 | CurrentDerived 751 / 2,520prior observations |
| HY widening · 60 sessionsBAMLH0A0HYM2 | 54.00 bp | 2026-10-01 | CurrentDerived 711 / 2,520prior observations |
| HY widening · 63 sessionsBAMLH0A0HYM2 | 49.00 bp | 2026-10-01 | CurrentDerived 708 / 2,520prior observations |
| IG OASBAMLC0A0CM | 86.00 bp | 2026-10-01 | CurrentMeasured 805 / 2,520prior observations |
| IG widening · 1 sessionsBAMLC0A0CM | 2.00 bp | 2026-10-01 | CurrentDerived 768 / 2,520prior observations |
| IG widening · 5 sessionsBAMLC0A0CM | 7.00 bp | 2026-10-01 | CurrentDerived 764 / 2,520prior observations |
| IG widening · 20 sessionsBAMLC0A0CM | 5.00 bp | 2026-10-01 | CurrentDerived 749 / 2,520prior observations |
| IG widening · 60 sessionsBAMLC0A0CM | 10.00 bp | 2026-10-01 | CurrentDerived 709 / 2,520prior observations |
| IG widening · 63 sessionsBAMLC0A0CM | 11.00 bp | 2026-10-01 | CurrentDerived 706 / 2,520prior observations |
| HY minus IGBAMLH0A0HYM2 + BAMLC0A0CM | 238.00 bp | 2026-10-01 | CurrentDerived 805 / 2,520prior observations |
| HY–IG divergence · 20 sessionsBAMLH0A0HYM2 + BAMLC0A0CM | 53.00 bp | 2026-10-01 | CurrentDerived 749 / 2,520prior observations |
| HY acceleration · 20 sessionsBAMLH0A0HYM2 | 67.00 bp | 2026-10-01 | CurrentDerived 731 / 2,520prior observations |
| C&I lending standardsDRTSCILM | 0.00 % | 2026-07-01 | CurrentMeasured 40 / 40prior observations |
| C&I tightening · quarterly changeDRTSCILM | -8.10 pp | 2026-07-01 | CurrentDerived 40 / 40prior observations |
| S&P drawdown · 252 sessionsSP500 | -0.98 % | 2026-10-02 | CurrentDerived 2,281 / 2,520prior observations |
| S&P return · 20 sessionsSP500 | -0.32 % | 2026-10-02 | CurrentDerived 2,512 / 2,520prior observations |
| S&P return · 60 sessionsSP500 | 2.37 % | 2026-10-02 | CurrentDerived 2,472 / 2,520prior observations |
| S&P distance from 50DMASP500 | 0.85 % | 2026-10-02 | CurrentDerived 2,483 / 2,520prior observations |
| S&P distance from 200DMASP500 | 6.88 % | 2026-10-02 | CurrentDerived 2,333 / 2,520prior observations |
| 50DMA relative to 200DMASP500 | 5.98 % | 2026-10-02 | CurrentDerived 2,333 / 2,520prior observations |
| VIXVIXCLS | 16.39 % | 2026-10-01 | CurrentMeasured 2,520 / 2,520prior observations |
| VIX · 20-print normalizationVIXCLS | 16.39 % | 2026-10-01 | CurrentMeasured 20 / 20prior observations |
| VIX change · 5 sessionsVIXCLS | 0.72 pp | 2026-10-01 | CurrentDerived 2,520 / 2,520prior observations |
| VIX change · 20 sessionsVIXCLS | 1.19 pp | 2026-10-01 | CurrentDerived 2,511 / 2,520prior observations |
| S&P realized volatility · 20 sessionsSP500 | 10.32 % | 2026-10-02 | CurrentDerived 2,512 / 2,520prior observations |
| VIX / VIX3M · implied maturity slopeVIXCLS + CBOE_VIX3M | 0.88 ratio | 2026-10-01 | CurrentDerived 2,520 / 2,520prior observations |
| VVIX · volatility of volatilityCBOE_VVIX | 87.02 index | 2026-10-02 | CurrentMeasured 2,520 / 2,520prior observations |
| SKEW · tail pricingCBOE_SKEW | 144.88 index | 2026-10-02 | CurrentMeasured 2,520 / 2,520prior observations |
| VIX minus realized volatilityVIXCLS + SP500 | 5.70 pp | 2026-10-01 | CurrentDerived 2,511 / 2,520prior observations |
| 10Y real yieldDFII10 | 2.88 % | 2026-10-01 | CurrentMeasured 2,520 / 2,520prior observations |
| 10Y TreasuryDGS10 | 5.24 % | 2026-10-01 | CurrentMeasured 2,520 / 2,520prior observations |
| 2Y TreasuryDGS2 | 4.78 % | 2026-10-01 | CurrentMeasured 2,520 / 2,520prior observations |
| 3M TreasuryDGS3MO | 4.17 % | 2026-10-01 | CurrentMeasured 2,520 / 2,520prior observations |
| 10Y breakevenT10YIE | 2.36 % | 2026-10-02 | CurrentMeasured 2,520 / 2,520prior observations |
| 10Y term premium · THREEFYTP10THREEFYTP10 | 1.02 % | 2026-09-25 | CurrentMeasured 2,520 / 2,520prior observations |
| 10Y real yield change · 63 sessionsDFII10 | 0.62 pp | 2026-10-01 | CurrentDerived 2,434 / 2,520prior observations |
| 10Y yield change · 63 sessionsDGS10 | 0.75 pp | 2026-10-01 | CurrentDerived 2,434 / 2,520prior observations |
| 10Y–3M curveT10Y3M | 1.09 pp | 2026-10-02 | CurrentMeasured 2,520 / 2,520prior observations |
| Curve inversion pressureT10Y3M | 0.00 pp | 2026-10-02 | CurrentDerived 2,520 / 2,520prior observations |
| Effective Fed funds · monthlyFEDFUNDS | 3.75 % | 2026-09-01 | CurrentMeasured 120 / 120prior observations |
| Ex-post real policy rate · core PCEFEDFUNDS + PCEPILFE | 0.62 pp | 2026-08-01 | CurrentProxy 120 / 120prior observations |
| CPI YoYCPIAUCSL | 3.35 % | 2026-08-01 | CurrentDerived 120 / 120prior observations |
| CPI · 3m annualizedCPIAUCSL | 0.18 % | 2026-08-01 | CurrentDerived 120 / 120prior observations |
| Core CPI YoYCPILFESL | 2.45 % | 2026-08-01 | CurrentDerived 120 / 120prior observations |
| Core CPI · 3m annualizedCPILFESL | 1.97 % | 2026-08-01 | CurrentDerived 120 / 120prior observations |
| PPI commodities YoYPPIACO | 9.85 % | 2026-08-01 | CurrentDerived 120 / 120prior observations |
| Brent return · 21 sessionsDCOILBRENTEU | 26.97 % | 2026-09-29 | CurrentDerived 2,435 / 2,520prior observations |
| Brent return · 63 sessionsDCOILBRENTEU | 61.74 % | 2026-09-29 | CurrentDerived 2,393 / 2,520prior observations |
| Brent return · 252 sessionsDCOILBRENTEU | 60.17 % | 2026-09-29 | CurrentDerived 2,211 / 2,520prior observations |
| US regular gasolineGASREGW | 4.46 $/gallon | 2026-09-28 | CurrentMeasured 520 / 520prior observations |
| US regular gasoline return · 4 weeksGASREGW | 9.68 % | 2026-09-28 | CurrentDerived 520 / 520prior observations |
| US regular gasoline return · 13 weeksGASREGW | 16.55 % | 2026-09-28 | CurrentDerived 520 / 520prior observations |
| US regular gasoline return · 52 weeksGASREGW | 43.20 % | 2026-09-28 | CurrentDerived 520 / 520prior observations |
| US dieselGASDESW | 6.38 $/gallon | 2026-09-28 | CurrentMeasured 520 / 520prior observations |
| US diesel return · 4 weeksGASDESW | 13.98 % | 2026-09-28 | CurrentDerived 520 / 520prior observations |
| US diesel return · 13 weeksGASDESW | 36.72 % | 2026-09-28 | CurrentDerived 520 / 520prior observations |
| US diesel return · 52 weeksGASDESW | 70.01 % | 2026-09-28 | CurrentDerived 520 / 520prior observations |
| Brent volatility · 20 available oil printsDCOILBRENTEU | 63.09 % | 2026-09-29 | CurrentDerived 2,520 / 2,520prior observations |
| Oil persistence · available prints in 30 sessions (≥80% coverage)DCOILBRENTEU | 53.57 % | 2026-09-29 | CurrentDerived 2,128 / 2,520prior observations |
| Persistent positive oil shockDCOILBRENTEU | 0.52 z × persistence | 2026-09-29 | CurrentDerived 2,128 / 2,520prior observations |
| Wednesday liquidity proxy · 1 weeksWALCL + WDTGAL + RRPONTSYD | -52.48 $bn | 2026-09-30 | CurrentProxy 520 / 520prior observations |
| Wednesday liquidity proxy · 4 weeksWALCL + WDTGAL + RRPONTSYD | -44.87 $bn | 2026-09-30 | CurrentProxy 520 / 520prior observations |
| Wednesday liquidity proxy · 13 weeksWALCL + WDTGAL + RRPONTSYD | -168.76 $bn | 2026-09-30 | CurrentProxy 520 / 520prior observations |
| SOFR minus IORBSOFR + IORB | -3.00 bp | 2026-10-01 | CurrentDerived 1,291 / 2,520prior observations |
| Reserve balancesWRESBAL | 2948.09 $bn | 2026-09-30 | CurrentMeasured 520 / 520prior observations |
| NFCINFCI | -0.55 index | 2026-09-25 | CurrentMeasured 520 / 520prior observations |
| NFCICREDITNFCICREDIT | -0.06 index | 2026-09-25 | CurrentMeasured 520 / 520prior observations |
| NFCILEVERAGENFCILEVERAGE | 0.08 index | 2026-09-25 | CurrentMeasured 520 / 520prior observations |
| Claims 4w average above 52w lowIC4WSA | 0.50 % | 2026-09-26 | CurrentDerived 520 / 520prior observations |
| Continuing claims · 13w slopeCCSA | -8417.58 claims/week | 2026-09-19 | CurrentDerived 520 / 520prior observations |
| Continuing claims increasing streakCCSA | 0.00 weeks | 2026-09-19 | CurrentDerived 520 / 520prior observations |
| Sahm ruleSAHMREALTIME | 0.00 pp | 2026-09-01 | CurrentMeasured 120 / 120prior observations |
| Unemployment change · 3mUNRATE | 0.00 pp | 2026-09-01 | CurrentDerived 120 / 120prior observations |
| Payroll growth · 3mPAYEMS | 0.10 % | 2026-09-01 | CurrentDerived 120 / 120prior observations |
| Manufacturing hours change · 3mAWHMAN | 0.30 hours | 2026-09-01 | CurrentDerived 120 / 120prior observations |
| Temporary employment growth · 3mTEMPHELPS | -0.83 % | 2026-09-01 | CurrentDerived 120 / 120prior observations |
Price trend and volatility are averaged into one market family. Inflation and energy are averaged into one inflation/energy family. Both constituent signals are required. Bank lending uses the lending-standards feature. Macro and valuation requires rates and inflation/energy; Spreads and prices requires market and credit; Funding transmission requires funding, labour and lending. Available families are equally weighted after those gates pass. Liquidity and deleveraging requires market, credit and funding and takes their minimum.
Coverage is available families divided by configured families. Missing valuation, breadth, earnings, private credit and positioning remain explicit. Layer scores are partial evidence until these gaps close.
Data currency counts features within configured source-age limits at the snapshot date. It does not establish that every latest release has been collected, that every feature has enough normalization history, or that the report is current today. Risk coverage counts distinct configured families once across layers, with missing families shown explicitly; shared underlying data can still make families dependent. Individual layer percentages retain their own family denominators.
Validation is separate: current observations and complete configured coverage do not validate forecasts. Historical publication timing and out-of-sample probability calibration remain unverified. Missing core inputs make a layer unscored, rather than a low-risk observation. An inactive but incomplete model cannot establish an all-clear.
The rates panel attributes the existing score to yield levels (30% real + 20% nominal), the 63-session real-yield change (20%), term premium (15%) and curve inversion pressure (15%). Each contribution equals its normalized component score × its fixed weight; the five contributions must reconcile with the stored rates score before attribution is shown. Incomplete inputs are not reweighted.
Yield changes and the 10Y–3M spread are displayed in basis points: 1 percentage point = 100 bp. The curve score normalizes max(0, −spread), so zero current inversion can still produce a nonzero score relative to prior history. Term premium is a model estimate, not an observed yield component measured without uncertainty. Nominal-yield change is context only. Each source keeps its own date; the panel does not subtract unmatched prints to infer inflation expectations or identify the cause of a rates move.
The energy context shows Brent returns over 21 and 63 S&P sessions without multiplying them by persistence. “Elevated rise” requires a positive 21-session return and its normalized score to reach 60; it is a relative-move label, not a forecast threshold. A rising move without sufficient normalization history is not labeled elevated.
Persistence is the share of available oil prints in the latest 30 S&P sessions with a positive 252-session return and a trailing z-score of at least 1. At least 24 valid prints are required. It is not the share of days when prices rose. Persistent oil stress remains min(100, 40 × max(0, annual-return z-score) × persistence fraction). Thus a large recent move can coexist with low persistent stress. Pump-price returns are supporting diagnostics; none of these additional displays changes the energy weight or layer score. Each reading carries its own observation date.
Contained: below 55. Building: 55 to below 60. Elevated: 60 to 75. Severe: above 75. An unavailable score is Insufficient data.
Building is a provisional interpretation threshold, not a fitted downturn trigger. It begins above the normalized midpoint. Contained means the escalation threshold has not been reached; it does not establish economic safety. Weighted signals and layers are not percentiles. Energy uses a different scale, so 50 is not its historical midpoint.
Layers use a 5-point exit margin: Building persists above 50, Elevated at ≥55 and Severe above 70. This applies only to an earlier snapshot within four calendar days, with the same version and missing families. Individual drivers use the ordinary thresholds. Joint market and credit repricing requires each family to reach 60.
| Feature & sources | Calculation | How it is used |
|---|---|---|
| HY OASBAMLH0A0HYM2 | Latest source value × 100 to basis pointsOutput: bp | Credit confirmation: 35%Higher values increase normalized stress. |
| HY widening · 1 sessionsBAMLH0A0HYM2 | (value now − value 1 S&P sessions earlier) × 100 to basis pointsOutput: bp | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| HY widening · 5 sessionsBAMLH0A0HYM2 | (value now − value 5 S&P sessions earlier) × 100 to basis pointsOutput: bp | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| HY widening · 20 sessionsBAMLH0A0HYM2 | (value now − value 20 S&P sessions earlier) × 100 to basis pointsOutput: bp | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| HY widening · 60 sessionsBAMLH0A0HYM2 | (value now − value 60 S&P sessions earlier) × 100 to basis pointsOutput: bp | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| HY widening · 63 sessionsBAMLH0A0HYM2 | (value now − value 63 S&P sessions earlier) × 100 to basis pointsOutput: bp | Credit confirmation: 20%Higher values increase normalized stress. |
| IG OASBAMLC0A0CM | Latest source value × 100 to basis pointsOutput: bp | Credit confirmation: 15%Higher values increase normalized stress. |
| IG widening · 1 sessionsBAMLC0A0CM | (value now − value 1 S&P sessions earlier) × 100 to basis pointsOutput: bp | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| IG widening · 5 sessionsBAMLC0A0CM | (value now − value 5 S&P sessions earlier) × 100 to basis pointsOutput: bp | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| IG widening · 20 sessionsBAMLC0A0CM | (value now − value 20 S&P sessions earlier) × 100 to basis pointsOutput: bp | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| IG widening · 60 sessionsBAMLC0A0CM | (value now − value 60 S&P sessions earlier) × 100 to basis pointsOutput: bp | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| IG widening · 63 sessionsBAMLC0A0CM | (value now − value 63 S&P sessions earlier) × 100 to basis pointsOutput: bp | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| HY minus IGBAMLH0A0HYM2 + BAMLC0A0CM | (first source − second source), matched on observation date × 100 to basis pointsOutput: bp | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| HY–IG divergence · 20 sessionsBAMLH0A0HYM2 + BAMLC0A0CM | Change over 20 sessions in (HY − IG) × 100 to basis pointsOutput: bp | Credit confirmation: 15%Higher values increase normalized stress. |
| HY acceleration · 20 sessionsBAMLH0A0HYM2 | (change over the latest 20 sessions − change over the preceding 20 sessions) × 100 to basis pointsOutput: bp | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| C&I lending standardsDRTSCILM | Latest source valueOutput: % | Credit confirmation: 15% · Bank-lending family: 100%Higher values increase normalized stress. |
| C&I tightening · quarterly changeDRTSCILM | (value now − value 1 quarters earlier)Output: pp | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| S&P drawdown · 252 sessionsSP500 | 100 × (latest close / highest close in 252 sessions − 1)Output: % | Price-trend confirmation: 25%Lower values increase normalized stress. |
| S&P return · 20 sessionsSP500 | 100 × (value now / value 20 S&P sessions earlier − 1)Output: % | Price-trend confirmation: 15%Lower values increase normalized stress. |
| S&P return · 60 sessionsSP500 | 100 × (value now / value 60 S&P sessions earlier − 1)Output: % | Price-trend confirmation: 15%Lower values increase normalized stress. |
| S&P distance from 50DMASP500 | 100 × (latest close / mean of 50 closes − 1)Output: % | Price-trend confirmation: 15%Lower values increase normalized stress. |
| S&P distance from 200DMASP500 | 100 × (latest close / mean of 200 closes − 1)Output: % | Price-trend confirmation: 20%Lower values increase normalized stress. |
| 50DMA relative to 200DMASP500 | 100 × (mean of 50 closes / mean of 200 closes − 1)Output: % | Price-trend confirmation: 10%Lower values increase normalized stress. |
| VIXVIXCLS | Latest source valueOutput: % | Volatility stress: 35%Higher values increase normalized stress. |
| VIX · 20-print normalizationVIXCLS | Latest source valueOutput: % | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| VIX change · 5 sessionsVIXCLS | (value now − value 5 S&P sessions earlier)Output: pp | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| VIX change · 20 sessionsVIXCLS | (value now − value 20 S&P sessions earlier)Output: pp | Volatility stress: 30%Higher values increase normalized stress. |
| S&P realized volatility · 20 sessionsSP500 | Sample standard deviation of 20 log returns × √252 × 100Output: % | Volatility stress: 35%Higher values increase normalized stress. |
| VIX / VIX3M · implied maturity slopeVIXCLS + CBOE_VIX3M | First source / second source, matched on observation dateOutput: ratio | Supporting diagnostic; does not affect a layer score |
| VVIX · volatility of volatilityCBOE_VVIX | Latest source valueOutput: index | Supporting diagnostic; does not affect a layer score |
| SKEW · tail pricingCBOE_SKEW | Latest source valueOutput: index | Supporting diagnostic; does not affect a layer score |
| VIX minus realized volatilityVIXCLS + SP500 | VIX − S&P realized volatility over 20 sessions, both annualized percentOutput: pp | Supporting diagnostic; does not affect a layer score |
| 10Y real yieldDFII10 | Latest source valueOutput: % | Discount-rate pressure: 30%Higher values increase normalized stress. |
| 10Y TreasuryDGS10 | Latest source valueOutput: % | Discount-rate pressure: 20%Higher values increase normalized stress. |
| 2Y TreasuryDGS2 | Latest source valueOutput: % | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| 3M TreasuryDGS3MO | Latest source valueOutput: % | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| 10Y breakevenT10YIE | Latest source valueOutput: % | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| 10Y term premium · THREEFYTP10THREEFYTP10 | Latest source valueOutput: % | Discount-rate pressure: 15%Higher values increase normalized stress. |
| 10Y real yield change · 63 sessionsDFII10 | (value now − value 63 S&P sessions earlier)Output: pp | Discount-rate pressure: 20%Higher values increase normalized stress. |
| 10Y yield change · 63 sessionsDGS10 | (value now − value 63 S&P sessions earlier)Output: pp | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| 10Y–3M curveT10Y3M | Latest source valueOutput: pp | Supporting diagnostic; does not affect a layer scoreLower values increase normalized stress. |
| Curve inversion pressureT10Y3M | max(0, −(10Y Treasury − 3M Treasury)); inversion pressure onlyOutput: pp | Discount-rate pressure: 15%Higher values increase normalized stress. |
| Effective Fed funds · monthlyFEDFUNDS | Latest source valueOutput: % | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| Ex-post real policy rate · core PCEFEDFUNDS + PCEPILFE | Monthly effective Fed funds − matched-month core PCE year-on-year inflationOutput: pp | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| CPI YoYCPIAUCSL | 100 × (index now / index 12 calendar months earlier − 1)Output: % | Inflation pressure: 25%Higher values increase normalized stress. |
| CPI · 3m annualizedCPIAUCSL | 100 × ((index now / index 3 calendar months earlier)^(12/3) − 1)Output: % | Inflation pressure: 25%Higher values increase normalized stress. |
| Core CPI YoYCPILFESL | 100 × (index now / index 12 calendar months earlier − 1)Output: % | Inflation pressure: 25%Higher values increase normalized stress. |
| Core CPI · 3m annualizedCPILFESL | 100 × ((index now / index 3 calendar months earlier)^(12/3) − 1)Output: % | Inflation pressure: 25%Higher values increase normalized stress. |
| PPI commodities YoYPPIACO | 100 × (index now / index 12 calendar months earlier − 1)Output: % | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| Brent return · 21 sessionsDCOILBRENTEU | 100 × (value now / value 21 S&P sessions earlier − 1)Output: % | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| Brent return · 63 sessionsDCOILBRENTEU | 100 × (value now / value 63 S&P sessions earlier − 1)Output: % | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| Brent return · 252 sessionsDCOILBRENTEU | 100 × (value now / value 252 S&P sessions earlier − 1)Output: % | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| US regular gasolineGASREGW | Latest source valueOutput: $/gallon | Supporting diagnostic; does not affect a layer score |
| US regular gasoline return · 4 weeksGASREGW | 100 × (value now / value 4 weeks earlier − 1)Output: % | Supporting diagnostic; does not affect a layer score |
| US regular gasoline return · 13 weeksGASREGW | 100 × (value now / value 13 weeks earlier − 1)Output: % | Supporting diagnostic; does not affect a layer score |
| US regular gasoline return · 52 weeksGASREGW | 100 × (value now / value 52 weeks earlier − 1)Output: % | Supporting diagnostic; does not affect a layer score |
| US dieselGASDESW | Latest source valueOutput: $/gallon | Supporting diagnostic; does not affect a layer score |
| US diesel return · 4 weeksGASDESW | 100 × (value now / value 4 weeks earlier − 1)Output: % | Supporting diagnostic; does not affect a layer score |
| US diesel return · 13 weeksGASDESW | 100 × (value now / value 13 weeks earlier − 1)Output: % | Supporting diagnostic; does not affect a layer score |
| US diesel return · 52 weeksGASDESW | 100 × (value now / value 52 weeks earlier − 1)Output: % | Supporting diagnostic; does not affect a layer score |
| Brent volatility · 20 available oil printsDCOILBRENTEU | Sample standard deviation of 20 log returns × √252 × 100; available oil prints, not a complete session calendarOutput: % | Supporting diagnostic; does not affect a layer score |
| Oil persistence · available prints in 30 sessions (≥80% coverage)DCOILBRENTEU | Share of available oil prints in 30 S&P sessions with positive 252-session return and trailing return z-score ≥ 1; at least 24 prints requiredOutput: % | Supporting diagnostic; does not affect a layer score |
| Persistent positive oil shockDCOILBRENTEU | max(0, z-score of positive 252-session Brent return) × oil persistence fraction; score = min(100, shock × 40)Output: z × persistence | Energy shock: 100%Higher values increase normalized stress. |
| Wednesday liquidity proxy · 1 weeksWALCL + WDTGAL + RRPONTSYD | Change over exactly 1 calendar weeks in (WALCL / 1,000 − WDTGAL / 1,000 − RRPONTSYD), all on the same Wednesday, in USD billionsOutput: $bn | Supporting diagnostic; does not affect a layer scoreLower values increase normalized stress. |
| Wednesday liquidity proxy · 4 weeksWALCL + WDTGAL + RRPONTSYD | Change over exactly 4 calendar weeks in (WALCL / 1,000 − WDTGAL / 1,000 − RRPONTSYD), all on the same Wednesday, in USD billionsOutput: $bn | Liquidity and funding: 35%Lower values increase normalized stress. |
| Wednesday liquidity proxy · 13 weeksWALCL + WDTGAL + RRPONTSYD | Change over exactly 13 calendar weeks in (WALCL / 1,000 − WDTGAL / 1,000 − RRPONTSYD), all on the same Wednesday, in USD billionsOutput: $bn | Supporting diagnostic; does not affect a layer scoreLower values increase normalized stress. |
| SOFR minus IORBSOFR + IORB | (first source − second source), matched on observation date × 100 to basis pointsOutput: bp | Liquidity and funding: 35%Higher values increase normalized stress. |
| Reserve balancesWRESBAL | Latest value ÷ 1,000 to USD billionsOutput: $bn | Supporting diagnostic; does not affect a layer scoreLower values increase normalized stress. |
| NFCINFCI | Latest source valueOutput: index | Liquidity and funding: 30%Higher values increase normalized stress. |
| NFCICREDITNFCICREDIT | Latest source valueOutput: index | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| NFCILEVERAGENFCILEVERAGE | Latest source valueOutput: index | Supporting diagnostic; does not affect a layer scoreHigher values increase normalized stress. |
| Claims 4w average above 52w lowIC4WSA | 100 × (latest four-week-average claims / lowest print in 52 weeks − 1)Output: % | Labour deterioration: 25%Higher values increase normalized stress. |
| Continuing claims · 13w slopeCCSA | Least-squares slope of 13 weekly claims values against week indexOutput: claims/week | Labour deterioration: 15%Higher values increase normalized stress. |
| Continuing claims increasing streakCCSA | Number of consecutive weekly increases; an unchanged or falling print resets the countOutput: weeks | Supporting diagnostic; does not affect a layer score |
| Sahm ruleSAHMREALTIME | Latest source valueOutput: pp | Labour deterioration: 20%Higher values increase normalized stress. |
| Unemployment change · 3mUNRATE | (value now − value 3 months earlier)Output: pp | Labour deterioration: 20%Higher values increase normalized stress. |
| Payroll growth · 3mPAYEMS | 100 × (value now / value 3 months earlier − 1)Output: % | Labour deterioration: 20%Lower values increase normalized stress. |
| Manufacturing hours change · 3mAWHMAN | (value now − value 3 months earlier)Output: hours | Supporting diagnostic; does not affect a layer scoreLower values increase normalized stress. |
| Temporary employment growth · 3mTEMPHELPS | 100 × (value now / value 3 months earlier − 1)Output: % | Supporting diagnostic; does not affect a layer scoreLower values increase normalized stress. |
The research replay checks the agreed 1998, 2000–02, 2008, 2011, 2015–16, 2018, 2020, 2022 and 2025–26 cases. Each period is checked for source coverage before evaluating alerts. Unsupported periods remain unavailable.
The outcome is a fall of at least 10%, 15% or 20% below the signal-day S&P close within the next 63 observed sessions. A full future horizon is required. This differs from peak-to-trough drawdown, which is reported separately for event context.
Vintage-aware replay excludes revisions dated after each signal date. Retrospective replay uses the latest revisions and is labelled accordingly. Neither qualifies as validated predictive performance until publication timing is audited. Daily warnings overlap, so episode counts and unavailable days are reported alongside daily hit rates. Thresholds are frozen before running the cases; this is not an out-of-sample calibrated probability model.