RecessionAlert PRO Charts — exploratory proxy campaign¶
This executed notebook uses only the checked-in RecessionAlert snapshot and the immutable offline market cache. Native component observations are absent, so all signal and equity paths are explicitly inferred public-proxy research, not source parity or investment advice.
In [1]:
from hashlib import sha256
import json
import sqlite3
from pathlib import Path
ROOT = Path.cwd()
DB = ROOT / 'data' / 'recessionalert.sqlite'
MANIFEST = ROOT / 'research' / 'artifacts' / 'recessionalert' / 'manifest.json'
INVENTORY = ROOT / 'research' / 'findings' / 'recessionalert_inventory.md'
PAGE = 'https://recessionalert.com/chartspro/'
EXPECTED = 'sha256:57ddf56cb62e1dd8ad38fae88849241fa3f07f3dab2188de4b16df00c1c523eb'
with sqlite3.connect(f'file:{DB}?mode=ro', uri=True) as connection:
connection.execute('PRAGMA query_only=ON')
row = connection.execute('SELECT status, sha256, content_length, body FROM pages WHERE url = ?', (PAGE,)).fetchone()
assets = connection.execute('SELECT COUNT(*) FROM assets WHERE page_url = ?', (PAGE,)).fetchone()[0]
manifest = json.loads(MANIFEST.read_text())
manifest_page = next(item for item in manifest if item.get('redacted_url') == PAGE)
inventory_text = INVENTORY.read_text()
assert row and row[1] == EXPECTED == manifest_page['sha256']
assert sha256(row[3]).hexdigest() == EXPECTED.removeprefix('sha256:')
assert EXPECTED[:18] in inventory_text
print(f'source_sha256={row[1]}')
print(f'manifest_digest_verified={manifest_page["sha256"] == row[1]}')
print(f'inventory_digest_verified={EXPECTED[:18] in inventory_text}')
print(f'page_status={row[0]} body_bytes={row[2]} target_assets={assets}')
print('native_span=MODEL percentiles/MODEL-13WK occasions since 1990; Fed weekly H.4.1; continuous spans unknown')
print('publication_schedule=PRO composite every 15 minutes; Fed charts each Wednesday from H.4.1')
print('causal_policy=one available-period lag then next available bar; lag zero control only')
In [2]:
import sys
sys.path.insert(0, str(ROOT))
from research.research_campaign.recessionalert_1366 import default_variants, evaluate_variant, load_proxy_panel
panel = load_proxy_panel()
print(f'panel_span={panel.index.min().date()}..{panel.index.max().date()} observations={len(panel)}')
for variant in default_variants():
result = evaluate_variant(panel, family=variant['family'], lookback_months=variant['lookback_months'], threshold=variant['threshold'], lag_bars=variant['lag_bars'])
returns = result['portfolio_returns'].dropna()
equity = (1.0 + returns).cumprod()
drawdown = (equity / equity.cummax() - 1.0).min()
cagr = equity.iloc[-1] ** (12.0 / len(returns)) - 1.0
print(f"{variant['id']} status=tested cagr={cagr:.6f} max_dd={drawdown:.6f} label={variant['claim_kind']}")
print('tested_variants=6 causal_variants=5 lag_zero_control_excluded=True')
Interpretation boundary¶
The proxy panel is long enough to test related hypotheses, but SPY is not constituent high-count breadth, VIX/WALCL are not proprietary DCOM/OCTA/Fed chart components, and the source does not disclose a canonical scalar or portfolio map. The causal runs use an observation lag and next available bar; the lag-zero control is retained only as a non-causal warning. See the campaign state-space, diagnostics, and synthesis JSON for full metrics, regimes, events, and gaps.