{
 "schema_version": "1.0",
 "source": "derived",
 "generated_at": "2026-09-06T11:56:14+00:00",
 "as_of": "2026-09-06",
 "price_points": 5864,
 "horizon_days": 365,
 "cluster_days": 90,
 "min_episodes": 20,
 "method": "Each rule is scored against the days on which it could have fired. The baseline excludes trigger days and the 90 days after each trigger, so it is not contaminated by the aftermath of the signal. Top rules are scored on a 40% fall within 365 days; bottom rules on a doubling within 365 days. Episodes whose window is incomplete are excluded and counted as censored. In-sample and descriptive: this measures what followed, not what will follow.",
 "rules": [
  {
   "episodes": 5,
   "censored": 0,
   "hit_rate": 100.0,
   "baseline_rate": 25.9,
   "baseline_days": 4310,
   "eligible_days": 5150,
   "key": "pi_cycle",
   "name": "Pi Cycle Top",
   "claim": "The 111-day average crossing above twice the 350-day average marks a cycle top.",
   "direction": "top",
   "detail": "/tools/bitcoin-indicator-autopsy",
   "difference": 74.1,
   "verdict": "Not enough episodes to score"
  },
  {
   "episodes": 8,
   "censored": 0,
   "hit_rate": 25.0,
   "baseline_rate": 26.4,
   "baseline_days": 4173,
   "eligible_days": 5300,
   "key": "mayer_high",
   "name": "Mayer multiple above 2.4",
   "claim": "Price at 2.4x its 200-day average is an overheated market.",
   "direction": "top",
   "detail": "/tools/bitcoin-technical-signals",
   "difference": -1.4,
   "verdict": "Not enough episodes to score"
  },
  {
   "episodes": 4,
   "censored": 0,
   "hit_rate": 75.0,
   "baseline_rate": 46.0,
   "baseline_days": 3199,
   "eligible_days": 4100,
   "key": "below_200w",
   "name": "Price below the 200-week average",
   "claim": "Price under its 200-week average is a generational buying zone.",
   "direction": "bottom",
   "detail": "/tools/bitcoin-indicator-autopsy",
   "difference": 29.0,
   "verdict": "Not enough episodes to score"
  },
  {
   "episodes": 4,
   "censored": 0,
   "hit_rate": 25.0,
   "baseline_rate": 44.9,
   "baseline_days": 3056,
   "eligible_days": 4770,
   "key": "two_year_ma",
   "name": "Price below the 2-year average",
   "claim": "The 2-year moving average multiplier marks the accumulation band.",
   "direction": "bottom",
   "detail": "/tools/bitcoin-indicator-autopsy",
   "difference": -19.9,
   "verdict": "Not enough episodes to score"
  },
  {
   "episodes": 12,
   "censored": 0,
   "hit_rate": 66.7,
   "baseline_rate": 57.0,
   "baseline_days": 4208,
   "eligible_days": 5300,
   "key": "golden_cross",
   "name": "Golden cross",
   "claim": "The 50-day crossing above the 200-day average starts a bull phase.",
   "direction": "bottom",
   "detail": "/tools/bitcoin-technical-signals",
   "difference": 9.7,
   "verdict": "Not enough episodes to score"
  },
  {
   "episodes": 12,
   "censored": 0,
   "hit_rate": 58.3,
   "baseline_rate": 28.5,
   "baseline_days": 4208,
   "eligible_days": 5300,
   "key": "death_cross",
   "name": "Death cross",
   "claim": "The 50-day crossing below the 200-day average starts a bear phase.",
   "direction": "top",
   "detail": "/tools/bitcoin-technical-signals",
   "difference": 29.8,
   "verdict": "Not enough episodes to score"
  },
  {
   "episodes": 20,
   "censored": 0,
   "hit_rate": 30.0,
   "baseline_rate": 38.6,
   "baseline_days": 1289,
   "eligible_days": 5485,
   "key": "rsi_hot",
   "name": "RSI-14 above 70",
   "claim": "An overbought RSI precedes a fall.",
   "direction": "top",
   "detail": "/tools/bitcoin-technical-signals",
   "difference": -8.6,
   "verdict": "Worse than the baseline"
  },
  {
   "episodes": 21,
   "censored": 0,
   "hit_rate": 47.6,
   "baseline_rate": 59.9,
   "baseline_days": 2369,
   "eligible_days": 5485,
   "key": "rsi_cold",
   "name": "RSI-14 below 30",
   "claim": "An oversold RSI precedes a rally.",
   "direction": "bottom",
   "detail": "/tools/bitcoin-technical-signals",
   "difference": -12.3,
   "verdict": "Worse than the baseline"
  },
  {
   "episodes": 5,
   "censored": 0,
   "hit_rate": 20.0,
   "baseline_rate": 28.0,
   "baseline_days": 4615,
   "eligible_days": 5499,
   "key": "mvrv_high",
   "name": "MVRV above 3.7",
   "claim": "An MVRV above 3.7 marks the top of the cycle.",
   "direction": "top",
   "detail": "/tools/bitcoin-realised-value-monitor",
   "difference": -8.0,
   "verdict": "Not enough episodes to score"
  },
  {
   "episodes": 5,
   "censored": 0,
   "hit_rate": 60.0,
   "baseline_rate": 54.9,
   "baseline_days": 4097,
   "eligible_days": 5499,
   "key": "mvrv_low",
   "name": "MVRV below 1",
   "claim": "An MVRV below 1 means the average holder is under water: a bottom.",
   "direction": "bottom",
   "detail": "/tools/bitcoin-realised-value-monitor",
   "difference": 5.1,
   "verdict": "Not enough episodes to score"
  },
  {
   "episodes": 5,
   "censored": 0,
   "hit_rate": 20.0,
   "baseline_rate": 51.9,
   "baseline_days": 1065,
   "eligible_days": 2771,
   "key": "fear_extreme",
   "name": "Fear and Greed at 20 or below",
   "claim": "Extreme fear means the market has capitulated and it is time to buy.",
   "direction": "bottom",
   "detail": "/tools/bitcoin-flows-positioning-monitor",
   "difference": -31.9,
   "verdict": "Not enough episodes to score"
  },
  {
   "episodes": 5,
   "censored": 0,
   "hit_rate": 40.0,
   "baseline_rate": 39.1,
   "baseline_days": 1941,
   "eligible_days": 2771,
   "key": "greed_extreme",
   "name": "Fear and Greed at 80 or above",
   "claim": "Extreme greed means the market is euphoric and due to fall.",
   "direction": "top",
   "detail": "/tools/bitcoin-flows-positioning-monitor",
   "difference": 0.9,
   "verdict": "Not enough episodes to score"
  },
  {
   "episodes": 15,
   "censored": 0,
   "hit_rate": 60.0,
   "baseline_rate": 53.3,
   "baseline_days": 2942,
   "eligible_days": 5440,
   "key": "hash_ribbon",
   "name": "Hash ribbon capitulation",
   "claim": "When the 30-day hash rate falls below the 60-day, miners are capitulating and a bottom is near.",
   "direction": "bottom",
   "detail": "/tools/bitcoin-miners-monitor",
   "difference": 6.7,
   "verdict": "Not enough episodes to score"
  },
  {
   "episodes": 2,
   "censored": 0,
   "hit_rate": 50.0,
   "baseline_rate": 3.6,
   "baseline_days": 252,
   "eligible_days": 5134,
   "key": "below_s2f",
   "name": "Price below the Stock-to-Flow model",
   "claim": "Bitcoin trades below its scarcity-implied value and will revert to it.",
   "direction": "bottom",
   "detail": "/tools/bitcoin-indicator-autopsy",
   "difference": 46.4,
   "verdict": "Not enough episodes to score"
  },
  {
   "key": "lppls",
   "name": "LPPLS bubble model",
   "claim": "A log-periodic power-law fit identifies a bubble approaching its critical time.",
   "direction": "top",
   "episodes": 18,
   "censored": 0,
   "hit_rate": 28.0,
   "baseline_rate": 34.4,
   "baseline_days": 4627,
   "eligible_days": 4627,
   "detail": "/tools/bitcoin-indicator-autopsy",
   "note": "random-block p = 0.6734",
   "difference": -6.5,
   "verdict": "Not enough episodes to score"
  }
 ]
}