Layer 1: five-pillar structural score
Each enabled indicator is normalized according to its registry rule—usually a percentile rank, with a z-score-to-percentile transform or an already normalized module output where specified—and becomes a 0–100 sub-score, with a higher sub-score meaning more fragile. Indicators are averaged within their pillar, then the pillars receive fixed weights. The default pillar registry (which is database-configurable) is:
| Pillar | Weight | Examples of registered inputs |
|---|---|---|
| Volatility Complacency & Short-Vol Crowding | 25% | VIX level, 20-day realized S&P 500 volatility, VIX3M ÷ VIX carry, 63-day equity put/call |
| Leverage & Forced-Seller Capacity | 25% | FINRA margin debt growth, margin/market-cap proxy, inverse realized volatility, credit-complacency measures |
| Crowding & Concentration | 20% | SPY/RSP concentration trend, breadth divergence, Composite Sentiment positioning output |
| Prior Price Acceleration | 20% | Trailing 12-month S&P 500 return and return acceleration |
| Valuation | 10% | Shiller CAPE |
The raw composite is smoothed with a five-session median. Missing indicators are excluded and the affected pillar is renormalized; missing pillars are also renormalized. The implementation never imputes a missing sub-score into the composite. Bands are 0–25 Low, 25–50 Moderate, 50–70 Elevated, 70–85 High, and 85–100 Extreme.
Layer 2: separate activation state
Layer 2 asks whether stress is arriving into a market whose structural gate is open. The gate opens at a smoothed Layer 1 score of 70 and uses a 65 exit threshold (hysteresis). Five trips are evaluated when their data is available:
- T1: VIX divided by VIX3M is at least 1.00 (term-structure inversion).
- T2: the 20-session high-yield OAS change is at least two standard deviations of its historical changes.
- T3: the percentage of stocks above their 50-day moving average falls at least 25 percentage points across a 10-session window.
- T4: 10-day annualized realized volatility is at least two times 60-day realized volatility.
- T5: Unusual Whales SPY aggregate net gamma is below zero.
S0 is Calm, S1 is Fragile with no stress arriving, S2 is Fragile with stress arriving, and S3 is Isolated stress. S2 requires at least two trips for two consecutive sessions and exits after five consecutive sessions with one or fewer trips, subject to the gate. T5 cannot pin S2 on its own beyond the configured anti-pinning window. Layer 2 contributes zero points to Layer 1.
Data honesty and limitations
Historical percentile eligibility depends on available observations, cadence, freshness, and calibration rules. Monthly and quarterly series can be stale while still usable; inputs beyond their hard freshness cutoffs are unavailable. Some indicators are explicitly proxies, some are module outputs, and T5 is live-only. The dashboard marks unavailable, stale, proxy, and provisional-history conditions in its detailed view.
Fragility can remain elevated for months without a decline, and a low score cannot rule out an unexpected event. It is not a timing tool, a probability of a crash, or a buy/sell signal. Do not use it as a substitute for your own research or professional advice.
Source families
- Federal Reserve Economic Data (FRED) for many macroeconomic, rates, credit, and market series.
- Yahoo Finance for selected market and volatility history.
- Multpl for Shiller CAPE and S&P 500 price-to-book history.
- The Wall Street Journal market data for the current S&P 500 forward P/E input.
- Cboe, AAII, CFTC, CNN Fear & Greed, FinViz, Treasury Fiscal Data, and other clearly labeled provider feeds for individual indicators.
The detailed dashboard displays the source and as-of date for each available indicator. See the full methodology guide for the relationship between these composites and their limitations.