Segment-5 answer, dated 2026-09-27 (repo HEAD e5e8dd6): on real-market fixtures the signal catalog shows no positive realistic-cost edge, and the synthetic whale/flow claim remains untested until paid historical feeds exist.

Verdict first

  • No free-data edge after realistic costs. Best validation median: −0.28 (run-#20 book, realistic preset, four fresh paths). Per the campaign verdict, the same best books/candidates sit around +0.1…+0.3 before slippage/carry/borrow — consistent with the earlier “flat edge ≈ +0.1…+0.3” synthetic claim, which is why the null is a cost/untestability result, not a sign flip.
  • Exposure caps reshape risk, not edge: cap 1.0 → 0.2 moves the validation median only −0.28 → −0.17 while max drawdown falls 0.79 → 0.23.
  • Synthetic alpha did not transfer. The synthetic run-#16 book, scored cold on all seven real paths: median −1.13 flat / −4.69 realistic.
  • Native candidates (built on these feeds) never beat a 20/50-day EMA trend benchmark (−0.46).
  • This is the first real-market number of the program, and it is null for the free-data-tradable subset (three TA weights). It is a missing-feature result, not a falsification: every funded whale/on-chain leg read a zero column, so the 27-signal whale/flow claim was never exercised. Real exchange-flow / whale / liquidation feeds (Glassnode, CryptoQuant, Tardis) are the prerequisite for any real-market edge claim.

How the books were measured

  • Data: hourly bars for BTC 2021–2025 plus ETH 2024 and SOL 2024, built from free public archives onto the frozen 24-column contract. Split discipline mirrors the synthetic segments: TUNE = BTC 2021–2023 (selection anchor), VALIDATE = BTC 2024, BTC 2025, ETH 2024, SOL 2024; paths are never pooled across segments.
  • Run-#20 real-data book (from run #19 realistic baseline 5.31 → #20 9.80 on TUNE): donchian_breakout 0.25, ema_cross_slow 0.25, roc_momentum 2.0, VOL_TARGET 0.03; 12 silent/degenerate members zeroed. Weight descent at VOL_TARGET 0.01/0.02 converges to all-cash on TUNE — the 0.03 target is what keeps the book invested at all.
Book · cost presetTUNE (BTC 2021–2023)VALIDATE median (BTC24/BTC25/ETH24/SOL24)
Run #16 synthetic book, cold on real fixtures, flat—−1.13
Run #16 synthetic book, cold on real fixtures, realistic—−4.69
Run #20 real-data book, realistic+0.63−0.28 (−0.35 / −0.71 / +0.11 / −0.20)

The receipt records no flat-cost sweep of the run-#20 book itself; the “+0.1…+0.3 flat” figure in the verdict is a range across the best books/candidates, not a per-path table. Everything in this table reproduces the receipts exactly — no imputation.

Native candidates on real feeds (realistic costs, VALIDATE medians)

CandidateMedianNote
low_turnover_trend (20/50d EMA, 2% hysteresis)−0.46Friction-minimal benchmark; all-7-paths median −0.11
dvol_regime_trend+0.01All-7 0.00; SOL flat (no DVOL history)
funding_carry_harvest−0.9153/53 entries earned carry, still net negative
oi_momentum−0.16≈1 entry/year, inert (re-arm defect found and corrected; this is the corrected number)
volume_shock_reversal−2.39Worst candidate

Data coverage on the free fixtures

Built by tools/vision_to_bars.py from public archives; full receipts in fixtures_real/COVERAGE.md (2026-09-27).

Column groupStatusSource
OHLCV (spot 1h)liveBinance Vision monthly klines, sha256-verified
funding_rateliveVision futures/um monthly fundingRate, causal hourly forward-fill
open_interestliveVision futures/um daily metrics (sum_open_interest, 5-min, base-asset contracts)
ivlive / zero per yearDeribit DVOL close/100 (SOL has no DVOL → zero)
tvlliveDefiLlama historical chain TVL, daily causal carry
dev_commitslive, partialGitHub commits/hour for canonical repos under the unauthenticated 60 req/h quota
On-chain block: exchange_netflow, active_addresses, whale_tx_count, whale_net_accum, stablecoin_supply, sopr, mvrv, miner_netflowzeroGlassnode/CryptoQuant/Santiment-class providers: paid
liquidations_long/shortzeroNo free bulk archive
unlock_pressure, social_volumezeroTokenomist / Santiment: paid

Consequences measured on the built fixtures (all 27 catalog computes were run):

ClassCountExamples
Live signals15ema_cross_fast/slow, macd_hist, rsi_mean_reversion, bollinger_fade, donchian_breakout, vol_breakout, adx_trend_strength, volume_price_confirm, roc_momentum, zscore_reversion, keltner_squeeze_break, funding_momentum, shock_reversal, oi_price_divergence
Degenerate1mvrv_zscore — zero-filled mvrv emits constant +1 stretches; treat as unusable
Silent (const 0)11all on-chain/whale sleeves (exchange_netflow_pressure, whale_tx_spike, whale_net_accum_trend, active_addresses_momentum, sopr_regime, stablecoin_supply_growth), oi_funding_squeeze (liquidation gate can never fire), shock_continuation, whale_flow_composite, whale_pump_frontrun, dev_commit_trend (partial commit coverage; long leg structurally dead)

Every funded whale/on-chain member of the run-#16 book and the dev-activity sleeve are therefore silent on real data; mvrv-style degenerate members must be zero-weighted. Real-fixture scores are not comparable to synthetic-family scores.

Why the synthetic whale/flow claim is untestable on free data

  • The synthetic edge lives in separable whale lead-ins whose false alarms fade across flow, whale-count and accumulation channels before the strike. With those columns zero-filled, the sleeves that monetize them never fire — silence is an input artifact, not evidence against the mechanism.
  • Zero liquidation columns also disable oi_funding_squeeze’s gate by construction. GitHub commit coverage is partial and structurally cannot arm dev_commit_trend’s long leg.
  • The calibrated synthetic family program tracks is the honest proxy for “would the book survive realistic microstructure”: it agrees with the real result (run-#16 book: +1.64 flat / −0.31 realistic on f4 vs −1.13/−4.69 cold on real tape).

What paid data would unlock

  • Exchange netflow, active addresses, whale entity supply (Glassnode/CryptoQuant) → re-arm exchange_netflow_pressure, whale_net_accum_trend, active_addresses_momentum, sopr_regime, stablecoin_supply_growth, and de-degenerate mvrv_zscore.
  • Liquidation history (Tardis/Bybit archive) → oi_funding_squeeze gate and liquidation-informed sizing.
  • Unlock calendars (Tokenomist) and social volume (Santiment) → unlock_pressure, social_volume legs of the composite sleeves.
  • Only then can the program re-run the segment-5 protocol (same splits, same cost model) and test the synthetic whale/flow claim against reality; until that purchase, the correct research posture is “untestable”, not “disproven”. Feeds must be archived with download dates: several providers revise recent history.

Reproduce

cd ~/dev/research/auto/market-signals
python3 -B harness/run.py --fixtures fixtures_real --cost-sweep   # scores the HEAD ensemble (run-#20 real-tune book, VOL_TARGET 0.03); runner label family4
python3 -B tools/vision_to_bars.py --symbol BTCUSDT --year 2024 \
  --lake /Users/mbp/dev/research/auto/lake --out fixtures_real/btc_2024.csv   # rebuild one fixture year

The cold run-#16 transfer table needs the historical book restored in-process — HEAD ships the run-#20 real-tune book; use the restoration snippet on Program tracks. The receipt recorded that cold sweep at HEAD 56416c4.

Run-#20 and native-candidate numbers came from the orchestrator-controlled segment-5 loop (runs #19 and #20, /tmp/ms5-harvest-receipts.md); they are receipt-backed but not re-derivable from a single committed command at this HEAD.

Sources

ClaimSourceDateCaveat
All verdict numbersCampaign receipt /tmp/ms5-harvest-receipts.md (runs #19–#20, native candidates, caps)2026-09-27Orchestrator receipt; HEAD 56416c4 for the cold-transfer sweep, repo HEAD e5e8dd6 at consolidation
Coverage/live-silent classificationfixtures_real/COVERAGE.md2026-09-27Zero columns mean “no free source”, not “no liquidations happened”
Ingest designfixtures_real/README.md, harness/real_fixtures.py2026-09-27Heuristic regime labels; whale_pump fires flow-blind on real fixtures
Paid-feed capabilitiesfixtures_real/README.md provider table2026-09-27Exact endpoint names verified 2026-09-27; plan-gated history depth not probed