Forward tests

The Graveyard shows what died. This is what is being tested right now. Every bot this house activates trades a rule that was frozen and dated before its window opened — a version snapshot the engine takes at activation, which cannot be edited in place. The window closes only when the engine’s own gate passes (14 days and 30 closed paper trades), and the result is read from the trades inside that window, never written by hand. Nothing here is money: every trade is a paper fill against real Kalshi and Polymarket prices.

What “pre-registered” means here. The rule you see on each row is the one in the snapshot (strategy_versions), with the date it was frozen. The window’s open date is the activation stamp; its close date is the gate stamp (eligible_at) written by quants/engine.py, not by a person. A result is ahead or behind by the sign of the bot’s own paper P&L over 25+ closed paper trades inside the window, and too thin below that — the Graveyard’s rule. No P&L is ever summed across bots on this page. Where the record is missing a snapshot or a date, the row says so instead of filling it in.
9windows open now
9of them with a frozen rule that still matches what trades
7past the 14-day mark, still short of 30 closed trades
32windows closed
12 · 14 · 6ahead · behind · too thin, inside the window
22of the closed windows have their rule snapshot on file

Open windows

9 bots trading out-of-sample. Sorted by how close the gate is. “Closed so far” counts paper trades that have settled; the gate needs 30. A bot that rarely fires can sit past the 14-day mark for months — 7 are there now.

BotRule as frozenOpened14-day markClosed so farStill neededDays in
EIA Crude Draw Riderenergy · house bot
Falsifier, as written: Falsifier: kill if expectancy <=0 after 25 settles or if entries cluster at band top within minutes (no lag).
frozen 2026-06-11 · v1side YES · kalshi, poly · energy, commodities
day_of_week_in [2]
energy_anchor {'metric': 'crude', 'draw_above': 2000}
hour_of_day_max 20
hour_of_day_min 14
title_contains ['above']
24h volume at least 2000
YES ask at most 0.75
YES ask at least 0.3
2026-06-11 2026-06-25passed 6 24 trades 98
CPI Pre-Release Reversioneconomics · house bot
Falsifier, as written: Falsifier: kill if expectancy <=0 after 30 settles; exec check: avg fill within 1c of scan ask.
frozen 2026-06-11 · v1side YES · kalshi, poly · economics
eco_anchor {'within_minutes_before': 180, 'kinds': ['cpi', 'nfp', 'fomc']}
24h volume at least 5000
YES ask moved by (¢) -8
over the last (min) 45
YES ask at most 0.6
YES ask at least 0.25
2026-06-11 2026-06-25passed 2 28 trades 98
Weather Lock — Lowweather · house bot frozen 2026-06-11 · v1side YES · kalshi · weather
closes within (h) 18
closes no sooner than (h) 0.5
title_contains ['minimum']
wx_anchor {'kind': 'low', 'require_locked': True}
YES ask at most 0.97
YES ask at least 0.8
2026-06-11 2026-06-25passed 1 29 trades 99
Weather Lock — Highweather · house bot
Falsifier, as written: Falsifier: any locked market settling NO = lock logic wrong.
frozen 2026-06-11 · v1side YES · kalshi · weather
closes within (h) 12
closes no sooner than (h) 0.5
wx_anchor {'kind': 'high', 'require_locked': True}
YES ask at most 0.97
YES ask at least 0.8
2026-06-11 2026-06-25passed 0 30 trades 99
FOMC Arb Windoweconomics · house bot frozen 2026-06-11 · v1side YES · kalshi, poly · economics
arb_anchor {'min_gap_cents': 3, 'cheaper_only': True}
eco_anchor {'within_minutes_before': 120, 'kinds': ['fomc', 'cpi']}
24h volume at least 3000
YES ask at most 0.95
YES ask at least 0.05
2026-06-11 2026-06-25passed 02 open 30 trades 99
Tropical Formation Lagtropical · house bot
Falsifier, as written: Falsifier: kill if >=70%-gated entries settle YES <65% over 25; exec check avg fill <=0.63.
frozen 2026-06-11 · v1side YES · kalshi · tropical
closes no sooner than (h) 24
tropical_anchor {'basin': 'atlantic', 'formation_7d_above': 70}
24h volume at least 1000
YES ask at most 0.6
YES ask at least 0.2
2026-06-11 2026-06-25passed 0 30 trades 98
Crypto Greed Fadecrypto · house bot
Falsifier, as written: Falsifier: EXEC kill if avg NO fill exceeds that over first 15 fills (longshot-fader protocol); thesis kill if expectancy <=0 after 30 settles.
frozen 2026-06-11 · v1side NO · poly · crypto
sentiment_anchor {'above': 80}
24h volume at least 3000
ya_change_min_cents 8
over the last (min) 60
YES ask at most 0.7
YES ask at least 0.4
2026-06-11 2026-06-25passed 0 30 trades 98
Grok: Grok: Grok: Kalshi Panic Reversionworld-events · house bot frozen 2026-09-10 · v2side YES · kalshi · world-events, politics, other
open_interest_min 1000
24h volume at least 7500
YES ask moved by (¢) -8
ya_change_min_cents -20
over the last (min) 30
YES ask at most 0.48
YES ask at least 0.25
2026-09-09 2026-09-23 0 30 trades 86 to go
Grok: Grok: Grok: Grok: Kalshi Panic Reversionworld-events · house bot frozen 2026-09-10 · v1side YES · kalshi · world-events, politics, other
open_interest_min 1000
24h volume at least 7500
YES ask moved by (¢) -8
ya_change_min_cents -20
over the last (min) 30
YES ask at most 0.48
YES ask at least 0.25
2026-09-10 2026-09-24 0 30 trades 77 to go

Closed windows

32 windows the gate has closed, newest first. “In the window” is the pre-registered result; “since then” is what the same rule did after the window closed, on the same count-only terms. In the window: 12 ahead, 14 behind, 6 too thin. Since then: 4 ahead, 11 behind, 11 too thin, 6 with no trade yet.

BotRule as frozenWindowPaper trades in itIn the windowSince thenNow
My Crypto Dip-Buyercrypto no snapshot on fileside YES · kalshi, poly · crypto 2026-08-26 → 2026-09-0914 days 1,583 behind ahead1,104 trades still trading on paper
Grok: Grok: Grok: Current-Events Panic Reversionother · house bot frozen 2026-07-09 · v1side YES · poly · other, world-events 2026-07-09 → 2026-09-0153 days 38 behind too thin23 trades still trading on paper
Launch Go Riderother · house bot frozen 2026-06-11 · v1side YES · kalshi, poly · other 2026-06-11 → 2026-08-3180 days 30 ahead too thin6 trades still trading on paper
VIX-Calm Stocks Reversionstocks · house bot frozen 2026-06-11 · v1side YES · kalshi, poly · stocks 2026-06-11 → 2026-08-2777 days 30 behind too thin15 trades still trading on paper
Overnight Thin-Book Reversionpolitics · house bot frozen 2026-06-11 · v1side YES · poly · politics, economics 2026-06-11 → 2026-08-1867 days 30 behind behind31 trades still trading on paper
Grok: Grok: Kalshi Panic Reversionworld-events · house bot frozen 2026-07-10 · v1side YES · kalshi · world-events, politics, other 2026-07-10 → 2026-08-1334 days 30 behind too thin9 trades still trading on paper
Grok: Grok: Grok: Kalshi Panic Reversionworld-events · house bot frozen 2026-07-02 · v1side YES · kalshi · world-events, politics, other 2026-07-02 → 2026-08-1240 days 31 ahead too thin12 trades still trading on paper
Grok: Grok: Kalshi Panic Reversionworld-events · house bot frozen 2026-07-05 · v1side YES · kalshi · world-events, politics, other 2026-07-05 → 2026-08-1237 days 30 ahead too thin10 trades still trading on paper
Grok: Grok: Kalshi Panic Reversionworld-events · house bot frozen 2026-07-02 · v1side YES · kalshi · world-events, politics, other 2026-07-02 → 2026-08-1140 days 30 ahead too thin14 trades still trading on paper
Grok: Kalshi Panic Reversionworld-events · house bot frozen 2026-07-06 · v1side YES · kalshi · world-events, politics, other 2026-07-06 → 2026-08-1136 days 30 ahead too thin14 trades still trading on paper
Grok: Grok: Politics Spike Fadepolitics · house bot frozen 2026-06-19 · v1side YES · poly · politics 2026-06-19 → 2026-08-0748 days 30 behind behind60 trades still trading on paper
Grok: Kalshi Panic Reversionworld-events · house bot frozen 2026-07-05 · v3side YES · kalshi · world-events, politics, other 2026-06-19 → 2026-08-0749 days 41 ahead too thin17 trades still trading on paper
Grok: Grok: Kalshi Panic Reversionworld-events · house bot frozen 2026-07-02 · v2side YES · kalshi · world-events, politics, other 2026-06-24 → 2026-08-0744 days 36 ahead too thin19 trades still trading on paper
Grok: Kalshi Panic Reversionworld-events · house bot frozen 2026-07-10 · v3side YES · kalshi · world-events, politics, other 2026-06-24 → 2026-08-0743 days 39 ahead too thin16 trades still trading on paper
Grok: Grok: Grok: Current-Events Panic Reversionother · house bot frozen 2026-07-03 · v1side YES · poly · other, world-events 2026-07-03 → 2026-07-3127 days 35 behind behind259 trades still trading on paper
Grok: Politics Spike Fadepolitics · house bot frozen 2026-06-19 · v2side YES · poly · politics 2026-06-08 → 2026-07-2849 days 31 behind behind70 trades still trading on paper
Kalshi Panic Reversionworld-events · house bot frozen 2026-07-06 · v4side YES · kalshi · world-events, politics, other 2026-06-11 → 2026-07-2746 days 30 ahead ahead41 trades still trading on paper
WX Forecast Edge (YES)weather · house bot no snapshot on fileside YES · kalshi · weather 2026-06-21 → 2026-07-0514 days 551 behind behind3,014 trades still trading on paper
WX Forecast Edge (NO)weather · house bot no snapshot on fileside NO · kalshi · weather 2026-06-21 → 2026-07-0514 days 553 behind behind3,008 trades still trading on paper
Arb — Cheap YESeconomics · house bot frozen 2026-06-11 · v1side YES · kalshi, poly · economics, sports 2026-06-11 → 2026-07-0120 days 30 ahead behind119 trades still trading on paper
Arb — Cheap NOeconomics · house bot frozen 2026-06-11 · v1side NO · kalshi, poly · economics, sports 2026-06-11 → 2026-07-0120 days 30 behind behind119 trades still trading on paper
My Weather Longshot Fadeweather no snapshot on fileside NO · kalshi, poly · weather 2026-06-14 → 2026-06-2814 days 750 behind behind4,488 trades still trading on paper
Calibrated Tail v2other · house bot frozen 2026-06-11 · v1side YES · poly · crypto, other, sports, commodities, economics, stocks 2026-06-11 → 2026-06-2514 days 115 behind ahead675 trades still trading on paper
Weather Longshot Faderweather · house bot frozen 2026-06-11 · v1 edited after freezingside NO · kalshi · weather 2026-06-11 → 2026-06-2514 days 167 behind behind1,023 trades still trading on paper
Grok: Current-Events Panic Reversionother · house bot frozen 2026-06-09 · v1side YES · poly · other, world-events 2026-06-09 → 2026-06-2314 days 82 ahead ahead655 trades still trading on paper
Grok: Grok: Current-Events Panic Reversionother · house bot frozen 2026-07-09 · v4side YES · poly · other, world-events 2026-06-09 → 2026-06-2314 days 32 ahead behind208 trades still trading on paper
WX Forecast Edge - NYC Highweather · house bot no snapshot on fileside YES · kalshi · weather 2026-06-21 → 2026-06-210 days — closed the day it opened, the gate was not applied 0 too thin no trade yet0 trades archived
WX Forecast Edge - Denver Lowweather · house bot no snapshot on fileside YES · kalshi · weather 2026-06-21 → 2026-06-210 days — closed the day it opened, the gate was not applied 0 too thin no trade yet0 trades archived
WX Forecast Edge - DC Lowweather · house bot no snapshot on fileside YES · kalshi · weather 2026-06-21 → 2026-06-210 days — closed the day it opened, the gate was not applied 0 too thin no trade yet0 trades archived
WX Forecast Edge - Phoenix Lowweather · house bot no snapshot on fileside YES · kalshi · weather 2026-06-21 → 2026-06-210 days — closed the day it opened, the gate was not applied 0 too thin no trade yet0 trades archived
WX Forecast Edge - Minneapolis Lowweather · house bot no snapshot on fileside YES · kalshi · weather 2026-06-21 → 2026-06-210 days — closed the day it opened, the gate was not applied 0 too thin no trade yet0 trades archived
WX Forecast Edge - Austin Lowweather · house bot no snapshot on fileside YES · kalshi · weather 2026-06-21 → 2026-06-210 days — closed the day it opened, the gate was not applied 0 too thin no trade yet0 trades archived

Gaps in the record

What the record does not hold, printed rather than filled in.

How a window works

Opens
when a bot is activated out-of-sample. The engine snapshots its rule as a numbered version at that moment.
Frozen rule
the snapshot. Changing a rule creates a new version and a new window; the old one keeps its date.
Closes
when quants/engine.py _maybe_promote finds both: at least 14 days since activation and at least 30 closed paper trades. It stamps the close time and moves the bot to live.
Result
ahead / behind by the sign of the bot’s own paper P&L inside the window over 25+ closed trades; too thin under that. Counts of bots, never a sum of money across them.
As JSON
/api/forward-tests/summary.json — the same counts and rows, read-only, cached ten minutes. Read 2026-09-18 10:21 UTC. The dead: The Graveyard. The signals: Trade Bot Dictionary.