← Results index

Re-audit Fed balance-sheet ROC experiment — Pine WSHOSHO ROC5 >4.8 fidelity

2026-08-18T12:00:00Z Investigation completed Re-derived Fed balance-sheet ROC5>4.8 exactly per Pine (request.security WSHOSHO D ffill + ta.roc 100*(fedbal/fedbal[5]-1) >4.8, threshold 4.8), verified weekly->daily ffill with publication lag L=7+next_close tick-for-tick on a pinned fixture, audited on maximal span (WSHOSHO 1234 W-WED 2002-12-18->2026-08-05), quantified 57 triggers/186 active (3.14%, 2.42/yr) and date/brittleness/lag/falsification gaps, and left the signal as an investigate-not-promote sparse buy impulse with persisted inputs and a qm-kdnj experiment-as-strategy republish plan (generic SPY<200DMA head-to-head).

Objective

Re-derive the Fed balance-sheet ROC buy signal exactly as the pinned Pine defines it, re-audit existing experiments (qm-4bx.19, qm-4bx.21) for signal-date fidelity, fix any date/definition drift (weekly->daily ffill, publication lag, ROC lookback direction, threshold semantics), persist inputs offline, and republish under the qm-kdnj experiment-as-strategy contract with strategy parity plus a generic opposite harness.

Approach

Froze Pine semantics verbatim: fedbal = request.security("WSHOSHO","D",close) daily ffill of Wednesday levels, ta.roc(fedbal,5)=100*(fedbal/fedbal[5]-1) backward 5 bars, input.float(4.8) level-trigger not crossover, HMA/EMA/cum/SMA/stdev/crossover documented as N/A for this ROC-only signal. Verified backtest/fed_bal_roc.py:weekly_to_daily_forward_fill (availability Wed+L ffill, dedup keep=last, UTC-naive sorted unique) and compute_roc/fedbal_roc_buy_signal match Pine tick-for-tick on a small CSV fixture (hand-computed TradingView reference, offline). Established data provenance: FRED WSHOSHO/WALCL/WSHOTSL 1234 W-WED each 2002-12-18->2026-08-05 via fredgraph.csv + upsert_macro into data/market.sqlite:macro_obs/macro_series_meta (public domain, backtest/fed_bal_roc.provenance_record() + research/input_provenance.py), SPY OHLCV 8428 daily for trading calendar, offline reproducible (L=7 default 7-10 range, L0 placebo and L10 erasure tested). Ran causal validation on maximal native span: baseline SMA200 5.56->8.20 (+47%) and 60/40 7.05->8.69 with costs, crisis concentration GFC +4.3pp/COVID +10.6pp vs 0 elsewhere, adjacent thresholds basin 2-10 (thr1 collapse), lag stress L7 57 triggers vs L10 0, weekly 1W 53 vs daily 57, series substitution WALCL +22% triggers, falsification randomized 2634 triggers 11.47 >8.20. Selected disposition investigate (not promote) — sparse buy impulse, not persistent regime, fails not-one-interval and falsification gates, retained as discoverable research evidence. Planned experiment publish via research/experiments/qm-kdnj.5.json + research/reports/experiments.py + research/reports/build with strategy-parity payload/page (same tiles/charts/metrics as strategies) plus Research Narrative and generic SPY<200DMA opposite head-to-head deltas on same window/costs/lag.

Files changed

Validation

Results

Fidelity frozen and validated: WSHOSHO ROC5>4.8 L7 ffill delivers 57 triggers, 186 active days (3.14%, 2.42/yr) on full span, no date drift vs Pine; robust matrix documents crisis-only excess, lag fragility Wed+10=Saturday erasure, threshold1 collapse, and falsification failure where frequent random longs beat the true signal in the secular bull. Disposition investigate — not a promotable risk-indicator or catalog strategy, but a corrected sparse signal persisted offline and ready for qm-kdnj experiment-as-strategy promotion via single validated command once generic-exit head-to-head and narrative parity pages are built. No secret/private leakage, no DB mutation from read paths, no synthetic pre-2002 history invented.

Links

Source artifact: research/results/qm-kdnj.5.md