Market Fragility Index
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?
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.
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.
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.
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.
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.
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.
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.
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 |
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).
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) |
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.
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).
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.
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.
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.
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.
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:
- Era A overlap: last 12 months |live
mfi_score− seededmfi_score| ≤ 1.0 - 2021-06/07 continuity: no artificial cliff on
mfi_v2at the era boundary - Crisis rank sanity: 2008-11 and 2020-03 above 2019 calm median on
mfi_v2 - Per-era human sign-off (Era A must be APPROVE before production enable)
Automated checks: scripts/validate_mfi_v2.py ·
44 unit/fidelity tests in CI ·
spot-check: scripts/spot_check_mfi_fidelity.py
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.
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.
Stack
Data Flow
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.