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.
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.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.
| Bot | Rule as frozen | Opened | 14-day mark | Closed so far | Still needed | Days 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, commoditiesday_of_week_in [2]energy_anchor {'metric': 'crude', 'draw_above': 2000}hour_of_day_max 20hour_of_day_min 14title_contains ['above']24h volume at least 2000YES ask at most 0.75YES 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 · economicseco_anchor {'within_minutes_before': 180, 'kinds': ['cpi', 'nfp', 'fomc']}24h volume at least 5000YES ask moved by (¢) -8over the last (min) 45YES ask at most 0.6YES 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 · weathercloses within (h) 18closes no sooner than (h) 0.5title_contains ['minimum']wx_anchor {'kind': 'low', 'require_locked': True}YES ask at most 0.97YES 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 · weathercloses within (h) 12closes no sooner than (h) 0.5wx_anchor {'kind': 'high', 'require_locked': True}YES ask at most 0.97YES 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 · economicsarb_anchor {'min_gap_cents': 3, 'cheaper_only': True}eco_anchor {'within_minutes_before': 120, 'kinds': ['fomc', 'cpi']}24h volume at least 3000YES ask at most 0.95YES 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 · tropicalcloses no sooner than (h) 24tropical_anchor {'basin': 'atlantic', 'formation_7d_above': 70}24h volume at least 1000YES ask at most 0.6YES 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 · cryptosentiment_anchor {'above': 80}24h volume at least 3000ya_change_min_cents 8over the last (min) 60YES ask at most 0.7YES 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, otheropen_interest_min 100024h volume at least 7500YES ask moved by (¢) -8ya_change_min_cents -20over the last (min) 30YES ask at most 0.48YES 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, otheropen_interest_min 100024h volume at least 7500YES ask moved by (¢) -8ya_change_min_cents -20over the last (min) 30YES ask at most 0.48YES 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.
| Bot | Rule as frozen | Window | Paper trades in it | In the window | Since then | Now |
|---|---|---|---|---|---|---|
| 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.
- 10 of 32 closed windows have no version snapshot on file for the version that traded, so their “rule as frozen” cannot be shown — the live rule is not printed in its place.
- 1 closed window whose live rule no longer matches its snapshot — the rule was edited in place after it was frozen, which the design says cannot happen.
- 6 windows closed the day they opened with zero trades — stamped eligible without the gate.
- Sports Greed Fade — out-of-sample with no activation date on record, so no window can be measured.
- Calibrated Favorites — out-of-sample with no activation date on record, so no window can be measured.
- Calibrated Longshot Fade — out-of-sample with no activation date on record, so no window can be measured.
- Current-Events Panic Reversion — live with no window on record: activated 2026-05-23, before the gate existed.
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_promotefinds 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.