ColdFire / M144 Sampling Research

Feature-Parity Fixedspot Rerun

Old M144 retry30 versus fixedspot extended retry30/retry15, using BTC 120s, favorite price 0.90-0.99, strict 2026-05-07 UTC cutoff, and live trace roleplay through 2026-05-13 20:14 CT.
Parity Status
Fixed
BTC spot features no longer all zero
Fixedspot Rows
9,344
May 2-May 7 BTC one-strike rows
Combined Train Rows
63,342
1,330 flips before 2026-05-07 UTC
Live Trace Signals
2,162
latest 168h trace universe

What Was Broken

The first extended run used a dataset where the external BTC spot feed did not load. That made key BTC distance and volatility features effectively zero, so the extended retry30/retry15 comparison was not feature-parity comparable to the old M144 run.

How It Was Fixed

I built an analysis-only spot backfill DB and rebuilt the May 2-May 7 BTC dataset with --external-db. Historical Coinbase ticks are used where available; the May 4-May 8 tail is filled from Coinbase 60s candles. Production history DB was not mutated.

Feature Parity Check

ItemBroken Extended DatasetFixedspot DatasetRead
External spot rows loadedBTC=0, ETH=0, SOL=0BTC=1,309,046; ETH=759,621; SOL=397,489Spot feed now exists for feature generation.
btc_dist_to_strikeall zeromean -2.77, min -1,151.93, max 948.84Distance-to-strike signal restored.
btc_vol_60sall zeromean 0.0001266, near-zero rate 0.01%Short-horizon volatility restored.
btc_dist_normalized_volall zeromean -0.3565, zero-rate 0.00%Sigma-style distance signal restored.

Caveat: the fixedspot tail uses 60-second candle synthetic ticks, so this is analysis-grade parity, not tick-exact replay parity for the missing tail.

Training Sample

SampleRowsFlipsFlip RateMeaning
Full current-style train63,3421,3302.10%All eligible current-style rows before cutoff.
Old M144 retry30 train6,9233164.56%Original M144 sequential attempt sample.
Fixedspot E30 retry30 train7,8603664.66%Extended to May 7 with fixed spot features.
Fixedspot E15 retry15 train8,8835075.71%More frequent retry attempts; more adverse rows.

Strict OOS: May 7 UTC Sanity Test

ModelAUCdAUCPR AUCdPROrdersStatic PnL/ContractdPnLSeq15 PnLSeq30 PnLSeq60 PnL
Current primary0.5390.0000.0680.000278-3.0670.0000.8980.788-0.314
Old M144 retry300.721+0.1820.083+0.0151482.916+5.9831.0180.8760.625
Fixedspot E30 retry300.626+0.0880.064-0.0041672.919+5.9860.8090.8500.640
Fixedspot E15 retry150.560+0.0210.056-0.0111313.899+6.9662.2701.2691.059

This OOS slice is only 405 rows and 19 flips. It is useful as a sanity check after the feature-parity fix, but the deployment read comes from the live trace roleplay below.

Live Trace Roleplay: Current-Fire Veto Effect

Filter Delta is the actual-dollar impact on trades current would already fire. A good veto should block losing filled trades without sacrificing too much winner PnL.

ModelPeriodCurrent W/LCurrent PnLKept W/LKept PnLBlocked W/LFilter Delta
Old M144 retry30120h267 / 15-208.73130 / 0384.90137 / 15+593.64
Old M144 retry30144h321 / 21-298.93152 / 1403.19169 / 20+702.12
Fixedspot E30 retry30120h267 / 15-208.73195 / 12-351.8272 / 3-143.09
Fixedspot E30 retry30144h321 / 21-298.93237 / 18-498.8584 / 3-199.92
Fixedspot E15 retry15120h267 / 15-208.73188 / 13-314.8579 / 2-106.12
Fixedspot E15 retry15144h321 / 21-298.93228 / 19-451.8193 / 2-152.88

Live Trace Roleplay: Primary/Add-On View

Add-on OB PnL is the current-reject universe replayed through orderbook fill logic only when the tested model would newly fire. As Primary PnL = filter-kept current-fire PnL + add-on OB PnL.

ModelPeriodModel AUCPR AUCAdd-on W/LAdd-on OB PnLPrimary W/LPrimary PnLPrimary Delta
Old M144 retry30120h0.8710.05319 / 1-114.26149 / 1270.64+479.38
Old M144 retry30144h0.8510.05723 / 3-423.17175 / 4-19.99+278.94
Fixedspot E30 retry30120h0.8490.04725 / 3-174.79220 / 15-526.62-317.88
Fixedspot E30 retry30144h0.8350.05131 / 7-499.05268 / 25-997.90-698.97
Fixedspot E15 retry15120h0.8200.03927 / 2+389.31215 / 1574.46+283.19
Fixedspot E15 retry15144h0.8210.05034 / 6+243.72262 / 25-208.09+90.84

Readout

The feature-parity bug was real, and fixing it improves the extended models versus the broken extended run. But after rerunning with parity, old M144 is still the strongest veto: it blocks 15/15 losses in 120h and 20/21 losses in 144h. Fixedspot E30/E15 do not block enough losses as veto policies.

Recommendation

Do not replace the current M144 veto with fixedspot E30 or E15. Keep old M144 for veto validation. Fixedspot E15 is worth researching as a primary/add-on signal because it has positive add-on PnL in both 120h and 144h windows, but it should not be deployed as a veto from this run.

Artifacts

Fixedspot DB: data_collection/analysis/m144_attempt15_extended_20260513/spot_backfill_20260502_0508.db. Fixed dataset: dataset_btc_5s_one_strike_20260502_0508_fixedspot.pkl. Models: fixedspot/E30_seq_attempt_retry30_train_to_20260507.pkl and fixedspot/E15_seq_attempt_retry15_train_to_20260507.pkl. Comparison CSV: fixedspot/live_trace_fixedspot_comparison.csv.