The Origin — Why We Built This
"Every major financial collapse of the last century has followed the same five-stage sequence. It happened in 1929, 1987, 2000, and 2008. Today, those stages are visible again."

In December 2025, a research article on Share-Talk laid out a compelling case that the conditions preceding every major crash in modern history — 1929, 1987, 2000, 2008 — were visibly re-assembling in 2025–2026. The article described a five-stage sequence: credit explosion, concentration trap, smart money exit, liquidity illusion, and trigger event. When all five stages are active simultaneously, history suggests a trigger arrives within 12 to 24 months.

That article was the catalyst for this project. Rather than read about these signals passively, the goal was to build a system that tracks them in real time — automatically, every day — and produces a single composite score: the Market Fragility Index (MFI).

The MFI is not a trading signal. It does not tell you when to buy or sell. It is a diagnostic instrument — a cockpit gauge that answers one question: how close is the current environment to the conditions that have preceded historical crashes?

Dec 2025
Share-Talk article published — "The 1929 Warning That Looks Like 2026." Five-stage crash framework identified as the research foundation.
Jan 2026
Original MFI framework designed — 15 indicators across 5 components. First probability assessment: 35% soft landing, 40% moderate correction, 25% severe crash. 4 of 5 crash stages confirmed active.
May 2026
Live system deployed on AWS Lightsail — automated data collection, PostgreSQL storage, real-time dashboard. Expanded to 12 free data sources across 8 scoring components. Historical crash comparison module added covering 1929, 1987, 2000, 2008, 2020.
The 5-Stage Crash Framework

The framework originates from the Share-Talk analysis of every major market collapse since 1929. Each stage creates a layer of systemic fragility. When all five are active, the system is primed — the trigger only determines the date, not the outcome.

1

Credit Explosion

When credit grows faster than the real economy, borrowing fuels asset purchases, pushing prices higher and prompting more borrowing. That feedback loop can look like prosperity — it is a trap. Every systemic crash begins with too much debt.

1929: Margin lending soared — buyers putting down 10–20% and borrowing the rest.
2008: Mortgage leverage packaged into complex securities nobody understood.
Today: Corporate debt >$10T, total US debt >$34T, margin debt near $750B.

Tracked: HY Spread · Credit Component
2

Concentration Trap

When a small set of names accounts for a large share of market value, the system becomes fragile. Passive index flows magnify concentration — on the way up it's a momentum machine, on the way down it becomes a forced-selling cascade.

2000: Nasdaq had become effectively a bet on the top tech names.
Today: Top 7 stocks in S&P 500 account for 30–35% of the entire index.

Tracked: Concentration Component · Top-10 Weight
3

Smart Money Exit

Institutional investors, hedge funds, and insiders reduce exposure quietly before a crash becomes public knowledge. Their selling creates the exit liquidity that later becomes the source of panic for retail investors.

1929: Bernard Baruch was largely in cash by September — two months before the crash.
Today: Insider selling at levels not seen in decades; retail flows remain strong.

Tracked: AAII Sentiment · Put/Call Ratio · SKEW Index
4

Liquidity Illusion

Liquidity is the market's oxygen. Tightened credit, rising rates, and a shrinking central bank balance sheet bleed liquidity away without immediate price consequences. When selling starts, bids thin and price moves amplify dramatically.

2007–08: Credit conditions tightened while prices remained deceptively robust. The real signal was deteriorating plumbing underneath.
2023: Three mid-sized US banks failed within one week — liquidity stress into solvency event.

Tracked: Fed Balance Sheet · SRF Repo Usage · Liquidity Component
5

The Trigger

The trigger is inherently unpredictable. It does not cause the crash — it simply determines when a primed system breaks. When stages 1–4 are all confirmed, history suggests a trigger arrives within 12 to 24 months. The system is primed. The trigger only picks the date.

1929: A seemingly minor British fraud case.
1987: Portfolio insurance algorithms created a self-reinforcing sell loop in a single day.
2008: Lehman Brothers bankruptcy — $639B in assets declared insolvent overnight.
2020: COVID-19 pandemic. The bubble had been forming since September 2018 — COVID was the spark.

Tracked: Catalyst Detection Engine · 12 Active Detectors
How the MFI Score Is Calculated

The Market Fragility Index is a composite score from 0 to 100, calculated by scoring 8 components and weighting them by their historical predictive significance. Each component is normalized to 0–100 before weighting. The final score maps to one of five risk bands.

Valuation
20%
Composite of three valuation metrics: Shiller CAPE (50%), Buffett Indicator / Wilshire-to-GDP (35%), and trailing S&P 500 P/E (15%). High valuation alone doesn't cause crashes — but it determines how far markets fall when they do.
Sources: multpl.com (CAPE, P/E) · yfinance ^W5000 + FRED GDP (Buffett)
Alert: CAPE >42 · Buffett >250% · P/E >35
Credit
14%
ICE BofA High Yield OAS spread in basis points. Tight spreads (under 250bps) signal complacency and cheap credit — the precondition for Stage 1 credit explosion. Spreads above 400bps are a hard system trigger.
Source: FRED BAMLH0A0HYM2 (ICE BofA HY Index)
Hard Trigger: ≥400bps · Scale: 150bps (tight) → 700bps (2008 crisis)
Liquidity
14%
Blend of Fed Standing Repo Facility (SRF) usage (70%) and Fed Balance Sheet size/direction (30%). Heavy SRF usage signals banks are borrowing overnight reserves — a Stage 4 liquidity stress signal. Fed BS tracks QE/QT cycles.
Sources: FRED RPONTSYD (SRF) · FRED WALCL (Fed Balance Sheet)
Hard Trigger: SRF ≥$200B · Fed BS rapid expansion = QE restart signal
Sentiment
12%
Three-way composite: CBOE SKEW Index (40%) measures tail risk — elevated SKEW means smart money is buying crash protection. AAII Bullish % (35%) tracks retail euphoria. Put/Call Ratio (25%) inverted — low P/C means complacency.
Sources: yfinance ^SKEW · aaii.com weekly survey · yfinance ^CPC
Alert: SKEW >155 · AAII Bulls >55% · Put/Call <0.65
Macro
12%
Sahm Rule real-time recession indicator. Triggers when the 3-month average unemployment rate rises 0.50 percentage points above its 12-month low. Created by former Fed economist Claudia Sahm — has fired before every post-WWII recession.
Source: FRED SAHMREALTIME (data from 1959)
Hard Trigger: ≥0.50 · Scale: 0.0 (expansion) → 1.0 (deep recession)
Breadth (composite)
10%
Continuous stress score from the blended breadth composite (60% EW/CW z-score, 40% % above 200-DMA). Shown only where constituent valid_count≥400. 60/40 blend of EW/CW z-score and % above 200-DMA — narrowing participation raises MFI breadth stress.
Source: spx_equal_weight_vs_spx v2026.08.1 · Yahoo ^GSPC + equal-weight index
Omitted before native overlap (~2007-01); weights renormalized. Separate hard trigger: A/D line divergence (live only).
Earnings
10%
Real GDP earnings growth rate. Negative or near-zero earnings growth combined with high valuations is the classic setup for a valuation crash — the "E" in P/E collapses while the "P" stays elevated. Quarterly data from FRED.
Source: FRED A191RL1Q225SBEA (quarterly, from 1947)
Hard Trigger: ≤0% growth · Score inverted: high growth = low score
Concentration
8%
S&P 500 top-10 stock weight percentage. The Stage 2 concentration trap — historically ~24% average, currently near 38–42%. Passive fund flows amplify concentration. A stumble in one or two mega-caps drags the entire index.
Source: slickcharts.com S&P 500 composition (weekly)
Alert: >35% · Extreme: >42% · Historical avg: ~24%

MFI Score Bands

Band Score Interpretation Historical Analog
LOW 0 – 25 System healthy. No major fragility signals active. Normal market conditions. Mid-cycle expansion, 2013–2015 environment
MODERATE 26 – 50 Some fragility building. One or two components elevated. Watch for convergence. 2014–2015, early 2018
ELEVATED 51 – 75 Multiple components elevated. Pattern resembles pre-correction environments. Risk management review warranted. Late 2019, late 2021
HIGH 76 – 90 Most components stressed. Hard triggers approaching. Historically consistent with 6–18 months before significant drawdown. Mid-2007, mid-1999
EXTREME 91 – 100 System at maximum fragility. Hard triggers firing. Crash conditions present. Historical analogs: Oct 1929, Sept 2008, Feb 2020. Pre-crash 1929, 2008, 2020
Historical MFI V2 — Long-Range Timeline (1990→Present)

The live dashboard gauge is the operational Market Fragility Index: eight components, current theory weights, updated hourly from real collectors (FRED, yfinance, AAII, and others). Historical MFI V2 extends that framework back to January 1990 so modern crisis periods can be compared on one instrumented stress line — with real VIX, HY OAS, and CAPE from the start of the window (no deep-history proxy reconstruction).

V2 timeline active on MFI chart Open MFI Timeline

Two Fields — Read This Before Comparing History

V2 stores two distinct outputs. Do not treat them as the same numeric scale.

Field Meaning How it is computed Use for
mfi_score Operational linear MFI Linear Σ wᵢ·cᵢ with era-aware renormalization. Era A months with live snapshots use snapshot ground truth. Live dashboard parity, 401K overlay (default), absolute level today
mfi_v2 Historical percentile rank 100 × empirical_CDF(mfi_score) — same transform for every month, no era formula switch. Cross-era crisis ranking, unified percentile thresholds (e.g. trim >80, lean-in <30)
Example: November 2008 vs calm 2019

On the linear scale, Nov 2008 mfi_score is elevated vs calm months (~50–60 range). On the percentile scale, the same month maps to the upper tail of history (~90+ on mfi_v2) because it ranks among the most fragile months since 1990. There is no fixed “Nov 2008 = 92” anchor — rank emerges from the full sample.

Era Tiers — What Each Period Is Good For

Era Dates Components Confidence Use safely for
A 2021-07+ 8 native; Breadth (composite) from native overlap Operational Monitoring, alerts, alignment with the live gauge after overlap validation
B 1996–2021 8 with proxies (TED, VXO); Breadth (composite) native ~2007-01+ Context "Was 2008 stress higher than 2011?" — ranking on one rebased scale, not point-identical to today's MFI
C 1990–1995 7 (no concentration) Illustrative Long-run valuation/credit context; not component-level precision

Reliability Work — What Was Fixed and Why

Early V2 integration had three pipeline splits that caused a systematic ~5-point bias vs the live dashboard (e.g. Jun 2026). The reliability pass unified the paths so Era A is trustworthy and pre-2021 limits are documented — without changing the core 8-component theory in scoring.py.

1

Shared monthly assembly

One V1-compatible input builder for historical backfill and V2 Era A: multpl CAPE, VIX-derived sentiment, repo_srf=0 and skew=125 in monthly history (live still uses real SRF and SKEW from collectors).

2

Unified weights everywhere

Historical builder, V2 Era A, and this dashboard all use the same native weights (valuation 20%, credit 14%, concentration 8%, etc.). Eliminates weight drift that alone explained ~5 points on high-valuation months.

3

Era A snapshot splice

For months since Jul 2021 where live snapshots exist, seeded mfi_score is taken from snapshots.mfi_score. mfi_v2 is then recomputed as the percentile rank of the full history — no separate splice on mfi_v2.

4

Percentile historical scale

mfi_v2 is the empirical percentile rank of mfi_score across the full seeded history — one formula for every month. Era labels affect confidence metadata only, not the transform.

5

Honest proxy labeling

source_map records which series fed each month; is_proxy flags true proxy inputs only (not every month with multpl CAPE). Shaded segments on the timeline mark proxy/backfill months.

What did not change

The eight-component fragility model, normalization ranges, hard triggers, catalyst detectors, and live collector path are unchanged. V2 only changes how history is assembled, scaled, and labeled. The gauge you see at the top of the dashboard remains the authoritative score for today.

Validation Before Enable

MFI_V2_ENABLED stays false until automated and human sign-off complete:

Automated checks: scripts/validate_mfi_v2.py · 44 unit/fidelity tests in CI · spot-check: scripts/spot_check_mfi_fidelity.py

Hard Triggers — Automatic Red Flags

Hard triggers are binary — they either fire or they don't. Any single trigger firing is historically associated with elevated systemic risk. Three or more firing simultaneously has preceded every major crash in the dataset.

HY Credit Spread ≥ 400bps
High yield bonds trade at 400+ basis points over Treasuries. Credit markets are pricing in meaningful default risk. In 2008 this spread reached 2,000bps post-Lehman — it was 200bps a year earlier. The spread widening IS the early warning.
Source: FRED BAMLH0A0HYM2 · Current threshold: 400bps
📉
Sahm Rule ≥ 0.50
The 3-month average unemployment rate rises 0.50pp above its 12-month low. Has preceded every US recession since 1970. When this fires, the recession has already begun — the MFI uses it as a confirmation that macro deterioration is real, not projected.
Source: FRED SAHMREALTIME · Current threshold: 0.50
📊
A/D Line Divergence
S&P 500 is up but more than 55% of individual stocks are declining. The index is being carried by 5–10 mega-caps while the broad market deteriorates underneath. This is Stage 2 (concentration trap) made visible in real time.
Source: yfinance 100-stock sample · Daily calculation
🏦
Fed SRF Usage ≥ $200B
Banks are borrowing $200B+ per day overnight from the Fed's Standing Repo Facility. This means banks are unable to fund themselves in the open market and are relying on Fed emergency liquidity. Stage 4 (liquidity illusion collapse) in real time.
Source: FRED RPONTSYD · Current threshold: $200B
📈
Earnings Growth ≤ 0%
Real GDP earnings growth goes negative. When this coincides with elevated valuations (high CAPE/P/E), the market is pricing in future earnings growth that isn't materializing. The "E" in P/E collapses, making current prices indefensible.
Source: FRED A191RL1Q225SBEA · Quarterly · Threshold: 0%
Data Sources — All Free, All Automated

Every data source used in this system is publicly available at no cost. The system was deliberately designed with free sources — no Bloomberg, no paid APIs.

FRED (St. Louis Fed)
HY Spread, Sahm Rule, SRF, Earnings Growth, Fed Balance Sheet
multpl.com
Shiller CAPE Ratio, S&P 500 P/E Ratio (data from 1871)
yfinance
VIX, SKEW Index, Put/Call Ratio, SPY, Wilshire 5000, EW/CW breadth (^GSPC), A/D trigger
AAII
Weekly investor sentiment survey (bullish/bearish/neutral %)
slickcharts.com
S&P 500 top-10 concentration weight (weekly)
CBOE
VIX, SKEW, Put/Call — available via yfinance tickers
Technical Infrastructure

Stack

AWS Lightsail
Application server — Project_Alpha_Crash_Report · us-east-2a
AWS RDS PostgreSQL
Data persistence — snapshots, observations, crash benchmarks
AWS SNS
Alert dispatch — email/SMS when hard triggers fire
Python + Flask
Backend application · psycopg3 · systemd service
GitHub Actions
CI/CD pipeline — push to main auto-deploys to Lightsail
Nginx
Reverse proxy · port 80 → gunicorn 8000

Data Flow

1. systemd timer fires every hour
2. Collectors pull 12 indicators from FRED, yfinance, AAII, slickcharts, multpl
3. Scoring engine computes 8 component scores and weighted MFI total
4. Catalyst engine evaluates 12 detectors against thresholds
5. Results persisted to RDS — snapshot, triggers, observations, catalysts
6. SNS alert dispatched if any hard trigger is red
7. Historical V2 backfill (1990→present): shared assembly, Era A snapshot splice, B/C rebased scale
8. Validation before enable — Historical MFI V2 on this page
Disclaimer

The Market Fragility Index is a personal research and monitoring tool built by JDAN Trust. It is not financial advice, investment advice, or a trading signal of any kind. All data is sourced from publicly available free sources and may contain delays, errors, or gaps. Past crash patterns do not guarantee future outcomes. This system is a diagnostic instrument only — it assesses current market conditions against historical crash preconditions. All investment decisions should be made with appropriate professional guidance.