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 atVOL_TARGET 0.01/0.02converges to all-cash on TUNE — the 0.03 target is what keeps the book invested at all.
| Book · cost preset | TUNE (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)
| Candidate | Median | Note |
|---|---|---|
low_turnover_trend (20/50d EMA, 2% hysteresis) | −0.46 | Friction-minimal benchmark; all-7-paths median −0.11 |
dvol_regime_trend | +0.01 | All-7 0.00; SOL flat (no DVOL history) |
funding_carry_harvest | −0.91 | 53/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.39 | Worst 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 group | Status | Source |
|---|---|---|
| OHLCV (spot 1h) | live | Binance Vision monthly klines, sha256-verified |
funding_rate | live | Vision futures/um monthly fundingRate, causal hourly forward-fill |
open_interest | live | Vision futures/um daily metrics (sum_open_interest, 5-min, base-asset contracts) |
iv | live / zero per year | Deribit DVOL close/100 (SOL has no DVOL → zero) |
tvl | live | DefiLlama historical chain TVL, daily causal carry |
dev_commits | live, partial | GitHub 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_netflow | zero | Glassnode/CryptoQuant/Santiment-class providers: paid |
liquidations_long/short | zero | No free bulk archive |
unlock_pressure, social_volume | zero | Tokenomist / Santiment: paid |
Consequences measured on the built fixtures (all 27 catalog computes were run):
| Class | Count | Examples |
|---|---|---|
| Live signals | 15 | ema_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 |
| Degenerate | 1 | mvrv_zscore — zero-filled mvrv emits constant +1 stretches; treat as unusable |
| Silent (const 0) | 11 | all 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 armdev_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-degeneratemvrv_zscore. - Liquidation history (Tardis/Bybit archive) →
oi_funding_squeezegate and liquidation-informed sizing. - Unlock calendars (Tokenomist) and social volume (Santiment) →
unlock_pressure,social_volumelegs 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 yearThe 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
| Claim | Source | Date | Caveat |
|---|---|---|---|
| All verdict numbers | Campaign receipt /tmp/ms5-harvest-receipts.md (runs #19–#20, native candidates, caps) | 2026-09-27 | Orchestrator receipt; HEAD 56416c4 for the cold-transfer sweep, repo HEAD e5e8dd6 at consolidation |
| Coverage/live-silent classification | fixtures_real/COVERAGE.md | 2026-09-27 | Zero columns mean “no free source”, not “no liquidations happened” |
| Ingest design | fixtures_real/README.md, harness/real_fixtures.py | 2026-09-27 | Heuristic regime labels; whale_pump fires flow-blind on real fixtures |
| Paid-feed capabilities | fixtures_real/README.md provider table | 2026-09-27 | Exact endpoint names verified 2026-09-27; plan-gated history depth not probed |