RecessionAlert Bear Market High-Risk Alert — Issue 1359

This notebook is an exploratory, public-proxy campaign. The source discloses CMHI Diffusion-zero cash advice after 3 of 7 bearish paw prints, but no native series, release lag, or BUY/re-entry map.

In [1]:
from pathlib import Path
import sys
ROOT = Path.cwd()
if not (ROOT / "research").is_dir():
    ROOT = Path("../..").resolve()
sys.path.insert(0, str(ROOT))
from research.research_campaign.recessionalert_1359 import load_proxy_panel, default_variants, evaluate_variant
panel = load_proxy_panel(db_path=ROOT / "data" / "market.sqlite")
print({"rows": len(panel), "start": str(panel.index.min().date()), "end": str(panel.index.max().date())})
{'rows': 403, 'start': '1993-01-31', 'end': '2026-07-31'}

Causal protocol

Month-end latest-available observations are evaluated with one or two available-bar lags. Lag zero is retained only as a lookahead control. Unknown values stay unavailable; IEF/BIL are inferred defensive sleeves.

In [2]:
rows = []
for variant in default_variants():
    result = evaluate_variant(panel, **{key: variant[key] for key in ("family", "lookback_months", "threshold", "lag_bars")})
    returns = result["portfolio_returns"].dropna()
    curve = (1.0 + returns).cumprod()
    rows.append({"id": variant["id"], "lag": variant["lag_bars"], "risk_off_months": int((result["warning"] == 1).sum()), "total_return": round(float(curve.iloc[-1] - 1), 4), "max_drawdown": round(float((curve / curve.cummax() - 1).min()), 4)})
rows
Out[2]:
[{'id': 'cmhi-three-of-seven-lb12-lag1-t0',
  'lag': 1,
  'risk_off_months': 167,
  'total_return': 7.4892,
  'max_drawdown': -0.2466},
 {'id': 'cmhi-three-of-seven-lb6-lag1-t0',
  'lag': 1,
  'risk_off_months': 156,
  'total_return': 3.9319,
  'max_drawdown': -0.2295},
 {'id': 'cmhi-three-of-seven-lb21-lag1-tneg05',
  'lag': 1,
  'risk_off_months': 128,
  'total_return': 7.616,
  'max_drawdown': -0.2717},
 {'id': 'cmhi-three-of-seven-lb12-lag2-t0',
  'lag': 2,
  'risk_off_months': 166,
  'total_return': 6.4008,
  'max_drawdown': -0.1908},
 {'id': 'cmhi-market-internals-lb12-lag1-t0',
  'lag': 1,
  'risk_off_months': 124,
  'total_return': 6.8924,
  'max_drawdown': -0.2644},
 {'id': 'cmhi-macro-confirmed-lb12-lag1-t0',
  'lag': 1,
  'risk_off_months': 167,
  'total_return': 7.4892,
  'max_drawdown': -0.2466},
 {'id': 'cmhi-three-of-seven-lb12-lag0-control',
  'lag': 0,
  'risk_off_months': 168,
  'total_return': 74.8171,
  'max_drawdown': -0.1688}]

Interpretation

The output is deliberately not an official indicator admission. Compare the causal rows with the lag-0 control, retain negative 2022 behavior, and treat all proxy charts as exploratory analogues.