Zenith Research Report26 Jun 2026 – 25 Sep 2026

No trading idea earned real money. Every test used simulated (paper) money or historical data, and the research is now paused.

✓ 1 Confirmed✕ 15 Didn't work? 3 Inconclusive~ 2 Real but small– 5 Not pursued• 3 Finished29 studies · 10 autoresearch runs

Research timeline

Every study, from first work to final result. Select a row to jump to its report.

View as table
StudyAreaDatesVerdict
Do surprising economic numbers move the dollar-yen predictably?Forex (currency trading)2026-06-26 – 2026-06-30✕ Didn't work
Program 1 overall: four single-pair ideas, four sealed failuresForex (currency trading)2026-06-26 – 2026-07-04✕ Didn't work
EUR/USD news-reaction loop (the shakedown run)Autoresearch loops2026-06-26 – 2026-06-29✕ Didn't work
USD/JPY economic-surprise loopAutoresearch loops2026-06-29 – 2026-06-30✕ Didn't work
Does dollar-yen move the same way at the same time each day?Forex (currency trading)2026-06-30 – 2026-07-02✕ Didn't work
USD/JPY time-of-day pattern loopAutoresearch loops2026-06-30 – 2026-07-02✕ Didn't work
Can the US-Japan interest-rate gap tell us which way dollar-yen goes?Forex (currency trading)2026-07-03 – 2026-07-03✕ Didn't work
USD/JPY interest-rate-gap (carry) loopAutoresearch loops2026-07-03 – 2026-07-03✕ Didn't work
Final try: can bond-market expectations time the dollar-yen carry trade?Forex (currency trading)2026-07-04 – 2026-07-04✕ Didn't work
A weekly basket of five currencies ranked by interest rate and trendForex (currency trading)2026-07-04 – 2026-07-06✕ Didn't work
USD/JPY yield-curve expectations loop (last single-pair try)Autoresearch loops2026-07-04 – 2026-07-04✕ Didn't work
Five-currency carry + momentum portfolio loopAutoresearch loops2026-07-05 – 2026-09-25✕ Didn't work
Live paper test: research winner vs a simple trend ruleForex (currency trading)2026-07-06 – 2026-09-25? Inconclusive
Teaching an AI to read currency news headlinesForex (currency trading)2026-07-06 – 2026-09-23– Not pursued
First crypto model: can a machine-learned model beat Kalshi's Bitcoin and Ether prices?Kalshi crypto markets2026-07-09 – 2026-09-23✕ Didn't work
Kalshi Bitcoin/Ether contract forecaster, first loopAutoresearch loops2026-07-09 – 2026-07-13✕ Didn't work
Second crypto model: a stricter re-testKalshi crypto markets2026-07-13 – 2026-07-31✕ Didn't work
Kalshi Bitcoin/Ether forecaster, second loop (walk-forward)Autoresearch loops2026-07-13 – 2026-09-23✕ Didn't work
How many seconds does Kalshi take to catch up with Bitcoin's price?Kalshi crypto markets2026-07-16 – 2026-07-21~ Real but small
Could a paid data feed deliver economic numbers fast enough to trade on?Other ideas2026-07-16 – 2026-09-25✕ Didn't work
Other data-feed ideas that were surveyed but never testedOther ideas2026-07-16 – 2026-09-25– Not pursued
A 5-second recording of crypto prices and Kalshi quotesData collection2026-07-16 – 2026-09-25• Finished
Using the market 'fear index' (VIX) as a switch for crypto modelsData collection2026-07-16 – 2026-08-29• Finished
Kalshi S&P 500 / Nasdaq-100 range contracts (never launched)Autoresearch loops2026-07-16 – 2026-09-23– Not pursued
Second model on paper: promised edge vs real results over 10 weeksKalshi crypto markets2026-07-17 – 2026-09-23✕ Didn't work
Third crypto model: can patient "maker" orders beat Kalshi crypto?Kalshi crypto markets2026-07-21 – 2026-08-29✕ Didn't work
Are cheap and expensive crypto contracts mispriced near expiry?Kalshi crypto markets2026-07-25 – 2026-09-20✕ Didn't work
Does Bitcoin's choppiness predict Ether's next few minutes?Kalshi crypto markets2026-07-26 – 2026-09-20~ Real but small
Do busy order books fill your orders at worse prices?Kalshi crypto markets2026-07-31 – 2026-08-27✓ Confirmed: a cost, not a profit
Does the bond market lead Kalshi's 10-year yield contracts?Other Kalshi markets2026-07-31 – 2026-08-28? Inconclusive
Does the oil price lead Kalshi's Brent crude contracts?Other Kalshi markets2026-07-31 – 2026-08-01? Inconclusive
Is Polymarket US cheaper to trade on than Kalshi?Sports & venues2026-08-03 – 2026-08-27• Finished (measurement)
Could euro-dollar contracts on Kalshi be tested?Other Kalshi markets2026-08-07 – 2026-08-28– Not pursued
Are Kalshi's sports prices fair, or do underdogs get overpriced?Sports & venues2026-08-07 – 2026-09-11✕ Didn't work
Sports trading ideas list: what was tried, closed or never startedSports & venues2026-08-07 – 2026-09-11– Not pursued
Can a model make regular index-fund buying a little smarter?Other ideas2026-08-08 – 2026-08-28– Not pursued
Kalshi crypto market-maker loop (v3), one overnight windowAutoresearch loops2026-08-27 – 2026-08-31✕ Didn't work
Do stocks move after Congress members' trades are made public?Public filings2026-08-28 – 2026-09-02✕ Didn't work
Do stocks rise after company insiders report buying their own shares?Public filings2026-09-02 – 2026-09-03✕ Didn't work

How every idea was tested

Write the rules first

Before looking at results, the question, the data, the test and the pass mark were written down and frozen, so the answer could not be bent after the fact.

Lock away a final test

The most recent slice of data was sealed off. Research only used the older data. The sealed slice was opened once, at the end, to see if the idea still worked on data it had never seen.

Demand enough to pay for trading

Each study set a minimum gain (the "floor") that would cover trading costs with room to spare. Beating zero was not enough.

Run a placebo

Where possible, the same test was run on random ordinary days. If the placebo also "worked", the result was noise.

Only then, paper trade

An idea that passed would trade with simulated money first, and only after that with a small amount of real money. None reached real money.

Kalshi crypto markets

Kalshi is a US exchange where people trade yes/no contracts that pay $1 if something happens, such as "Bitcoin closes above $85,000 at 5 pm". These studies asked whether a computer model could price those contracts better than the market.

First crypto model: can a machine-learned model beat Kalshi's Bitcoin and Ether prices?

✕ Didn't work9 Jul – 23 Sep

The questionCan a model trained on past crypto prices estimate the chance that Bitcoin or Ether ends inside a Kalshi price band better than the market's own price does, well enough to profit after fees?

What we foundThe model only looked good on the calm period it was trained on. On live markets it was confidently wrong, and it lost money within two days. No real money was ever used.

Hypothetical

If it had worked

Hypothetical: the lane placed about 4,300 one-contract trades a day. At the claimed about +$0.23 per contract, that would have been roughly +$1,000/day on paper.

What actually happened

Paper trading lost $143.93 in the first two days. Over the full paper run (326,671 trades) it lost $7,391.55, about -$0.023 per contract, against a claimed +$0.23. When the model said 60-80% YES, the actual rate was 41.8%, close to the market's 45.1%.
Research score (best)1.099Looked strong on historical data under the v1 scorer
First 2 days of paper trading4,163 trades, -$143.93, 17.9% winsLost money immediately instead of making it
Skill vs market, research vs live+0.064 vs -0.298 (log-loss)The model's advantage flipped sign on new data
Whole v1 paper lane (07-11 to 09-23)326,671 trades, -$0.023/trade vs +$0.23/trade claimedThe model claimed about 23 cents of edge per contract and lost about 2 cents

v1 paper lane: what the model promised vs what it made

The promised line climbs to about +$75k while real results slide to about -$7.4k

View data as table
Details

WhyAn early study found spot crypto prices move before Kalshi's contract prices, suggesting the market might be slow and beatable by a model.

DataKalshi hourly Bitcoin/Ether contracts (KXBTC, KXBTCD, KXETH, KXETHD) with 1-minute price history plus spot crypto prices (from FMP); pinned research dataset spanning roughly 2026-05-10 to 2026-07-08.

MethodAn AI agent repeatedly edited a single model file and was scored by a frozen, tamper-proof scorer (a Sharpe-style score across 5 data slices). A final 'sealed' test set was held back. Before spending it, the winning model was run as a zero-money paper trader on live markets to see if its claimed edge showed up.

Cost$0 real money; about 2 days of paper trading to falsify

9 Jul
Sandbox built; baseline score 0.591
10 Jul
Run 1 ends at score 0.861 after 69 experiments
11 Jul
Paper trader starts with the run-2 winner (score 1.099)
13 Jul
Post-mortem: model falsified after 2 days of paper trading
21 Jul
v1 lane hidden from dashboard; kept trading as a control
23 Sep
Paper lanes stopped
Sources
  • prediction/docs/research/paper_edge_postmortem.md
  • prediction/research/kxcrypto_v1/log.md
  • prediction/research/kxcrypto_v1/metrics.json
  • prediction/paper/summary.md
  • prediction/paper/ledger.jsonl
  • prediction/HANDOFF.md

Second crypto model: a stricter re-test

✕ Didn't work13 Jul – 31 Jul

The questionWith a stricter, more honest scorer that only trains on the past, can a model still beat Kalshi's crypto contract prices?

What we foundThe model scored well on history but lost money when paper trading live, so the final exam was deliberately left unused. It was kept only as a measuring stick.

Hypothetical

If it had worked

Hypothetical: about 3,200 one-contract trades a day at the claimed about +$0.036 each (average cost about 16 cents per contract) would net about +$115/day, roughly +$220 per $1,000 of contracts bought.

What actually happened

On paper it realized about -$0.022 per trade by the decision date, a steady gap of about -$0.058 per trade versus its claim. The sealed test stays unspent.
Research score0.278 to 1.4399Best score under the strict scorer (average minus spread of daily Sharpe ratios)
Trials counted572Used to penalise luck if the sealed test were ever run
Paper evidence at decision (07-31)+$0.0361 expected vs -$0.0218 realized per trade, over 37,649 tradesThe claimed edge did not show up live; the shortfall was stable, not shrinking

v2 search: score of each experiment and best so far

Most gains came early; the search levelled off near 1.44

View data as table
Details

WhyThe v1 post-mortem blamed a scorer that let the model peek at future data and a single-regime dataset. v2 fixed both, so a model that scored well here should be more trustworthy.

DataKalshi hourly Bitcoin/Ether contracts on the full archive (about March to July 2026, roughly 2.2 times v1's history), with spot prices; about 41,000 simulated trades in the winning model's research score.

MethodWalk-forward testing: each test period is scored only with a model trained on earlier data. The model also had to be better calibrated than the market on the exact trades it would take. An AI agent ran 572 trials. The sealed final test would only be spent if a live paper trader confirmed the edge over about two weeks.

Cost$0 real money

13 Jul
Stricter v2 scorer built; baseline score 0.278
17 Jul
Search finishes at 1.4399 after 204 iterations / 572 trials
17 Jul
Winning model starts paper trading
31 Jul
Decision: do not spend the sealed test
Sources
  • prediction/research/kxcrypto_v2/SUMMARY.md
  • prediction/research/kxcrypto_v2/RULER.md
  • prediction/research/kxcrypto_v2/metrics.json
  • prediction/research/kxcrypto_v2/log.md
  • prediction/HANDOFF.md
  • prediction/docs/research/paper_edge_postmortem.md

How many seconds does Kalshi take to catch up with Bitcoin's price?

~ Real but small16 Jul – 21 Jul

The questionWhen Bitcoin or Ether moves on the spot market, how long does it take Kalshi's contract prices to follow?

What we foundKalshi crypto prices do trail the spot market, but only by about 20 seconds. A bot deciding every 5 minutes cannot use this.

Hypothetical

If it had worked

Hypothetical: a bot reacting within about 20 seconds of a big spot move would post or take orders before Kalshi reprices. Only the largest ~10% of moves reprice the book by more than the ~3.5 cent taker round-trip cost, so only a fee-free maker order could plausibly profit.

What actually happened

The lead is real but short. Its main use was to design v3, a fast maker-only sandbox. v3 then found that the orders which get filled are mostly the ones that lose.
Peak delayabout +20 secondsKalshi prices follow spot about 20 seconds later
Strength at peakr = +0.23 (big moves +0.35)A moderate, real relationship
Catch-up completeby +30 to +60 sAfter a minute there is nothing left to trade

Bitcoin daily contracts: how strongly Kalshi follows spot, by delay

Peak at +20 seconds, nothing before zero, gone by +60 seconds

View data as table
Details

WhyIf Kalshi lags spot, a fast trader could act in the gap. It could also explain why the 5-minute paper trader underperformed.

DataOur 10-second quote recordings (spot quotes from FMP plus Kalshi best bid/ask), 2026-07-16 to 07-20, 5 days; for example 600 KXBTCD markets.

MethodCorrelated each spot move with Kalshi price changes at delays from -60 to +300 seconds. A clean result shows nothing at negative delays (Kalshi never leads) and a peak at some positive delay.

CostNo direct cost recorded.

16 Jul
Seconds-level quote recorder starts
20 Jul
Study run on 5 days of data
21 Jul
Recorder sped up from 10 s to 5 s to catch the window
Sources
  • prediction/docs/research/quote_repricing_lag.md
  • prediction/HANDOFF.md

Second model on paper: promised edge vs real results over 10 weeks

✕ Didn't work17 Jul – 23 Sep

The questionWhen the v2 model trades live Kalshi crypto markets with pretend money, does it earn what it predicts it will earn per trade?

What we foundAcross 222,631 pretend trades the model expected to make about 3.6 cents a trade and instead lost about 2.6 cents. The shortfall never closed.

Hypothetical

If it had worked

Hypothetical: about 3,200 trades a day at +$0.036 would earn about +$115/day (~$8,000 over the 10 weeks) while buying contracts that cost about 16 cents each on average.

What actually happened

Realized -$5,736.71 on paper (about -$83/day), versus +$8,012 the model expected: a $13,700 swing over 69 days. The stale-data study showed even trades with favourable fresh information lost (-$0.017 realized vs +$0.035 expected), so the model itself was miscalibrated on new data.
Expected profit per trade+$0.036What the model claimed on average per contract
Realized profit per trade-$0.026What actually happened after fees
Gap-$0.062 per tradeAbout 6 cents per contract lost to the market knowing better; flat from July to September
Totals222,631 trades; -$5,736.71 realized vs +$8,012 expectedPretend money only; 14.4% of trades won

v2 paper lane: promised vs actual profit

The two lines split from day one and keep diverging at a steady rate

View data as table

v2 paper lane: profit per trade each day

Expected stays near +3.6 cents; realized sits below zero almost every day

View data as table
Details

WhyPaper trading is the cheapest honest check before risking money. The gap between predicted and realized profit also measures how much a trader loses to better-informed counterparties (adverse selection).

DataOur own paper-trading ledger (prediction/paper/ledger.jsonl): 222,631 settled one-contract v2 trades on Kalshi crypto contracts, 2026-07-17 to 2026-09-23.

MethodEvery 5 minutes the model picked contracts it thought were mispriced and logged a pretend order, filled at the next real quote. At settlement each trade's result was compared with the model's expected profit at the time of the decision. A side study checked whether stale data explained the losses.

Cost$0 real money; ran 2026-07-17 to 2026-09-23

17 Jul
v2 lane goes live
21 Jul
Stale data ruled out as the main cause of losses
31 Jul
Decision not to spend the sealed test; lane kept as a control
29 Aug
The study that used the lane as a benchmark (v3) closes
12 Sep
176,461 trades, -$4,232 cumulative
23 Sep
Lane stopped as 'going nowhere'
Sources
  • prediction/paper/ledger.jsonl
  • prediction/paper/summary.md
  • prediction/HANDOFF.md
  • prediction/docs/research/paper_staleness_attribution.md
  • prediction/docs/research/research_ledger_and_pause_brief_2026-08-28.md

Third crypto model: can patient "maker" orders beat Kalshi crypto?

✕ Didn't work21 Jul – 29 Aug

The questionIf a bot only posts resting orders (which pay no fee on these series) and reacts within seconds to spot moves, can it make money after accounting for which orders actually get filled?

What we foundPosting resting orders did not escape the problem. The orders that get filled are mostly the ones the market wanted to fill, so the bot loses.

Hypothetical

If it had worked

Hypothetical: roughly 1,000 simulated fills a day (27,722 baseline fills over the 28-day research period) at even +1 cent each, fee-free, would net about +$10/day per contract size.

What actually happened

The score stayed at 0.0. A 30-second momentum signal had real forecasting skill in all six slices, but the filled trades were badly calibrated in 4-5 of 6 slices under every model. The sealed test was left unspent and the study closed.
Best score0.0 (never moved)No model beat the market in every time slice
Experimentsabout 340Logistic, XGBoost, neural nets, many filters; none kept
Best near-miss2 of 6 slices profitable (fold mean 0.123)The other slices lost in the same kinds of trades
Baseline fills27,722 of 110,375 posted ordersAbout 25% of orders filled, and those were the worse ones
Details

WhyTaking liquidity lost about 6 cents a trade. Spot leads Kalshi by about 20 s, maker fees are $0, and H7 shows when not to post, so a fast maker bot was the remaining candidate.

Data1,110,146 event-driven decision moments from our 5-second quote recordings, 2026-07-21 to 08-26 (28 research days, 1 embargo day, 8 sealed days), with a frozen fill simulator that only counts an order filled if the price trades strictly through it.

MethodPre-registered design on 07-21, before the data existed. The scorer requires positive skill and better calibration than the market on filled trades in each of six time slices; the starting score is 0 by design. An AI agent then ran about 340 experiments in one 12-hour window.

Cost$0 money; one 12-hour run on the local LLM

21 Jul
Design pre-registered
27 Aug
Dataset pinned, built and frozen; H7 gate adopted
28 Aug
Search window 1 launched (17:13 UTC)
29 Aug
Window ends at score 0.0 after ~340 experiments; study closed
Sources
  • prediction/research/kxcrypto_v3/log.md
  • prediction/research/kxcrypto_v3/RULER.md
  • prediction/docs/research/v3_pin_ruling.md
  • prediction/docs/research/kxcrypto_v3_ruler_design.md
  • prediction/HANDOFF.md
  • prediction/docs/research/research_ledger_and_pause_brief_2026-08-28.md

Are cheap and expensive crypto contracts mispriced near expiry?

✕ Didn't work25 Jul – 20 Sep

The questionNear expiry, do cheap 'longshot' and expensive 'favourite' Kalshi crypto contracts win more or less often than their prices imply?

What we foundThere was a pattern in older data, but it flipped on fresh data and kept shrinking. It was not used.

Hypothetical

If it had worked

Hypothetical: a maker buying 10-20 cent contracts 30 minutes before close at +7.7 cents of edge would gain about +$0.077 per contract, roughly +$500 per $1,000 staked at 15 cents each.

What actually happened

On fresh data the 30-minute gaps were near zero or reversed (e.g. 20-30 cent bucket -2.4 cents), so no correction overlay went into v3. The weekly cumulative gap shrank from +3.8 to +1.5 cents.
30 min out, 10-20 cent contracts (original)+7.7 centsWon 22.4% of the time vs a 14.7-cent price
Fresh data re-test3 of 7 tested buckets flipped signThe pattern did not hold on new data
Weekly 30-min cheap-contract gap+3.8 cents (07-26) to +1.5 cents (09-20)Fading as data accumulates
5 min out, expensive contractsabout +1.0 centSmall, below taker fees

30 minutes before close: win rate minus price, old vs fresh data

The original tilt (cheap too cheap, dear too dear) mostly disappears on fresh data

View data as table

Weekly readings of the mispricing gaps

The 30-minute cheap-contract gap shrinks week by week

View data as table
Details

WhyBetting markets often overprice longshots (the favourite-longshot bias). If Kalshi crypto shows a stable pattern, a model could correct prices toward reality.

DataSettled Kalshi crypto markets with 1-minute price history: about 35,000 liquid markets 2026-01-01 to 07-25, then a fresh strip after 07-25; weekly cumulative readings to 09-20 (about 93,000 market readings per horizon).

MethodGrouped contracts by price (0-10 cents, 10-20 cents, ...) at 30, 15 and 5 minutes before close, and compared the win rate with the price. The re-test used confidence bands that account for related strikes and checked whether the pattern held on fresh data.

CostNo direct cost recorded.

25 Jul
First run: classic bias at 5 min, reversed and larger at 30 min
27 Aug
Clustered re-test: 30-min pattern flips on fresh data; not adopted
20 Sep
Last weekly reading before snapshots stopped
Sources
  • prediction/docs/research/flb_calibration.md
  • prediction/docs/research/h8_clustered_retest.md
  • prediction/data/research_signals.jsonl
  • prediction/docs/research/research_ledger_and_pause_brief_2026-08-28.md

Does Bitcoin's choppiness predict Ether's next few minutes?

~ Real but small26 Jul – 20 Sep

The questionDoes a measure of how 'choppy' Bitcoin's price is right now help predict whether Ether's volatility will rise over the next 5-60 minutes, beyond what Ether's own data says?

What we foundThe link is real and stable but small. It is useful as one input to a model, not a trading strategy by itself.

Hypothetical

If it had worked

Hypothetical: as a model input it would slightly sharpen volatility estimates for Ether contracts. With a correlation near 0.1 it cannot be traded on its own; its value depends on a host strategy that already makes money.

What actually happened

It was built into v3 as features. v3 still scored 0.0, so the signal never produced money.
5-minute signal (re-test)+0.106 rank correlation, 31/31 days positive, p = 0.028Small but consistent
Reverse direction (ETH to BTC)+0.095Almost as strong, so read as shared volatility, not BTC leadership
Latest weekly reading (09-20)+0.102 vs placebo +0.029; 65/66 days positiveHeld steady for two months

Weekly readings: Bitcoin-to-Ether signal vs placebo

The real signal stays near +0.10-0.11; the placebo stays near zero

View data as table
Details

WhyBitcoin is thought to lead price discovery in crypto. A cross-asset volatility clue could be a cheap feature for a crypto model.

DataSpot Bitcoin and Ether quotes from our seconds-level quote recordings (quotes from FMP): 11 days at first (to 07-26), a fresh 31-day window 07-27 to 08-26, then weekly re-reads to 09-20 (66 days).

MethodMeasured Bitcoin's choppiness with the 'Roll' estimator after removing what Ether's own state explains, then correlated it with Ether's future volatility change. A shuffled-days placebo checks it is not a time-of-day effect. A frozen re-test on fresh data followed.

CostNo direct cost recorded.

26 Jul
First screen: survives, BTC to ETH only
27 Aug
Frozen re-test on 31 fresh days: PASS
27 Aug
Added as features to the v3 dataset
20 Sep
Last weekly reading before snapshots stopped
Sources
  • prediction/docs/research/roll_cross_vol.md
  • prediction/docs/research/h1a_retest.md
  • prediction/data/research_signals.jsonl
  • prediction/docs/research/research_ledger_and_pause_brief_2026-08-28.md
  • prediction/HANDOFF.md

Do busy order books fill your orders at worse prices?

✓ Confirmed: a cost, not a profit31 Jul – 27 Aug

The questionIf you post a resting order on Kalshi crypto, do fills during hectic order-book activity lose more than fills during calm periods?

What we foundYes: when the order book is busy, your orders get filled more often and lose more. But even calm-book fills lose money, so this says when not to trade, not how to profit.

Hypothetical

If it had worked

Hypothetical: a maker bot skipping hot-book moments would lose about 2.8 cents less per fill. It would still average about -3.7 cents per fill, so the rule only makes sense on top of a strategy that already has an edge.

What actually happened

The rule was built into v3 as a gate. v3 still could not produce a profitable model, because the filled orders were still the market's pick.
Calm minus hot loss+2.83 cents (95% band 2.29 to 3.49)Calm-book fills lose about 2.8 cents less than hot-book fills
Randomization p0.0001Very unlikely to be chance
Loss per fill, calm to hot-3.7 to -6.5 centsEvery bucket still loses money
Fill rate, calm to hot22.5% to 31.1%Hot books fill you more often and at worse prices

Loss per filled order by how busy the book was (held-out data)

Every bucket loses; busier books lose more

View data as table
Details

WhyThe paper traders were losing about 6 cents a trade to better-informed counterparties. A signal for when not to post orders could reduce that loss for a maker strategy.

DataOur 5-second quote recordings, 2026-07-16 to 07-30 (15 days, 13,429 markets, about 781,000 usable rows); fills simulated from real quote movements.

MethodPre-registered test: a book-activity score was computed for each moment and split into four buckets using cutpoints fixed on early data. On later held-out data we measured how much each simulated fill lost 60 seconds later. Pass required at least 1 cent between calm and hot books plus a randomization test.

CostNo direct cost recorded.

31 Jul
Rules pre-registered; run 1 blocked by too few fills
31 Jul
Run 2 under an approved amendment: PASS
27 Aug
Adopted in v3 as a 'do not post when book is hot' rule
Sources
  • prediction/docs/research/h7_adverse_selection.md
  • prediction/docs/research/round2_decision_rules.md
  • prediction/docs/research/v3_pin_ruling.md
  • prediction/HANDOFF.md

Other Kalshi markets

Checks on Kalshi contracts tied to interest rates, oil and currencies. The main finding was that these markets trade too rarely to test or trade.

Does the bond market lead Kalshi's 10-year yield contracts?

? Inconclusive31 Jul – 28 Aug

The questionDo Kalshi's daily 10-year Treasury yield contracts lag the bond market (a Treasury bond fund) by a minute or more?

What we foundThe market was too thin to test. Kalshi's 10-year yield contracts are quoted only about a quarter of the time.

Hypothetical

If it had worked

Hypothetical: a maker would re-quote Kalshi's yield ladder within a minute of bond-market moves, earning a few cents per fill. With quotes present only ~24% of the time there would be few trades to make.

What actually happened

No statistic was computed. The thinness itself is the finding: this market is not worth building on with this data.
Complete-ladder minutes66 in two monthsThe full set of prices almost never existed at once
Share of trading-hours minutes quotedmedian 24% per contractMost of the time there was no two-sided quote
Longest complete run3 minutes vs 30 requiredThe test could not be run
Details

WhyThe same spot-leads-Kalshi pattern had appeared in crypto and stock indexes; testing a rates market checks whether it generalises.

DataKalshi KXUST10AD contracts (series began 2026-07-08) with 1-minute prices, and minute prices of a Treasury bond fund (from FMP), 2026-07-01 to 08-27: 360+ markets, about 45,000 aligned minutes.

MethodPre-registered lead/lag test that needed a complete ladder of strike prices quoted at the same minute for at least 30 minutes in a row on at least 10 days. Eligibility gates were checked before any result was computed.

Cost20 FMP + 240 Kalshi candle calls for the re-collection; $0

31 Jul
First data pull; blocked because the series was too new
28 Aug
Re-collected and run once: blocked by gates, no result computed
28 Aug
Closed as untestable as specified
Sources
  • prediction/docs/research/h3_lead_lag.md
  • prediction/docs/research/h3_backfill.md
  • prediction/HANDOFF.md

Does the oil price lead Kalshi's Brent crude contracts?

? Inconclusive31 Jul – 1 Aug

The questionDo Kalshi's Brent crude oil contracts reprice about a minute after the oil price moves, and is that delay big enough to trade?

What we foundThe delay is real but worth about a tenth of a cent per contract, far too little to trade.

Hypothetical

If it had worked

Hypothetical: a bot would need at least 3 cents per contract per signal to break even. The measured effect is about 0.09 cents, so even a perfect bot would earn nothing.

What actually happened

No Brent sandbox was built. Recorded as confirmation that spot leads Kalshi, not as a strategy.
1-minute leadS = +0.079, p = 0.0001Kalshi does follow oil with about a 1-minute delay
Days positive88.5% of 26Consistent
Money per typical move$0.0009 vs a $0.030 floorAbout 33 times too small to pay for trading
Details

WhyA third asset class (after crypto and stock indexes) would show whether 'spot leads Kalshi' is a general pattern.

DataKalshi Brent contracts (KXBRENTD, KXBRENTW) with 1-minute prices and Brent spot minute prices (from FMP), 2026-07-01 to 07-30: 29 days, 549 usable markets.

MethodPre-registered test with a randomization null and an economic floor: the lead had to be worth at least the 3-cent cost of posting (2-cent spread plus 1 cent).

CostNo direct cost recorded.

31 Jul
Brent data collected
1 Aug
Run once: statistically real, economically negligible
Sources
  • prediction/docs/research/h4_lead_lag.md
  • prediction/docs/research/h4_backfill.md
  • prediction/HANDOFF.md

Could euro-dollar contracts on Kalshi be tested?

– Not pursued7 Aug – 28 Aug

The questionIs there enough Kalshi euro/US-dollar trading to test whether the currency market leads Kalshi's EURUSD contracts?

What we foundOnly one of three currency series still trades, and it has prices in fewer than 1 in 5 minutes. The test was never run.

Hypothetical

If it had worked

Hypothetical: like H3/H4, a maker would re-quote Kalshi's daily EURUSD ladder after currency moves; with prices in only ~19% of minutes, opportunities would be rare.

What actually happened

The needed rule change was never ruled on; parked 08-28. Given H3's result, the same thinness is expected.
Minutes with any Kalshi price19.4% of open minutesThe market is mostly silent
Live series1 of 3Hourly series inactive since 01-30; weekly retired 06-30
Usable markets319 of 330Enough markets, but thin minute-by-minute
Details

WhyAnother asset class for the spot-leads-Kalshi pattern, using a currency the forex program already covered.

DataKalshi EURUSD series (daily KXEURUSD, hourly KXEURUSDH, weekly KXEURUSDW) and EURUSD minute prices (from FMP), 2026-07-08 to 08-06; 330 markets kept.

MethodA coverage-only check (no results computed) to see if the pre-registered eligibility rules could be met before running the actual test.

Cost30 FMP + 330 Kalshi candle calls; $0

7 Aug
Coverage check run; rules amendment proposed
28 Aug
Parked through the research pause
Sources
  • prediction/docs/research/h6_backfill.md
  • prediction/HANDOFF.md
  • prediction/docs/research/research_ledger_and_pause_brief_2026-08-28.md

Public filings

Politicians and company insiders must publicly report their stock trades. These studies asked whether copying those trades after they become public beats the stock market.

Do stocks move after Congress members' trades are made public?

✕ Didn't work28 Aug – 2 Sep

The questionMembers of Congress must publicly report their stock trades. When such a report is published, does the stock rise (or fall) over the following days enough that copying it would make money?

What we foundBy the time a congressional trade is public (about a month after it happened), the stock no longer moves because of it. Copying these trades had no edge on this data.

Hypothetical

If it had worked

Hypothetically, a bot would buy each stock that members disclosed buying at the next morning's open and sell it 5 trading days later, about 148 such trades a month (the measured median). The study required an average gain of at least +20 bp (0.20%) per trade before costs, so on a $2,000 position that is at least $4 per trade gross, or about $2 after the assumed $2 (10 bp) trading cost. At about 148 trades a month that would be roughly $300 a month net on about $296,000 of monthly turnover.

What actually happened

The measured average was about -0.15 bp, which is $0.00 gross on a $2,000 trade. After the assumed 10 bp cost that is about a $2 loss per trade. No paper-trading lane was built and no money was risked.
Main result: average 5-day move after a disclosed purchase, vs S&P 500-0.15 bp (-0.0015%), 95% range -23 to +24 bpEssentially zero. The stock did no better than the market after the filing became public.
Required to pass (economic floor)+20 bp (0.20%) per tradeTwice the assumed 10 bp round-trip trading cost. The result never came close.
Days the filed stocks beat the market48.5%A coin flip.
Placebo (same stocks, ordinary days)-22 bpThese stocks lagged the market on normal days too, so the placebo check itself failed. The filing-day zero is not evidence of a hidden edge.
Only hint: stocks bought by 3+ members within 10 trading days+52 bp more than single-member buys (adjusted p = 0.275)Not significant after correcting for testing five things at once. Noted as an idea only.

Congress disclosures: stock moves after filing vs the bar to clear

Every test sits well below the +20 bp floor; the intervals straddle zero. The placebo (ordinary days) came out at -22 bp, which is why that check failed.

View data as table
Details

WhyCopying politicians' trades is a popular idea, the data was already included in the FMP subscription, and a paper-trading stock account (paper broker) had just become available as a place to test it. The coverage check showed filings arrive a median 27 days after the trade, so the only testable question was whether the filing itself still moves the stock.

DataCongressional trade disclosures from FMP (Senate and House feeds; 39,164 filings found in the coverage probe), limited to March 2023 to August 2026 when both chambers are covered, stocks only, de-duplicated; daily stock and SPY prices from FMP. After filters: 14,745 stock-day events; 11,821 research-window events (5,270 buy events, 6,551 sell events).

MethodAll rules, tests, a cost floor and pass/fail criteria were written down and frozen before any return was computed (pre-registration). The simulated trade buys at the first market open after the filing date and measures return against the S&P 500 fund (SPY) after 1, 5 and 21 trading days. A 'placebo' ran the same measurement on ordinary days for the same stocks, and the most recent six months (March-August 2026) were locked away as an untouched final test to be used only if the main test passed. The analysis was run exactly once.

CostAbout two days of work and ~2,200 FMP data calls; $0 of real money.

28 Aug
Idea raised: FMP's unused congressional-trading data plus a newly allowed paper stock account
1 Sep
Coverage check: 39,164 filings available; median 27-day reporting delay. Rules drafted
2 Sep
Dataset built; two sample-size gates missed by small margins and re-set by an amendment made before seeing any results; data frozen
2 Sep
Single analysis run: FAIL. Program closed, locked final-test block never opened
Sources
  • prediction/docs/research/research_ledger_and_pause_brief_2026-08-28.md
  • prediction/docs/research/p3_coverage_probe.md
  • prediction/docs/research/p3_event_study_prereg.md
  • prediction/docs/research/p3_verdict.md
  • prediction/data/p3_results/results.json

Do stocks rise after company insiders report buying their own shares?

✕ Didn't work2 Sep – 3 Sep

The questionWhen a company executive, director or major shareholder buys their own company's stock on the open market, they must file a report (Form 4) within two business days. Does the stock beat the market in the days after that report is published?

What we foundBuying stocks after insiders report their own purchases did not beat the market by anywhere near enough to pay trading costs. The market had already priced the news.

Hypothetical

If it had worked

Hypothetically, a bot would buy each tradable stock at the open after an insider-purchase filing and sell it 5 trading days later, about 290 trades a month (the measured median). The study required at least +50 bp (0.5%) average gain before costs, so on a $2,000 position that is at least $10 per trade, about $5 after the assumed 25 bp ($5) round-trip cost. At about 290 trades a month that would be roughly $1,450 a month net on about $580,000 of monthly turnover.

What actually happened

The measured average was +5 bp, about $1 gross on a $2,000 trade. After the assumed $5 cost that is a loss of roughly $4 per trade. No paper lane was built and no money was risked.
Main result: average 5-day move after a purchase filing, vs S&P 500+5 bp (0.05%), 95% range -18 to +28 bpPositive but tiny and statistically indistinguishable from zero.
Required to pass (economic floor)+50 bp (0.50%) per tradeTwice the assumed 25 bp round-trip cost for smaller stocks. The result was one tenth of this.
Next-day move (the only hint)+12 bp (adjusted p = 0.19)Not significant after correcting for five tests, and too small to cover a 25 bp cost.
Placebo (same stocks, ordinary days in the same quarter)-69 bpThese stocks were falling anyway (the week before filing they were -98 bp): insiders tend to buy after declines. The placebo check failed.
Four time slices of the main test-58 / +8 / +14 / +56 bpThree of four positive, but they swing far more than the average itself.

Insider purchases: stock moves after filing vs the bar to clear

The main 5-day result (+5 bp) is far below the +50 bp floor. The placebo and pre-filing bars show these stocks were already falling, which is why the placebo check failed.

View data as table
Details

WhyInsider purchases are among the best-documented signals in the academic literature, and unlike congressional filings they become public within two business days. It reused the machinery just built for the congressional study.

DataInsider purchase filings from FMP (open-market purchases only, Form 4, January 2023 to August 2026) and daily prices from FMP. Only 'tradable' stocks were kept (price at least $5 and at least $1M of typical daily trading). 11,752 tradable research-window events; 18,670 untradable events excluded.

MethodSame approach as the congressional study: rules, five tests, a cost floor and a placebo were frozen before any results. The simulated trade buys at the next open after the filing date and compares to SPY over 1, 5 and 21 trading days. The last six months were kept locked as a final test, and the analysis was run exactly once.

CostOne working session across two days and 5,091 FMP data calls; $0 of real money.

2 Sep
Rules written and dataset built and frozen the same day (all five data gates passed)
2 Sep
First run attempt stalled for 10 hours on a software slowness bug and produced no result; fixed and re-frozen
3 Sep
Single analysis run (15 seconds): FAIL. Program closed, final-test block never opened
Sources
  • prediction/docs/research/research_ledger_and_pause_brief_2026-08-28.md
  • prediction/docs/research/p4_form4_prereg.md
  • prediction/docs/research/p4_verdict.md
  • prediction/data/p4_results/results.json

Sports & venues

Whether sports contracts on Kalshi are mispriced, and how Kalshi compares with Polymarket US, a competing exchange.

Is Polymarket US cheaper to trade on than Kalshi?

• Finished (measurement)3 Aug – 27 Aug

The questionFor the same sports games and bitcoin price markets, which venue has tighter prices (smaller gap between buy and sell prices) and more contracts available near the current price: Kalshi or Polymarket US?

What we foundPolymarket US was cheaper and deeper for sports but worse for crypto. The decision was made not to pursue sports or open a Polymarket account for now, so the study was closed and its data kept.

Hypothetical

If it had worked

Hypothetically, routing sports orders to Polymarket US would have saved about 0.5 cents per contract per side versus Kalshi on MLB (1.75 vs 2.25 cents), so about $5 per 1,000 contracts traded, and makers would have been paid about +0.31 cents per contract instead of charged.

What actually happened

The measurement answered its question, but the venue was not adopted (decision of 2026-08-27). No account was opened and nothing was traded.
MLB median spreadKalshi 1.0 cent vs Polymarket US 0.5 centPolymarket US was consistently half as wide on baseball.
MLB contracts within 1 cent of mid396 vs 1,332 (3.4x)Polymarket US had several times more depth on baseball.
Bitcoin contracts within 1 cent of mid241 vs 29Kalshi was far deeper where crypto fills actually happen.
Cost to cross the book, MLB, per contract per sideabout 2.25 cents (Kalshi) vs 1.75 cents (Polymarket US)Half-spread plus taker fee at a 50/50 price.

Typical gap between buy and sell price

Kalshi vs Polymarket US, medians over matched 5-minute snapshots

View data as table

Contracts available within 1¢ of the middle price

Kalshi vs Polymarket US, medians over matched 5-minute snapshots

View data as table

Cost to trade immediately (per side)

Kalshi vs Polymarket US, medians over matched 5-minute snapshots

View data as table
Details

WhyTrading fees on Kalshi were a concern, and Polymarket US (a newly regulated US venue) charged lower taker fees and even paid makers. A second venue would only matter if its order books were actually usable.

DataPublic order-book snapshots from both venues every 5 minutes, 19 clean days (2026-08-08 to 08-26): 521,778 usable records across 245 matched pairs (MLB and NFL game winners plus 4 bitcoin price markets). No accounts were needed.

MethodA collector matched identical markets across the two venues and recorded both order books side by side. The report compared median spreads and the number of contracts available within 1 and 5 cents of the middle price. This was a measurement, not a trading test.

CostAbout three weeks of automatic collection (about 1.7 GB of order-book data kept); $0.

3 Aug
Survey of alternative venues: Polymarket US is the one legal lower-fee option
5 Aug
Collector started (anonymous public data from both venues)
7 Aug
Early 1.5-day look (its magnitudes later proved inflated)
27 Aug
Final report on 19 clean days; decision: avoid Polymarket for now; collector stopped, data kept
Sources
  • prediction/docs/research/pmus_depth_report.md
  • prediction/docs/research/research_ledger_and_pause_brief_2026-08-28.md
  • prediction/HANDOFF.md

Are Kalshi's sports prices fair, or do underdogs get overpriced?

✕ Didn't work7 Aug – 11 Sep

The questionOn Kalshi's 'who wins this game' markets, does a team priced at, say, 30 cents (a 30% implied chance) actually win about 30% of the time? Or are underdogs systematically overpriced and favorites underpriced (the 'favorite-longshot bias')?

What we foundKalshi's game-winner prices are accurate. A team priced at 30% wins about 30% of the time, so there is no systematic mispricing to profit from.

Hypothetical

If it had worked

Hypothetically, a bot would buy favorites (or sell underdogs) about 5 hours before each game wherever prices were biased, across thousands of games a year. The study required the mispricing to average at least 2 cents per $1 contract, so a 100-contract position would expect at least about $2 of edge per game, before Kalshi's taker fee (about 1.1 cents per contract at a 20% price, so about $1.10 per 100 contracts).

What actually happened

The measured gaps were under 1 cent (0.69 cents average) and pointed the wrong way, so such a bot would have had no edge and would simply have paid the fee, about $1.10 per 100 contracts traded. Nothing was traded.
Calibration slope (logistic scale; 1.00 = perfect)0.97Prices matched real win rates almost perfectly.
Underdog mispricing (teams under 30%)-0.65 cents per $1 contractLess than a cent, and in the opposite direction to the classic bias.
Favorite mispricing (teams over 70%)-0.73 cents per $1 contractAlso under a cent, also the 'wrong' direction.
Required size (floor)2.0 cents average tail gapAbout twice Kalshi's taker fee at a 20% price. The measured gap was 0.69 cents.
Games analysed12,281 in 7 leaguesA large sample. Every price band's win rate was within its error band except a roughly 2-cent wobble around 50/50.

Sports prices vs how often teams actually won

Points hug the diagonal: a team priced at X% wins about X% of the time. Only the two middle bins (near 50/50) sit about 2 cents off.

View data as table
Details

WhyThe favorite-longshot bias is a well-known betting pattern, the test was free (Kalshi's public archive of settled games), and the same technique had already been used on crypto markets. It was the recommended next program after the filings studies.

DataKalshi's public archive of settled game-winner markets: 29,662 markets / 14,831 games across 7 leagues (MLB, NBA, NHL, WNBA, NFL, college football, college basketball), April 2025 to September 2026. One side (home team) per game, priced 5 hours before the market closed. 12,281 games in the research window.

MethodFirst a check that the data existed without looking at any outcome. Then rules, five tests, a minimum-size floor and a final locked test block (July-September 2026, 1,177 games) were frozen before the analysis. The single run compared each price band with how often those teams actually won.

CostTwo days and ~16,000 free Kalshi API calls; $0.

7 Aug
Sports strategy brief written; this cheap test listed as a first step
8 Sep
Recommended as the next research program
10 Sep
Go given; coverage check found 14,831 games. Rules written, dataset built and frozen
11 Sep
Single analysis run: FAIL (prices are well calibrated). Program closed, final-test block never opened
Sources
  • prediction/docs/research/research_ledger_and_pause_brief_2026-08-28.md
  • prediction/docs/research/hs5_coverage_probe.md
  • prediction/docs/research/hs5_flb_prereg.md
  • prediction/docs/research/hs5_verdict.md
  • prediction/data/hs5_results/results.json
  • prediction/data/hs5_results/results.md

Sports trading ideas list: what was tried, closed or never started

– Not pursued7 Aug – 11 Sep

The questionWhich ways of trading sports prediction markets automatically could realistically make money, and in what order should they be tested?

What we foundThe one free test that could run (H-Sports-5) failed, the Polymarket-based ideas were closed by the decision to avoid Polymarket, and the rest need paid data or new infrastructure. The brief is parked.

Hypothetical

If it had worked

Hypothetically, the best-case path was an automated bot quoting sports game markets on the cheaper venue (Polymarket US pays makers about +0.31 cents per contract where Kalshi charges them), earning small per-contract edges across many games. None of the ideas got as far as a measured per-trade edge.

What actually happened

No sports idea produced a tradable edge. The one tested (H-Sports-5) showed prices are fair; the others were closed or never started. $0 spent on data.
H-Sports-5: underdog/favorite mispricingFAIL (2026-09-11)Prices were fair; see the separate study.
H-Sports-3: cross-venue fill-quality testCLOSED (2026-08-27 ruling)It needed Polymarket US, which was ruled out.
H-Sports-1: does one venue's price lead the other'sNever runAlso needed Polymarket US, and 5-minute snapshots were too slow to answer it.
H-Sports-2: compare against a sharp bookmaker (Pinnacle)Never runNeeded a paid odds-data subscription, gated behind free tests showing promise.
H-Sports-4: in-game repricing lagNever runNeeded paid data plus faster data collection; deliberately last.
Details

WhySports was the area of interest after the crypto results, and Polymarket US had emerged as a possible cheaper second venue for sports.

DataDesk research plus the Kalshi vs Polymarket US depth data; no new experiments ran from the brief itself.

MethodThe brief ranked five ideas (H-Sports-1 to 5) by cost and evidence, gating paid data behind free tests first. H-Sports-5 (price fairness) was run separately as a full pre-registered study.

CostNo direct cost recorded.

7 Aug
Brief drafted with five ranked ideas
27 Aug
Decision to avoid Polymarket for now, which removes the cross-venue ideas' second venue
28 Aug
Brief committed as a draft and parked for the research pause
8 Sep
H-Sports-3 recorded as closed by the Polymarket decision; H-Sports-5 recommended
11 Sep
H-Sports-5 ran and failed (prices are fair)
Sources
  • prediction/docs/research/sports_strategy_brief.md
  • prediction/docs/research/research_ledger_and_pause_brief_2026-08-28.md
  • prediction/docs/research/hs5_verdict.md
  • prediction/HANDOFF.md

Other ideas

Smaller questions: how fast economic numbers arrive in the data feed, whether "buying the dip" helps a long-term investor, and ideas that were surveyed but never run.

Could a paid data feed deliver economic numbers fast enough to trade on?

✕ Didn't work16 Jul – 25 Sep

The questionWhen the US government publishes weekly jobless-claims numbers at 8:30 a.m. Eastern, how many seconds pass before the number appears in the FMP data feed? And is that fast enough to trade Kalshi's jobless-claims markets before they adjust?

What we foundFMP shows the jobless-claims number one to several minutes after it is released. Anyone reading the government release directly has already moved the market, so this strategy cannot work on FMP data (recorded as NO-GO).

Hypothetical

If it had worked

Hypothetically, every Thursday at 8:30 a.m. ET a bot would read the new number within a few seconds and buy the right Kalshi jobless-claims contracts before the price caught up: one burst of trades a week, plus monthly releases such as CPI and payrolls. Each contract would need to gain more than Kalshi's taker fee (about 1.75 cents per contract at a 50/50 price) plus the spread.

What actually happened

The data arrived about 2 minutes late (median 124.8 s), long after faster traders would have repriced the market. Nothing was built or traded; the family would need a direct government-source feed.
First measured delay+96.6 secondsThe number appeared in FMP about a minute and a half after the official release.
Median delay over 11 weeks+124.8 secondsTypically about two minutes late.
Range+62.9 to +392.6 secondsNever faster than about a minute; once more than six minutes.

How late FMP showed each weekly jobless-claims number

Every week the number arrived at least a minute after release, typically about two minutes, which is too slow to trade.

View data as table
Details

WhyKalshi lists markets on economic releases, and the FMP subscription carried an economic calendar with actual numbers. A strategy that reads the number and trades within seconds only works if the data arrives within seconds.

DataThe script's own timing measurements: FMP's economic calendar checked every 2 seconds around 11 weekly jobless-claims releases (2026-07-16 to 2026-09-24). Only the delay in seconds is reported here.

MethodA go/no-go measurement before building anything, with the kill condition set in advance: if FMP lags the release by minutes, the strategy dies. After the first reading a weekly Thursday job kept measuring to see if it was representative.

CostNo extra cost beyond the existing FMP subscription; a small weekly job.

16 Jul
First measurement: +96.6 s delay. Declared NO-GO for FMP as the data source
23 Jul
Weekly Thursday measurements continue
24 Sep
Last (11th) measurement: +80.6 s
25 Sep
Weekly job stopped at the research wrap-up (FMP subscription cancelled)
Sources
  • prediction/docs/research/fmp_premium_strategies.md
  • prediction/docs/research/research_ledger_and_pause_brief_2026-08-28.md
  • prediction/data/econ_latency/measure.log
  • prediction/data/econ_latency/log.jsonl
  • prediction/HANDOFF.md

Other data-feed ideas that were surveyed but never tested

– Not pursued16 Jul – 25 Sep

The questionBeyond the ideas that were tested, what else could the FMP Premium subscription have been used for?

What we foundThese were ideas, not experiments. None was tested, and with FMP cancelled they are closed unless a new data source is found.

Hypothetical

If it had worked

Not applicable. No trading rule or cost floor was ever defined for these ideas.

What actually happened

Nothing was built beyond adding VIX to the daily data collection. FMP was cancelled on 2026-09-25.
S4: after-hours quotes for index-market gapsParkedWaiting for an index trading lane that never came.
S5: VIX volatility level as a conditioning featureAdded to daily data collection onlyNever used by a live strategy.
S6: weekly futures positioning (COT) dataParkedToo slow (weekly) to matter.
13F holdings, analyst ratings, earnings-call transcriptsNever surveyedLow expected value after public-filing ideas failed twice.
Details

WhyThe subscription was heavily under-used (about 0.06% of its call limit in July), so its data was surveyed for more uses.

DataLive probes of the FMP subscription (July 2026) and a literature sweep.

MethodIdeas were ranked by value and effort. The top three were implemented or measured (fast quote polling, the index lead-lag study, and the economic-release timing test). The rest were deliberately parked.

CostNo direct cost recorded.

16 Jul
Survey written; S1-S3 implemented or measured, S4-S6 parked
28 Aug
Unused half of FMP identified (congressional trades, insider trades, 13F, analyst data, transcripts)
3 Sep
Congressional and insider-trade ideas both tested and failed
25 Sep
FMP cancelled; no FMP-dependent jobs remain
Sources
  • prediction/docs/research/fmp_premium_strategies.md
  • prediction/docs/research/research_ledger_and_pause_brief_2026-08-28.md
  • prediction/HANDOFF.md

Can a model make regular index-fund buying a little smarter?

– Not pursued8 Aug – 28 Aug

The questionIf a bot invests a paycheck into an S&P 500 fund in small hourly amounts and never sells, could a model that chooses when to buy more or less (delaying by up to 2 weeks) end up with more shares than simply buying evenly?

What we foundEven perfect foresight would add under 2% over ten years, and every simple timing rule made things worse. The idea was parked without building a test.

Hypothetical

If it had worked

Hypothetically, with $2,000 a month going in, a good model (about 15% of the perfect ceiling, +30 bp) would add about $72 a year of portfolio value per year of contributions compared with plain even buying.

What actually happened

Not built. The measured ceiling was too small to justify a sandbox, and simple rules lost money relative to even buying (roughly $10 to $35 a year at $2,000 a month).
Perfect-hindsight ceiling (2-week delay allowed)+194 bp (1.94%) of cost basis over the whole decadeEven a model that knew the future would gain under 2% in ten years.
Simple buy-the-dip rules-3.6 to -13.8 bpEvery simple rule did worse than buying evenly.
Choosing the hour of dayworth less than 1 bpIrrelevant.
Value of a good model at $2,000/month contributionsabout $72 per year (ceiling about $465 per year)Too small to be a money engine.
Details

WhyIt is a low-risk idea with a clear score (shares accumulated per dollar), and it would have been the project's first live link to a real brokerage.

Data10.5 years of hourly SPY price bars (2016-2026) from FMP, plus published research on dollar-cost averaging.

MethodBefore building anything, the brief measured the best possible result with perfect hindsight (the ceiling for any model) and tested simple rules such as buy-the-dip against plain even buying.

CostNo direct cost recorded.

8 Aug
Idea researched and brief drafted; ceiling and simple rules measured
28 Aug
Brief committed as a draft and parked for the research pause
Sources
  • prediction/docs/research/informed_dca_brief.md
  • prediction/docs/research/research_ledger_and_pause_brief_2026-08-28.md

Forex (currency trading)

Currency trading: buying one currency with another, such as euros with dollars. The research tested five trading ideas on up to 14 years of history, then ran the best one live on paper.

Do surprising economic numbers move the dollar-yen predictably?

✕ Didn't work26 Jun – 30 Jun

The questionWhen a government statistic (jobs, inflation, etc.) comes out better or worse than forecasters expected, does the US dollar vs Japanese yen (USD/JPY) move in a way a rule can profit from? Forex basics: a currency pair such as EUR/USD is the price of one euro in US dollars; betting it goes up means betting the euro strengthens against the dollar. A pip is the smallest usual price step (0.0001 for most pairs, 0.01 for yen pairs); a basis point (bp) is 0.01% of money. The Sharpe ratio is yearly return divided by yearly ups-and-downs (volatility): 0 = no edge, about 0.5 = a decent professional strategy, negative = lost money.

What we foundThe rule made money in 2021-2024 backtests but lost in every one of the five sealed windows of 2025-2026. Classic overfitting: it learned the past, not a lasting pattern.

Hypothetical

If it had worked

A bot would watch the economic calendar and, when a release beat or missed forecasts by enough, buy or sell USD/JPY and hold briefly — roughly 200-300 trades a year. In backtest the good years made about +1% a year on a small position (e.g. 2023: Sharpe 1.42, +1.12%), i.e. about $11 per $1,000 a year — hypothetical, and only if the sealed test had passed (test_dsr >= 0.05).

What actually happened

On the sealed period it lost: 2025 -2.01% and 2026 (part-year) -0.47% on the same position size — about -$25 per $1,000 over ~14 months. Paper only; no money was ever at risk.
Research score (val_dsr)0.701Looked strong on the years the search could see (deflated-Sharpe score, 0-1 scale).
Sealed score (test_dsr)0.0000Pass line was 0.05; the unseen period showed no edge at all.
Sealed-period Sharpe-2.77 over 226 tradesIt lost money steadily on the held-back data.
Attempts counted460Number of distinct strategy variants the agent tried (used to deflate the score).
Details

WhyCurrencies visibly react to data surprises, and the project had a news/surprise feature pipeline ready; it was the first, most natural idea to test. It was also run across the other USD majors (EUR/USD etc.) before the USD/JPY sealed test.

DataDukascopy 5-minute bid/ask prices for USD/JPY (about 5.4 years, 2021 to mid-2026), plus an economic calendar with forecasts, central-bank rate decisions and market rates (US/Japan 2-year yields, VIX) — calendar and rates from FMP (no raw rows shown here).

MethodAn AI coding agent running on a local model repeatedly edited one strategy file inside a locked 'sandbox' and was scored by a frozen scorer on the research years only, charging real bid/ask spreads on 5-minute bars. Every attempt was counted so the final score could be 'deflated' (penalised for how many tries it took). The last ~year of data (2025-04 to 2026-06) was sealed and opened exactly once, by the owner, at the end; to pass, the deflated sealed score (test_dsr) had to be at least 0.05 and most sealed windows and calendar years had to be positive.

CostAbout $0 in trading (never deployed); one ~8-hour agent run on local hardware.

26 Jun
Project starts: EUR/USD data layer and first research sandbox
28 Jun
Surprises made direction-aware; 5.4-year dataset built
29 Jun
USD/JPY sandbox (usdjpy_v1) created; multi-window sealed test rule adopted
30 Jun
Sealed test opened once: FAIL, all 5 sealed windows lost money
Sources
  • forex/research/usdjpy_v1/VERDICT.md
  • forex/docs/research/fx-directions-2026-06.md
  • forex/README.md
  • forex/docs/research/program-conclusion-2026-07.md
  • forex/OUTER_LOG.md

Program 1 overall: four single-pair ideas, four sealed failures

✕ Didn't work26 Jun – 4 Jul

The questionCan any simple rule trading one liquid dollar pair, over hours to days, beat retail trading costs on data it has never seen? Forex basics: a currency pair such as EUR/USD is the price of one euro in US dollars; betting it goes up means betting the euro strengthens against the dollar. A pip is the smallest usual price step (0.0001 for most pairs, 0.01 for yen pairs); a basis point (bp) is 0.01% of money. The Sharpe ratio is yearly return divided by yearly ups-and-downs (volatility): 0 = no edge, about 0.5 = a decent professional strategy, negative = lost money.

What we foundThis reproduced a famous 1983 finding (Meese-Rogoff): short-horizon currency moves are close to unpredictable. The search reliably found patterns that fitted the past and the future reliably declined to repeat them.

Hypothetical

If it had worked

A working thesis would have become a small automated USD/JPY strategy trading daily-to-weekly, first on paper; the bar was a sealed deflated score of at least 0.05 plus consistent positive windows and years.

What actually happened

All four lost on the 2025-2026 sealed period (Sharpe -0.27 to -2.77). The lasting output is a hardened research tool (leak-proof data pipeline, locked scorer, agent containment, supervised loop).
Sealed passes0 of 4No thesis survived its one-time test.
Research score vs sealed score0.67-0.88 -> ~0Every good-looking research score collapsed to zero on unseen data.
Trading losses~$0Nothing was ever deployed.

Sealed-test Sharpe of every forex thesis

Four Program 1 theses lost money on unseen data; only the Program 2 portfolio came out positive (+0.37) — and it still failed the pass rules.

View data as table

Research score vs sealed score

Scores of 0.5-0.9 during research all fell to about zero once the sealed data was opened; the pass line was 0.05.

View data as table
Details

WhyTo either find a real edge or prove that the search process is honest — i.e. that it kills ideas that only look good in hindsight.

DataUSD/JPY (and earlier EUR/USD and other majors) 5-minute Dukascopy prices, ~5.4 years, plus calendar, rate and market data.

MethodFour evidence-ranked theses, each searched by an AI agent under a frozen scorer, each given exactly one sealed test opened by the owner. A stopping rule was pre-registered before the last thesis.

CostAbout $0 in trading losses; roughly nine days of machine time (2026-06-26 to 07-04).

26 Jun
Project start
30 Jun
Thesis 1 (economic surprise) FAIL
2 Jul
Thesis 2 (intraday seasonality) FAIL
3 Jul
Thesis 3 (rate-gap carry) FAIL
4 Jul
Thesis 4 (yield-curve carry) FAIL; program concluded under stopping rule
Sources
  • forex/docs/research/program-conclusion-2026-07.md
  • forex/README.md
  • forex/research/usdjpy_v1/VERDICT.md
  • forex/research/intraday_usdjpy_v1/VERDICT.md
  • forex/research/carry_usdjpy_v1/VERDICT.md
  • forex/research/carry2_usdjpy_v1/VERDICT.md
  • forex/research/xsect_v1/VERDICT.md

Does dollar-yen move the same way at the same time each day?

✕ Didn't work30 Jun – 2 Jul

The questionAre there hours of the trading day (e.g. around the Tokyo or London open) when USD/JPY tends to rise or fall, strongly enough to profit after trading costs? This is the 'time-of-day seasonality' idea from academic work (Ranaldo).

What we foundIt traded plenty and honestly, but the time-of-day tilt that looked good in 2021-2024 was essentially zero in 2025-2026.

Hypothetical

If it had worked

A bot would trade USD/JPY at fixed hours several times a week (about 700-850 trades a year). The backtest's good years looked like 2022: Sharpe 2.05, +5.5% a year on its position size — about $55 per $1,000 a year, hypothetical, only had the sealed score cleared 0.05.

What actually happened

Out of sample: 2025 +0.40%, 2026 (part-year) -0.35% — effectively nothing after costs. Paper only.
Research score (val_dsr)0.88Best-looking research score of Program 1.
Sealed score (test_dsr)0.0001Pass line 0.05 — no edge on unseen data.
Sealed-period Sharpe-0.27 over 716 tradesRoughly break-even-to-losing after costs; 4 of 5 sealed windows negative.
Attempts counted694Distinct variants tried by the agent.
Details

WhyA literature survey ranked intraday time-of-day patterns as the only family with repeated, tradable evidence on the major pairs that could be tested with the 5-minute data already on hand.

DataDukascopy 5-minute bid/ask prices for USD/JPY, about 5.4 years (2021 to mid-2026), with real per-bar spreads.

MethodAn AI coding agent running on a local model repeatedly edited one strategy file inside a locked 'sandbox' and was scored by a frozen scorer on the research years only, charging real bid/ask spreads on 5-minute bars. Every attempt was counted so the final score could be 'deflated' (penalised for how many tries it took). The last ~year of data (2025-04 to 2026-06) was sealed and opened exactly once, by the owner, at the end; to pass, the deflated sealed score (test_dsr) had to be at least 0.05 and most sealed windows and calendar years had to be positive.

CostAbout $0 in trading; one agent run on local hardware.

30 Jun
Follow-up literature pass picks time-of-day seasonality; sandbox scaffolded
2 Jul
Run stopped early at best research score 0.88
2 Jul
Sealed test opened once: FAIL
Sources
  • forex/research/intraday_usdjpy_v1/VERDICT.md
  • forex/docs/research/fx-directions-followup-2026-06.md
  • forex/README.md
  • forex/docs/research/program-conclusion-2026-07.md
  • forex/OUTER_LOG.md

Can the US-Japan interest-rate gap tell us which way dollar-yen goes?

✕ Didn't work3 Jul

The question'Carry' means holding the currency that pays the higher interest rate against one that pays less, and earning the gap. This asked: can the changing gap between US and Japanese policy rates tell a rule when to be long or short USD/JPY, day by day?

What we foundThe rule's timing, fitted to the 2021-2024 rate-hiking era, got the 2025-2026 period wrong — even though carry as a whole made money in 2025. The conditioning failed, not necessarily the carry idea.

Hypothetical

If it had worked

A bot would hold a long or short USD/JPY position for days-to-weeks based on the rate gap (about 20-40 trades a year). In backtest years it showed Sharpe ~1.0-1.3 and +3% to +8% a year (2022: +8.11%) — about $30-80 per $1,000 a year, hypothetical.

What actually happened

Out of sample: 2025 -3.62%, 2026 (part-year) -1.29% — about -$49 per $1,000. Paper only.
Research score (val_dsr)0.67Moderate in-sample score.
Sealed score (test_dsr)0.0000Pass line 0.05.
Sealed-period Sharpe-1.37 over 40 tradesLost money; 4 of 5 sealed windows negative.
Attempts counted216Distinct variants tried.
Details

WhyCarry is the most-replicated pattern in currency research, and 2021-2026 contained every carry regime (zero gap, fastest widening in decades, the August 2024 carry crash, narrowing) — a rich test.

DataDukascopy 5-minute bid/ask prices for USD/JPY (about 5.4 years, 2021 to mid-2026), plus an economic calendar with forecasts, central-bank rate decisions and market rates (US/Japan 2-year yields, VIX) — calendar and rates from FMP (no raw rows shown here). Policy-rate series were derived from central-bank decision events in the calendar.

MethodAn AI coding agent running on a local model repeatedly edited one strategy file inside a locked 'sandbox' and was scored by a frozen scorer on the research years only, charging real bid/ask spreads on 5-minute bars. Every attempt was counted so the final score could be 'deflated' (penalised for how many tries it took). The last ~year of data (2025-04 to 2026-06) was sealed and opened exactly once, by the owner, at the end; to pass, the deflated sealed score (test_dsr) had to be at least 0.05 and most sealed windows and calendar years had to be positive.

CostAbout $0 in trading; one agent run.

3 Jul
Thesis 3 proposed; carry_usdjpy_v1 sandbox built
3 Jul
Run ends at best research score 0.67
3 Jul
Sealed test opened once (23:57 UTC): FAIL
Sources
  • forex/research/carry_usdjpy_v1/VERDICT.md
  • forex/docs/research/fx-directions-thesis3-2026-07.md
  • forex/README.md
  • forex/docs/research/program-conclusion-2026-07.md
  • forex/OUTER_LOG.md

Final try: can bond-market expectations time the dollar-yen carry trade?

✕ Didn't work4 Jul

The questionSame carry idea, but using what bond markets expect rates to do (US and Japanese 2-year yields, the yield-curve slope, the VIX fear index) to see regime turns coming before central banks act.

What we foundThe best-looking strategy of the program still lost money once it met the future — the same 'regime-boundary death' as the others.

Hypothetical

If it had worked

A bot would hold USD/JPY long or short for days, about 90-110 trades a year. In backtest 2022 it made +16% at Sharpe 2.39 (about 7% yearly volatility) — about $160 per $1,000 in a good year, hypothetical.

What actually happened

Out of sample: 2025 -2.14%, 2026 (part-year) -6.30% — about -$84 per $1,000. Paper only.
Research score (val_dsr)0.75Best in-sample profile of the four: robust to tweaks and to 1.5x costs.
Sealed score (test_dsr)0.0000Pass line 0.05.
Sealed-period Sharpe-1.16 over 115 tradesLost money on unseen data; only 40% of sealed windows positive.
Best backtest years+16.07% (2022), +10.53% (2024)What it looked like in-sample.

Yield-curve carry: great backtest years, losing sealed years

2021-2024 were visible to the search; 2025-2026 were sealed. The flip at the boundary is the whole story of Program 1.

View data as table
Details

WhyThesis 3 died at a regime turn; market-implied expectations were designed specifically to anticipate such turns. A stopping rule was declared beforehand: if this failed, Program 1 would end.

DataDukascopy 5-minute bid/ask prices for USD/JPY (about 5.4 years, 2021 to mid-2026), plus an economic calendar with forecasts, central-bank rate decisions and market rates (US/Japan 2-year yields, VIX) — calendar and rates from FMP (no raw rows shown here).

MethodAn AI coding agent running on a local model repeatedly edited one strategy file inside a locked 'sandbox' and was scored by a frozen scorer on the research years only, charging real bid/ask spreads on 5-minute bars. Every attempt was counted so the final score could be 'deflated' (penalised for how many tries it took). The last ~year of data (2025-04 to 2026-06) was sealed and opened exactly once, by the owner, at the end; to pass, the deflated sealed score (test_dsr) had to be at least 0.05 and most sealed windows and calendar years had to be positive. A pre-registered stopping rule (declared 2026-07-04 before any result) made this the last single-pair thesis.

CostAbout $0 in trading; one ~6-hour agent run.

4 Jul
Stopping rule declared before the dataset existed
4 Jul
Expectation features built; ~6-hour agent run
4 Jul
Sealed test opened once: FAIL — Program 1 concluded
Sources
  • forex/research/carry2_usdjpy_v1/VERDICT.md
  • forex/README.md
  • forex/docs/research/program-conclusion-2026-07.md
  • forex/OUTER_LOG.md

A weekly basket of five currencies ranked by interest rate and trend

✕ Didn't work4 Jul – 6 Jul

The questionInstead of one pair, rank five currencies (euro, yen, pound, Australian and Canadian dollar, each vs the US dollar) each week by 'carry' (interest-rate advantage) and 'momentum' (recent trend — betting recent winners keep winning), buy the top one and sell the bottom one. Does that portfolio make money on unseen years?

What we foundFailed the rules, but it is the one forex idea that was net positive on data it never saw (+0.37 Sharpe). Promising enough to follow on paper, not enough to trust.

Hypothetical

If it had worked

Once a week a bot would hold about $500 long the highest-ranked currency and $500 short the lowest-ranked (per $1,000), going flat if the VIX fear index hit 30. Its year table implies roughly 4-6% yearly volatility, so a Sharpe of +0.37 would mean very roughly +2% a year — about $20 per $1,000 a year, hypothetical.

What actually happened

Sealed years: 2023 +6.57%, 2024 -2.43%, 2025 +3.07%, 2026 (part-year) +2.73% — net positive, but with losing windows (worst -3.53%). It moved to a paper-forward test instead of any real money.
Sealed-period Sharpe+0.37 over 210 tradesThe only forex idea that made money on unseen data — modestly.
Sealed score (test_dsr)0.0104Below the 0.05 pass line once penalised for 144 attempts.
Sealed windows positive40% (needed 60%)Gains came from 2 of 5 windows; too uneven to pass.
Research score (val_dsr)0.5392Best variant, commit 16e37f8.

Currency basket: year-by-year returns

Research years (2012-2022) were mixed; the sealed years 2023-2026 were mostly positive — the first time that happened in this project.

View data as table
Details

WhyProgram 1's diagnosis was too few independent regime bets. Cross-sectional carry/momentum portfolios are where the surviving academic evidence lives, and 14 years of data (2012-2026) covers many more regimes.

DataDukascopy 5-minute prices for EUR/USD, USD/JPY, GBP/USD, AUD/USD, USD/CAD from 2012 to 2026 (14 years), with policy-rate differences from the economic calendar (available from 2015) and VIX. Calendar/VIX from FMP (no raw rows).

MethodSame locked-scorer agent search, now scoring a weekly-rebalanced basket with each pair's real spread. The last ~20% of history (2023-2026, including the August 2024 carry crash) was sealed and opened once by the owner. Program rules pre-registered: at most two iterations before a full human review.

CostAbout $0 in trading; one 6-hour agent run.

4 Jul
Program 2 chartered right after Program 1 concluded
5 Jul
Portfolio harness and xsect_v1 sandbox built; 6-hour agent run launched
6 Jul
Run finishes: 144 attempts, best research score 0.539
6 Jul
Sealed test opened once: FAIL, but first positive out-of-sample result
Sources
  • forex/research/xsect_v1/VERDICT.md
  • forex/docs/research/program2-charter-2026-07.md
  • forex/paper/strategies/xsect_best_16e37f8.py
  • forex/OUTER_LOG.md
  • forex/README.md

Live paper test: research winner vs a simple trend rule

? Inconclusive6 Jul – 25 Sep

The questionGoing forward in real time (no hindsight possible), does the Program 2 winner beat a naive trend-following control? Both were frozen and settled nightly on paper with zero money at risk.

What we foundOver 57 days the research winner was slightly ahead of the simple trend rule, but the gap is well within luck. The test neither confirmed nor refuted the idea, and it has been closed.

Hypothetical

If it had worked

If the research winner's +0.37 sealed Sharpe were real, at ~4-6% volatility it would earn very roughly $20 per $1,000 a year — so over 57 trading days only about $4-5, which is why ~3 months could never be decisive. Hypothetical.

What actually happened

Winner +0.28% (about +$2.80 per $1,000), control -0.04% (about -$0.40 per $1,000). Including the pre-forward seed period (as the running summary and dashboard originally did) flipped the ranking to trend +0.58%, winner -0.76%; the dashboard was corrected to forward-only on 2026-09-25.
Research winner, forward+0.28% cumulative (+0.50 bp/day)About +$2.80 per $1,000 over 57 trading days (1 bp = 0.01%).
Trend control, forward-0.04% cumulative (-0.07 bp/day)Essentially flat.
Difference+0.32%, t-stat 0.87Right direction, but far from statistically meaningful (about 2 would be needed).
Annualised Sharpe2.11 vs -0.33What 57 noisy days produce; a true Sharpe of 0 or 2 both fit the data.

Paper-forward: research winner vs simple trend rule

Forward days only. The winner ends +0.28% vs -0.04% — the right sign, but a gap this small over 57 days is indistinguishable from luck.

View data as table
Details

WhyA forward clock cannot be contaminated by the search. It is the cleanest check on whether the +0.37 sealed result was real.

DataNightly Dukascopy price catch-up for the five pairs; our own append-only ledger (forex/paper/ledger.jsonl) of weights and daily net returns, 57 forward trading days (2026-07-07 to 2026-09-24).

MethodTwo strategies were frozen on 2026-07-06. 'trend_basket' (control): each week, for each of the five currencies vs the dollar, hold +20% if it rose over the last 100 days and -20% if it fell. 'xsect_best_16e37f8' (research winner): each week rank the five currencies by a mix of interest-rate advantage (scaled by how jumpy it is) and smoothed recent trend; put 50% long the top one and 50% short the bottom one; go flat if VIX >= 30; trim 20% when markets are unusually volatile. Returns are net of real spreads and slippage. The first read was pre-registered for +90 days (2026-10-04); it was taken early for reasons unrelated to results.

Cost$0 capital at risk; nightly cron job on existing hardware.

6 Jul
Paper-forward goes live with two frozen strategies
7 Jul
First forward settle
23 Sep
Research paused; FMP subscription cancelled (inputs end 09-28)
25 Sep
First read taken early: INDETERMINATE; test closed
Sources
  • forex/docs/research/paper-forward-first-read-2026-09-25.md
  • forex/paper/ledger.jsonl
  • forex/paper/strategies/trend_basket.py
  • forex/paper/strategies/xsect_best_16e37f8.py
  • forex/paper/summary.md
  • forex/docs/research/program2-charter-2026-07.md

Teaching an AI to read currency news headlines

– Not pursued6 Jul – 23 Sep

The questionCan news text be turned into reliable, point-in-time signals per currency (is this headline good or bad for the yen?), so later strategies could use it?

What we foundThe tools were built and the label quality improved a lot, but the features were never tested for trading value — that step was reserved for a Program 2 second iteration that never happened because research was paused.

Hypothetical

If it had worked

Each day every currency would get a news score (e.g. 'yen: mildly negative, unusually heavy coverage') that a rule-based basket could use as one more input, judged under the same one-time sealed test. No trading gain was ever measured; any figure would be invented.

What actually happened

Built and measured, never evaluated for profit. Caveat noted in the docs: the 71% is agreement with the LLM's own labels (distillation), not proven truth.
Headline agreement, FinBERT vs LLM66.3% (kappa 0.49)The two readers often disagreed: FinBERT reads tone ('jumps to highs' = good), the LLM picks a side (good for EUR, bad for USD).
Fine-tuned FinBERT accuracy48.5% -> 71.0%After training on currency-specific labels, agreement with the LLM on unseen later headlines rose 22.5 points.
GDELT history cost$011 years of media tone fitted in BigQuery's free tier (~280 GB scanned).
Details

WhyProgram 1 concluded text/perception features were one of the few untested directions; the news-sentiment tooling had been built but never fed a real corpus.

Data6,805 full-text forex news articles (2024-06 to 2026-07, from FMP, accruing nightly until retirement) and 11 years of GDELT global media tone (2015-02 to 2026-07, 9,434 day-currency rows, via BigQuery at $0). The NYT feed was retired 2026-09-03.

MethodHeadlines were scored by FinBERT (a finance-tuned language model) with uncertain cases escalated to a local LLM. A 300-headline study compared the two; then 3,261 LLM labels 'anchored' to a specific currency were used to fine-tune FinBERT, tested on 610 later (time-held-out) items. A protocol was written for letting trained models into the locked research harness without leaking future information (models trained only on earlier folds, fitted once for the sealed test).

CostGDELT $0; FMP subscription (since cancelled) shared with other uses; GPU time on the local machine.

6 Jul
ML track chartered; news corpus backfilled (6,805 articles)
6 Jul
Corpus scored: 3,915 events (545 escalated to the local LLM)
7 Jul
Label study: FinBERT and LLM agree only 66%
7 Jul
FinBERT fine-tuned: 48.5% -> 71.0%; GDELT tone backfilled; fitted-feature protocol written
3 Sep
NYT news feed retired
23 Sep
Research paused; evaluation phase never started
Sources
  • forex/docs/ML_TRACK_STATUS.md
  • forex/docs/research/finbert-vs-llm-labels-2026-07.md
  • forex/docs/research/fitted-feature-protocol-2026-07.md
  • forex/README.md

Data collection

Datasets built to support the research. They are finished and kept on disk.

A 5-second recording of crypto prices and Kalshi quotes

• Finished16 Jul – 25 Sep

The questionCan we record spot prices and Kalshi's best bid/ask every few seconds, since this data cannot be downloaded later?

What we foundThe recording worked and supplied the data for the lag study, H1, H7 and v3. It was stopped on 09-25 and the data is kept.

Hypothetical

If it had worked

This is infrastructure, not a strategy. Its value was enabling the second-level studies. A trading bot would need this kind of feed live.

What actually happened

It enabled one real signal (the ~20 s lag), one PASS (H7) and the v3 dataset. None led to profit. Stopped 09-25 with FMP ending 09-28.
Span2026-07-16 to 09-25About 10 weeks of unrepeatable data
Uptime (5 s era, at pin)97.95%One outage day (08-09, 27% coverage)
Kalshi book cadenceabout 30 sOnly spot rows are truly 5-second
Details

WhyKalshi and FMP only provide minute-level history. Measuring second-level effects (the ~20 s lag, which orders get filled) required recording it live.

DataSpot quotes for BTC, ETH, SPY, QQQ and VIX (from FMP) plus Kalshi top-of-book for 6 series; 72 daily files 2026-07-16 to 09-25, about 926 MB.

MethodA small always-on recorder, restarted every minute by cron if it stopped, wrote only changed values. The 5-second rate was chosen to put several samples inside the 10-40 s repricing window.

CostPart of the FMP subscription; no extra cost

16 Jul
Recorder launched at 10-second cadence
21 Jul
Sped up to 5 seconds
31 Jul
Found Kalshi book rows arrive only every ~30 s
27 Aug
Uptime 97.95% confirmed; v3 dataset pinned from it
25 Sep
Recorder stopped in the wrap-up; data kept
Sources
  • prediction/docs/research/fmp_premium_strategies.md
  • prediction/HANDOFF.md
  • prediction/docs/research/v3_pin_ruling.md
  • prediction/data/quotes/ (file listing only)

Using the market 'fear index' (VIX) as a switch for crypto models

• Finished16 Jul – 29 Aug

The questionWould knowing the current VIX level help decide when a Kalshi model should trade or hold back?

What we foundVIX was recorded and tried as an on/off switch inside v3, but it made results worse. It was never tested on its own.

Hypothetical

If it had worked

Hypothetical: a model would stand aside in high-VIX periods and avoid its worst trades. No figure exists because it never helped.

What actually happened

In v3 the VIX gate reduced skill (the VIX-gated rows were too few to change behaviour). It went nowhere and collection ended with FMP.
VIX quote freshnessabout 13 secondsFresh enough for a live switch
Effect in v3Hurt skillFiltering by VIX removed the rows where the small edge lived
Details

WhyLeadership between markets can change when volatility is high, so a live VIX reading was a cheap candidate conditioning input.

DataVIX from FMP, added to the daily bar collector and to the 5-second quote recorder from 2026-07-16.

MethodParked as a standalone strategy. It was later tried inside v3's search as a gate (trade only in certain VIX conditions).

CostNo direct cost recorded.

16 Jul
VIX added to data collection
28 Aug
VIX gates tried in v3 window 1; hurt skill
29 Aug
v3 closed
Sources
  • prediction/docs/research/fmp_premium_strategies.md
  • prediction/research/kxcrypto_v3/log.md
  • prediction/HANDOFF.md

Autoresearch loops

How the AI research loops worked (both projects)

• Finished26 Jun – 25 Sep

The questionCan a local AI coding agent, left running for hours inside a locked-down test harness, find a trading strategy that still works on data it was never allowed to see?

What we foundThe machinery worked: it searched hard, stayed honest and killed every strategy that did not hold up. No strategy survived, so nothing ever traded real money. The loops are shut down and research is paused.

Hypothetical

If it had worked

A strategy that passed its sealed test would first have gone to a paper lane (simulated trading on live prices, zero capital), and only if paper results matched the backtest would it have received small real capital (live OANDA for forex, Kalshi for prediction). The loop's job was to produce that one candidate and a trustworthy number to back it.

What actually happened

Six forex sealed tests failed and $0 was lost. Two Kalshi models that looked strong on past data lost money in paper trading instead: v1 lost $143.93 over 4,163 simulated trades in 2 days, and v2 lost about 2.4 cents per trade over 176,461 simulated settles, or -$4,232 in paper money by 09-12. Both were stopped without real capital. Lessons: (1) High validation scores map to about zero on the sealed test. (2) Local agents ignore rules written in the prompt but obey mechanical limits. The git-guard, the commit floor (a commit is rejected if metrics.json shows a lower score than the best kept one or does not match the file being committed), the append-only journal guard and the per-batch memory cap all came from real incidents: git reset --hard, rewriting the log, deleting the supervisor's log, and an OOM that killed the model server. (3) DeepSeek-V4-Flash, a reasoning model, spent its first two 40-minute batches writing analysis scripts and never ran an experiment, so a pacing rule was added. (4) The opencode harness ends the whole session on any permission rejection: a /tmp write, a repo-root path, or .git exploration (v3 batches 11, 13 and 26). (5) The supervisor needs guarding too: session-limit failures on 07-17, an OAuth expiry from 08-23 to 08-26, a sandbox-switch false alarm and max-turn deaths. Models used: gpt-oss-120b (forex, 06-26 to 07-02), Qwen3-Coder-30B (forex 07-02 onward; kxcrypto v1 and v2), and DeepSeek-V4-Flash (kxcrypto_v3, 08-28). A Laguna model served the local endpoint in mid-August (~08-12 to ~08-22), but no sandbox run on record used it. The supervisor ran claude-sonnet-5 by default.
Sandboxes run9 searched plus 1 built but never launched6 forex and 3 Kalshi crypto sandboxes were searched; the Kalshi stock-index sandbox was frozen but never run.
Sealed tests opened6 (all forex), 6 FAILEvery forex search that reached its final exam failed it. The best (xsect_v1) was slightly positive but not enough.
Kalshi sealed tests0 of 3 spentCheap live paper trading (v1, v2) or a flat zero score (v3) settled the question without spending the one-time exam.
Validation vs sealedval_dsr about 0.67-0.88 turned into sealed about 0.00On 4 forex theses a high score on past data predicted nothing about the hidden period.
Details

WhyAn agent can try hundreds of ideas overnight for free on local hardware. If the scoring is honest and the final exam is kept hidden, the machine can do the tedious search while humans keep only the decisions.

DataForex: Dukascopy 5-minute USD/JPY and EUR/USD bars with real spreads (2021-01 to 2026-06, about 406,000 bars), economic-calendar surprises, rates and VIX; the portfolio run used 5 major pairs from 2012. Prediction: Kalshi BTC/ETH price-range contracts on a 5-minute grid (about 67,000 rows for v1, the full archive from March 2026 for v2) and 1.1 million quote-level rows for v3 (2026-07-21 to 08-26).

MethodEach project has sandboxes (one folder per idea). Inside, the agent may edit only one file (strategy.py or train.py). The 'ruler' (prepare.py, score.py, the dataset and its checksum) is frozen: read-only and hash-pinned, so the agent cannot win by moving the goalposts. Every attempt is scored on a validation slice of past data. If the score beats the best so far, the agent keeps it with a git commit. If not, it reverts. That is 'keep/revert'. The newest slice of data is the sealed test. It stays locked until the search ends, and then a human opens it exactly once, with the score discounted for how many ideas were tried. Pre-registration means the pass/fail rules and stopping rules were written down before any result was seen. A supervisor ('outer loop') runs every 30 minutes as a headless Claude session on cron. It checks that the run is alive and intact, fires tripwires on suspicious jumps, can pause a run, and texts the human over WhatsApp. It never opens the sealed test.

Cost$0 in trading losses; local hardware and a Claude subscription for the supervisor

26 Jun
Forex harness scaffolded; first EUR/USD loop driven by gpt-oss-120b
27 Jun
Scorer hardened after a 14-trade overfit 'won': cross-validation with trade gates, tamper-proof trial counter
29 Jun
Sealed test made multi-window: it must hold across several recent periods, not one lucky block
30 Jun
Supervisor (headless claude -p on a 30-min cron) built; first sealed verdict of the new machinery: USD/JPY FAIL
2 Jul
Inner model switched from gpt-oss-120b to Qwen3-Coder-30B (gpt-oss kept thrashing the edit tool)
3 Jul
git-guard added: a shim that whitelists the exact git commands the agent may run
4 Jul
Forex Program 1 ends under its pre-registered stopping rule: 4 theses, 4 sealed failures
6 Jul
Forex portfolio run (xsect_v1) fails narrowly but is the first positive out-of-sample result; paper-forward starts
9 Jul
Same method ported to Kalshi crypto contracts (kxcrypto_v1)
10 Jul
Supervisor added to the prediction project; append-only journal enforced after the agent rewrote its log
17 Jul
kxcrypto_v2 finishes at 1.44; the supervisor misses about 4 hours of wakes on a Claude session limit (HTTP 429)
23 Aug
Supervisor OAuth session expires; about 65 consecutive failed wakes until 08-26 (the wrapper recorded every failure)
27 Aug
Inner model repointed to DeepSeek-V4-Flash on :8888; a runaway job had OOM-killed the model server
28 Aug
4 GB memory cap per agent batch; v3 launched; DeepSeek over-explores, so a pacing rule is added
29 Aug
v3 window ends with score 0.0 all night; closed, sealed test left unspent
31 Aug
Prediction supervisor cron retired
25 Sep
Forex paper-forward read taken early (INDETERMINATE); forex supervisor stopped; research paused
Sources
  • forex/README.md
  • forex/docs/OUTER_LOOP.md
  • forex/docs/research/program-conclusion-2026-07.md
  • forex/docs/DEPLOYMENT.md
  • forex/scripts/outer_loop_cron.sh
  • forex/OUTER_LOG.md
  • prediction/HANDOFF.md
  • prediction/scripts/run_loop.sh
  • prediction/scripts/outer_loop_cron.sh
  • prediction/research/kxcrypto_v3/AGENTS.md
  • prediction/research/kxcrypto_v2/OUTER_LOG.md
  • prediction/outer_loop/cron_fail_2026-07-17T053003Z.json
  • prediction/outer_loop/cron_fail_2026-08-23T033003Z.json
  • prediction/docs/research/research_ledger_and_pause_brief_2026-08-28.md
  • prediction/docs/research/paper_edge_postmortem.md
RunDatesVerdictKey numbers
EUR/USD news-reaction loop (the shakedown run)26 Jun – 29 Jun✕ Didn't work308
up to iteration 318
USD/JPY economic-surprise loop29 Jun – 30 Jun✕ Didn't workval_dsr 0.701
test_dsr 0.0000 (pass needs at least 0.05)
USD/JPY time-of-day pattern loop30 Jun – 2 Jul✕ Didn't workval_dsr 0.881
test_dsr 0.0001
USD/JPY interest-rate-gap (carry) loop3 Jul – 3 Jul✕ Didn't workval_dsr 0.672
test_dsr 0.0000
USD/JPY yield-curve expectations loop (last single-pair try)4 Jul – 4 Jul✕ Didn't workval_dsr 0.747
test_dsr 0.0000
Five-currency carry + momentum portfolio loop5 Jul – 25 Sep✕ Didn't workval_dsr 0.539
test_dsr 0.0104 (pass at least 0.05)
Kalshi Bitcoin/Ether contract forecaster, first loop9 Jul – 13 Jul✕ Didn't work0.591 to 0.861 (run 1) to 1.099 (run 2)
-$143.93 on 4,163 trades, 17.9% wins
Kalshi Bitcoin/Ether forecaster, second loop (walk-forward)13 Jul – 23 Sep✕ Didn't work0.278 to 1.440
+$0.036 vs -$0.022 per trade (37,649 settles)
Kalshi S&P 500 / Nasdaq-100 range contracts (never launched)16 Jul – 23 Sep– Not pursuedval_metric 0.0 (fold_mean 0.307, 657 trades)
0
Kalshi crypto market-maker loop (v3), one overnight window27 Aug – 31 Aug✕ Didn't work~340 (337 unique trials), 0 kept
2 of 6 folds passing, fold_mean 0.123

EUR/USD news-reaction loop (the shakedown run)

✕ Didn't work

The strategies that looked good on past data lost money on the hidden period. The run's real value was exposing loopholes in the scorer, which were then closed.

EUR/USD: best score so far, final day

The score climbed to about 0.79 within one day of edits, the pattern later shown to predict nothing

View data as table
More about this run
Hypothetical

If it had worked

If the sealed test had passed, the project's deployment plan (forex/docs/DEPLOYMENT.md) says what came next: turn the frozen strategy into a live signal service, trade it on an OANDA demo (paper) account and check that paper results track the backtest, and only then start with minimal real capital on a live OANDA account, scaling only on sustained live results. Concretely, a bot would have traded EUR/USD in the minutes after scheduled economic releases, one position at a time, paying the real spread.

What actually happened

The early sealed check came back at about zero. The failures led to trade gates, a tamper-proof trial counter and the multi-window sealed test that every later sandbox used. No money was involved.
Commits touching the sandbox308Hundreds of kept or committed attempts across several scorer versions.
Journal rowsup to iteration 318The last journal row is iteration 318.
Final val_dsr0.727The saved score of the last strategy (metrics.json).
Early sealed checkabout 0; in-sample Sharpe +2.2, out-of-sample -1.8Quoted in the outer-loop design doc as the first sealed-test lesson (inferred to be this sandbox).
  • forex/research/eurusd_v1/RUN.md
  • forex/research/eurusd_v1/log.md
  • forex/research/eurusd_v1/metrics.json
  • forex/docs/OUTER_LOOP.md
  • git log -- forex/research/eurusd_v1

USD/JPY economic-surprise loop

✕ Didn't work

A classic overfit: profitable in the years it was tuned on, losing in every hidden window.

USD/JPY: best score so far, two runs

Run 1 reached 0.97 by avoiding 2021. After the fix, run 2 topped out at 0.70

View data as table
More about this run
Hypothetical

If it had worked

If the sealed test had passed, the project's deployment plan (forex/docs/DEPLOYMENT.md) says what came next: turn the frozen strategy into a live signal service, trade it on an OANDA demo (paper) account and check that paper results track the backtest, and only then start with minimal real capital on a live OANDA account, scaling only on sustained live results. Concretely, a bot would have taken about 200-270 USD/JPY trades a year (2022-24 counts) right after US and Japanese data releases, on the order of +1% a year if the in-sample years had carried forward.

What actually happened

About -2% in 2025 on paper in the backtest. Nothing was deployed and $0 was lost.
Best validation (run 2)val_dsr 0.701Looked strong on 2021-2025 data. Some docs quote 0.84 here; the verdict commit says 0.701.
Sealed test scoretest_dsr 0.0000 (pass needs at least 0.05)No edge after discounting for 460 ideas tried.
Out-of-sample Sharpe-2.77 over 226 tradesLost money consistently. All 5 sealed windows were negative.
In-sample years2022 +1.07%, 2023 +1.12%, 2024 +0.82%The past looked fine. 2025 (out-of-sample) was -2.01%.
  • forex/research/usdjpy_v1/VERDICT.md
  • forex/research/usdjpy_v1/log.md
  • forex/OUTER_LOG.md
  • git show 5528fc7 (forex)
  • forex/docs/research/program-conclusion-2026-07.md

USD/JPY time-of-day pattern loop

✕ Didn't work

The time-of-day pattern did not carry into 2025-26.

Time-of-day loop: best score so far

Scores kept creeping up through threshold tweaks to 0.88. The sealed test gave about 0

View data as table
More about this run
Hypothetical

If it had worked

If the sealed test had passed, the project's deployment plan (forex/docs/DEPLOYMENT.md) says what came next: turn the frozen strategy into a live signal service, trade it on an OANDA demo (paper) account and check that paper results track the backtest, and only then start with minimal real capital on a live OANDA account, scaling only on sustained live results. Concretely, a bot would have made about 440-870 session-timed USD/JPY trades a year (in-sample counts). The in-sample years returned roughly +2% to +5.5% a year.

What actually happened

The hidden period was about flat: 2025 +0.40%, 2026 -0.35%, pooled Sharpe -0.27. Nothing deployed.
Best validationval_dsr 0.881The highest forex validation score of Program 1.
Sealed testtest_dsr 0.0001Effectively zero after discounting for 694 ideas.
Out-of-sample Sharpe-0.27 over 716 tradesRoughly flat to slightly losing. Only 1 of 5 hidden windows was positive.
In-sample 2022+5.50% on 866 tradesThe kind of year the search was fitted to.
  • forex/research/intraday_usdjpy_v1/VERDICT.md
  • forex/research/intraday_usdjpy_v1/log.md
  • forex/docs/fable_analysis.md
  • git log -- forex/research/intraday_usdjpy_v1

USD/JPY interest-rate-gap (carry) loop

✕ Didn't work

A rule fitted to the 2021-24 rate-hiking cycle broke when rates started to converge.

Carry loop: best score so far

The 0.79 peak was the overfit the supervisor caught; the verified best was 0.672

View data as table
More about this run
Hypothetical

If it had worked

If the sealed test had passed, the project's deployment plan (forex/docs/DEPLOYMENT.md) says what came next: turn the frozen strategy into a live signal service, trade it on an OANDA demo (paper) account and check that paper results track the backtest, and only then start with minimal real capital on a live OANDA account, scaling only on sustained live results. Concretely, a bot would have held USD/JPY long or flat for days at a time, about 20-40 trades a year. The in-sample years returned +3% to +8% a year.

What actually happened

The hidden 2025-26 period lost money (-3.62% in 2025, -1.29% in 2026). Nothing deployed.
Best verified validationval_dsr 0.672The claimed 0.79 peak was regime-dodging and was reverted.
Sealed testtest_dsr 0.0000No edge after discounting for 216 ideas.
Out-of-sample Sharpe-1.37 over 40 tradesLosing, and on very few trades. 1 of 5 windows positive.
In-sample 2022+8.11%The rate-hiking years looked good; 2025 was -3.62%.
  • forex/research/carry_usdjpy_v1/VERDICT.md
  • forex/research/carry_usdjpy_v1/log.md
  • forex/docs/research/program-conclusion-2026-07.md
  • git log -- forex/research/carry_usdjpy_v1

USD/JPY yield-curve expectations loop (last single-pair try)

✕ Didn't work

Even the design built to anticipate regime change died at the regime change. This closed Program 1.

Yield-curve loop: best score so far

Fast climb from 0.41 to about 0.77 in six hours

View data as table
More about this run
Hypothetical

If it had worked

If the sealed test had passed, the project's deployment plan (forex/docs/DEPLOYMENT.md) says what came next: turn the frozen strategy into a live signal service, trade it on an OANDA demo (paper) account and check that paper results track the backtest, and only then start with minimal real capital on a live OANDA account, scaling only on sustained live results. Concretely, a bot would have made about 90-110 USD/JPY trades a year (2022-24 counts), driven by yield-curve signals. The in-sample years returned +4% to +16%.

What actually happened

The hidden 2025-26 period lost: 2025 -2.14%, 2026 -6.30%. Nothing deployed.
Final validationval_dsr 0.747Best in-sample profile of the 4 theses.
Sealed testtest_dsr 0.0000No edge after discounting for 134 ideas.
Out-of-sample Sharpe-1.16 over 115 tradesLosing: 2026 -6.30%.
In-sample 2022 / 2024+16.07% / +10.53%It looked excellent on the past.
  • forex/research/carry2_usdjpy_v1/VERDICT.md
  • forex/research/carry2_usdjpy_v1/log.md
  • forex/research/carry2_usdjpy_v1/metrics.json
  • forex/docs/research/program-conclusion-2026-07.md

Five-currency carry + momentum portfolio loop

✕ Didn't work

Close, but not consistent enough. The live paper test that followed was too short to tell either way.

Portfolio loop: best score so far

From a deliberately weak 0.02 seed to 0.54 in one night

View data as table
More about this run
Hypothetical

If it had worked

If the sealed test had passed, the project's deployment plan (forex/docs/DEPLOYMENT.md) says what came next: turn the frozen strategy into a live signal service, trade it on an OANDA demo (paper) account and check that paper results track the backtest, and only then start with minimal real capital on a live OANDA account, scaling only on sustained live results. Concretely, a weekly rebalance would have held long 2 and short 2 of 5 currencies. The out-of-sample years ran +2.7% to +6.6% (2024 -2.4%). Program 2's charter allowed one more structured revision before any real-money decision.

What actually happened

The sealed test failed its consistency gates. 57 forward paper days returned +0.28%, which is INDETERMINATE. Research was paused and FMP inputs were cancelled, so the test was closed. $0 at risk.
Best validationval_dsr 0.539Modest by design; up from a 0.023 seed.
Sealed testtest_dsr 0.0104 (pass at least 0.05)Short of the bar after discounting for 144 ideas.
Out-of-sample Sharpe+0.37 over 210 tradesThe first strategy to make money on the hidden period, but only 2 of 5 windows were positive.
Paper-forward, 57 days+0.28% vs -0.04% for a naive trend basketNot distinguishable from zero.
  • forex/research/xsect_v1/VERDICT.md
  • forex/research/xsect_v1/log.md
  • forex/OUTER_LOG.md
  • forex/docs/research/program2-charter-2026-07.md
  • forex/docs/research/paper-forward-first-read-2026-09-25.md

Kalshi Bitcoin/Ether contract forecaster, first loop

✕ Didn't work

The model learned one six-week market mood. When the market changed in July it became confidently wrong.

Crypto v1: best score so far, runs 1 and 2

Steady climb to 1.10. The same model lost money on paper within two days

View data as table
More about this run
Hypothetical

If it had worked

The project's rule (research ledger brief): sealed test run once by a human, then a paper lane (live Kalshi prices, zero capital), and only then small real capital. Concretely, a bot would have bought one contract per signal on BTC/ETH range markets every 5 minutes whenever its price beat the quote by more than 1 cent after fees. The research backtest implied about +$0.26 expected per trade.

What actually happened

The paper lane lost $143.93 in 2 days. The harness replay agreed (-$131), so the model was at fault, not execution. The sealed test was never spent. The v2 redesign (walk-forward folds, calibration gate) followed.
Validation climb0.591 to 0.861 (run 1) to 1.099 (run 2)Kept improving on past data.
Paper result, 2 days-$143.93 on 4,163 trades, 17.9% winsLost money at once on live prices.
Skill vs market+0.064 in research, -0.298 liveBetter than the market on the past, much worse live.
Guard blocks59 (cumulative)Times the git-guard stopped the agent (e.g. reset --hard, resetting the trial counter).
  • prediction/research/kxcrypto_v1/RULER.md
  • prediction/research/kxcrypto_v1/log.md
  • prediction/research/kxcrypto_v1/metrics.json
  • prediction/research/kxcrypto_v1/OUTER_LOG.md
  • prediction/docs/research/paper_edge_postmortem.md
  • prediction/HANDOFF.md

Kalshi Bitcoin/Ether forecaster, second loop (walk-forward)

✕ Didn't work

It looked excellent on past data and lost a few cents on almost every live paper trade, so the one-time exam was never spent on it.

Crypto v2: best score so far

Most of the gain came in the first 50 experiments; the long tail was mostly rejects

View data as table
More about this run
Hypothetical

If it had worked

The project's rule (research ledger brief): sealed test run once by a human, then a paper lane (live Kalshi prices, zero capital), and only then small real capital. Concretely, one contract per signal on BTC/ETH contracts at 5-minute cadence, thousands of trades a week, targeting the model's expected +3.6 cents per trade after fees. About +$36 per 1,000 trades before scaling.

What actually happened

The paper lane realized about -2.2 to -2.6 cents per trade: -$4,232 in paper money over 176k settles by 09-12. No real money. Sealed block left unspent indefinitely.
Validation0.278 to 1.440The strongest score either project ever produced.
Paper, expected vs realized+$0.036 vs -$0.022 per trade (37,649 settles)The model's claimed edge lost to adverse selection, a gap of about 6 cents per trade.
Paper through 09-12176,461 settles, -$4,232 cumulative (paper money)Consistent small losses, 14.6% win rate.
Paper at stop (09-23)~222k settles, -$0.026 per tradeUnchanged picture.
  • prediction/research/kxcrypto_v2/RULER.md
  • prediction/research/kxcrypto_v2/SUMMARY.md
  • prediction/research/kxcrypto_v2/metrics.json
  • prediction/research/kxcrypto_v2/log.md
  • prediction/research/kxcrypto_v2/OUTER_LOG.md
  • prediction/research/kxcrypto_v2/action-needed.md
  • prediction/HANDOFF.md

Kalshi S&P 500 / Nasdaq-100 range contracts (never launched)

– Not pursued

Built and waiting for more data; the research pause came first.

More about this run
Hypothetical

If it had worked

The project's rule (research ledger brief): sealed test run once by a human, then a paper lane (live Kalshi prices, zero capital), and only then small real capital. Concretely, a bot would have traded daily S&P 500 and Nasdaq-100 range contracts when its price beat the quote after fees.

What actually happened

Nothing ran and $0 was spent.
Baselineval_metric 0.0 (fold_mean 0.307, 657 trades)Not consistent across folds, so it scores the floor.
Experiments run0The loop was never launched.
  • prediction/research/kxindex_v1/log.md
  • prediction/research/kxindex_v1/RULER.md
  • prediction/HANDOFF.md

Kalshi crypto market-maker loop (v3), one overnight window

✕ Didn't work

The fills the bot would get are exactly the ones the market wants to give it. Being a maker does not escape that at this data speed.

Crypto v3: the headline score never moved

The average fold score rose slightly, but the all-folds rule held the result at 0

View data as table
More about this run
Hypothetical

If it had worked

The project's rule (research ledger brief): sealed test run once by a human, then a paper lane (live Kalshi prices, zero capital), and only then small real capital. Concretely, a bot would have posted resting quotes on BTC/ETH hourly and daily contracts, leaning with 30-second spot momentum and skipping high-activity moments (the H7 gate), paying $0 maker fees.

What actually happened

All night at score 0. The agent itself recommended stopping. The re-gating option would have meant changing the ruler and was not taken. Closed with $0 spent. The conclusion is that beating adverse selection here needs queue position, real depth or sub-second data.
Experiments~340 (337 unique trials), 0 keptNothing ever beat the seed.
Best config2 of 6 folds passing, fold_mean 0.123Close on some periods but blocked on others, so the headline stayed at 0.
Session deaths3 (batches 11, 13, 26)A /tmp write, a repo-root path and .git exploration were each auto-rejected by the harness, which ends the session.
Ad-hoc evaluate() calls62DeepSeek's exploration scripts raised the trial count from 1 to 29 before the first real experiment, making any sealed discount harsher.
  • prediction/research/kxcrypto_v3/log.md
  • prediction/research/kxcrypto_v3/metrics.json
  • prediction/research/kxcrypto_v3/OUTER_LOG.md
  • prediction/research/kxcrypto_v3/AGENTS.md
  • prediction/HANDOFF.md
  • prediction/docs/research/research_ledger_and_pause_brief_2026-08-28.md

Glossary

Basis point (bp)
One hundredth of one percent. 50 bp is 0.5%, or $5 on $1,000.
Paper trading
Trading with simulated money against live prices, to see what would have happened without risking anything.
Sealed test
A block of recent data kept locked during research and opened exactly once at the end. It is the honest exam.
Research (validation) score
How well an idea did on the data used while developing it. It is usually too optimistic.
Sharpe ratio
Return divided by how bumpy the ride was, per year. Around 1 is good for a trading strategy; below 0 means it lost money.
Placebo
The same test run on days when nothing special happened. It shows how big a result chance alone produces.
Adverse selection
When your trades tend to fill exactly when the price is about to move against you, because better-informed traders are on the other side.
Kalshi contract
A yes/no bet that pays $1 if the event happens. Its price, such as 30¢, reads as a 30% chance.
Calibration
Whether prices match reality: contracts priced at 30¢ should win about 30% of the time.
Carry and momentum
Two classic currency ideas. Carry: hold currencies that pay higher interest. Momentum: hold currencies that have been rising.
Autoresearch loop
An AI coding agent that repeatedly edits a trading model, scores it on research data, and keeps only changes that improve the score.
Pre-registration
Writing down the question, method and pass mark before seeing any results.