← Experiments

Fed balance-sheet ROC buy overlay — WSHOSHO ROC5>4.8 vs generic exits

Investigate-only qm-kdnj.5 · 2026-08-18

Does the Pine-verbatim Fed balance-sheet ROC5>4.8 buy signal (WSHOSHO weekly W-WED ffill L7, ta.roc 5 >4.8, holding 20d) add incremental recovery beyond generic defensive exits (SPX <50DMA, <200DMA, 50/200 death-cross, trailing-stop 10%) on the maximal native window with same costs/lag?

Pine ROC5>4.8 frozen tick-for-tick (L7 ffill, 57 triggers 186 active). Generic head-to-head on 2002-12-18→2026-07-24 same window/costs/lag next_close +10bps via next_close 10bps: SMA200 Δ47.39% (6.6394→9.7858), SMA50 Δ34.63%, cross Δ50.21%, trailing Δ62.83%, BH Δ0%. Signal is sparse buy-only (2.4/yr) with crisis-only excess and lag fragility; disposition investigate — not promoted to catalog, persisted offline via ensure_macro offline=True with FRED provenance 1234 rows 2002-12-18→2026-08-05.

Research narrative

Pine fidelity

Frozen Pine semantics request.security WSHOSHO D ffill + ta.roc 5 >4.8 level-trigger, weekly_to_daily_forward_fill L7, UTC-naive sorted unique, no lookahead; publication_lag 7 days, next_close execution adds one-bar lag via BacktestConfig.allocatesmartly() 10bps.

Generic exit harness

For buy-only impulse per qm-kdnj harness, paired generic opposite SPX <50DMA, <200DMA, 50/200 cross, trailing-stop 10% — each head-to-head generic-only vs signal+generic on same window/costs/lag via BacktestConfig.allocatesmartly() next_close 10bps; deltas SMA200 47.39% (CAGR 1.80% Sharpe +0.09), SMA50 34.63%, cross 50.21%, trailing 62.83%, BH 0.0% — window 2002-12-18→2026-07-24 same window/costs/lag next_close +10bps L7 ROC5>4.8 hw20 override

Results

WSHOSHO 1234 W-WED 2002-12-18→2026-08-05, 57 triggers 186 active hw20. Generic head-to-head on 2002-12-18→2026-07-24 same window/costs/lag next_close +10bps: SMA200 6.6394→9.7858 Δ47.39%, SMA50 2.8471→3.833 Δ34.63%, cross 8.5526→12.8467 Δ50.21%, trailing 10% 6.4074→10.4332 Δ62.83%, BH 12.6866→12.6866 Δ0.0%.

Generic opposite-signal harness (Δ head-to-head)

Window: 2002-12-18→2026-07-24 same window/costs/lag next_close +10bps — same window/costs/lag via BacktestConfig.allocatesmartly() next_close 10bps

GenericGeneric-onlySignal+GenericΔ%ΔCAGRΔSharpe
sma502.84713.833034.63%+1.33%+0.09
sma2006.63949.785847.39%+1.80%+0.09
cross_50_2008.552612.8550.21%+1.91%+0.09
trailing_10pct6.407410.4362.83%+2.26%+0.12
bh12.6912.690.00%+0.00%+0.00

All one-way buy signals paired with generic opposite (SPX <DMA) per qm-kdnj; deltas computed via BacktestConfig.allocatesmartly() next_close, 10bps+5bps; same window/costs/lag; publication_lag 7, ROC5>4.8 hw20 override

For buy-only impulse per qm-kdnj harness, paired generic opposite SPX <50DMA, <200DMA, 50/200 cross, trailing-stop 10% — each head-to-head generic-only vs signal+generic on same window/costs/lag via BacktestConfig.allocatesmartly() next_close 10bps; deltas SMA200 47.39% (CAGR 1.80% Sharpe +0.09), SMA50 34.63%, cross 50.21%, trailing 62.83%, BH 0.0% — window 2002-12-18→2026-07-24 same window/costs/lag next_close +10bps L7 ROC5>4.8 hw20 override

Equity vs S&P (aligned, rebased to 1.0)

No signal overlay for this experiment (parameter sweep / search)

Aligned window, both rebased to 1.0 at start — Aligned window 2002-12-18→2026-07-24 same window/costs/lag next_close +10bps, both rebased to 1.0 at start · S&P dashed, experiment solid. X = Date, Y = Equity (rebased to 1.0).

Signal driver & thresholds (x-aligned)

Stats

CAGR0.00%Sharpe0.00%
Sortino0.00%maxDD0.00%

Disposition

Investigate-only — fidelity verified and generic deltas computed head-to-head on same window/costs/lag via BacktestConfig.allocatesmartly() next_close 10bps; no synthetic pre-2002 history, no catalog promotion. Signal remains sparse buy impulse for risk monitoring, not a standalone strategy. Trailing-stop 10% minimum retained per qm-kdnj contract.

Follow-on work

Errors & data gaps

Native WSHOSHO weekly W-WED 2002-12-18→2026-08-05 1234 rows FRED H.4.1; no synthetic pre-2002 history invented; publication_lag 7 days (available Wed+L) plus next_close execution; weekly_to_daily_forward_fill UTC-naive sorted unique, dedup keep=last, ffill, no lookahead. Signal is sparse buy-only (57 triggers, 2.4/yr, 3.14% active) — limited power despite 23y span; holding window monotonic 60d dominates but 20d frozen per best-practice; threshold 1% collapses, 4.8 not knife-edge but brittle to L10 Saturday erasure; randomized falsification fails (frequent longs beat true in secular bull). Generic exits are defensive long/cash (SPX <DMA etc) computed causally on daily SPY closes with same costs/lag; trailing-stop is 10% from expanding peak (minimum per spec, causal, UTC-naive); BH delta 0 verifies no lookahead; additive boost and consensus modes not used for harness (override only). DB data/market.sqlite macro_series_meta WSHOSHO 1234 rows via fred_wshosho.csv + macro_obs; instruments SPY 8428 rows 1993-01-29→2026-07-24; offline ensure_macro(offline=True) passes without live fetch; read paths are connect_readonly, no cache mutation. FRED provenance retained via macro_series_meta url fredgraph.csv?id=WSHOSHO and public-input-provenance/v1; latest vintage not ALFRED historical vintage archive; TradingView request.security D close replication verified on pinned fixture.

Follow-up

gh issue create --title "Follow-up Fed balance-sheet ROC buy overlay  WSHOSHO ROC548 vs generic" --body "Follow-up to qm-kdnj.5: Does the Pine-verbatim Fed balance-sheet ROC5>4.8 buy signal (WSHOSHO weekly W-W" --label "priority:p2" --label "pipeline:research" --label "agent:ready"
# deep-link