Track 03: Systematic Trading

Inspiration

Every month, traders sell S&P 500 options into the CPI report to collect an event premium, and every so often a surprise wipes out months of gains. Meanwhile, prediction markets like Kalshi now price the CPI print and the next Fed decision directly, as full probability distributions. We wanted to know whether those markets can tell an options seller when to stand aside.

The idea came from research showing that an announcement's market impact is roughly the news it releases times the market's sensitivity to that news (Knox, Londono, Samadi and Vissing-Jorgensen). Kalshi's CPI ladder measures the first part. Its Fed ladder might measure the second: if the next meeting is a coin flip, a CPI surprise can swing it, so stocks should care more.

What we found

  • Kalshi's Fed odds react exactly as theory predicts. When the next meeting is live, a CPI surprise moves Kalshi's expected Fed rate much more ($p = 0.007$).
  • That doesn't reliably reach stock prices. Our pre-registered test on 49 releases came back NO-GO: the effect has the predicted sign, but it rests on 2022's hiking cycle and reverses without it.
  • The CPI-day premium looks like fair pay for tail risk. Using Cboe's VIX1D as the release-day option price, realized moves were smaller than implied on 74% of releases, yet the average variance premium is about zero, and a defined-risk butterfly was flat over 40 in-sample releases.
  • Neither Kalshi filter improved the timing (random-skip $p = 0.17$). We would not trade this strategy, and the note says so.

How we built it

  1. Hypothesis first, verifiable on-chain. Before downloading the data each stage tested, we wrote down every hypothesis, variable and decision rule, committed it, and timestamped it on Solana mainnet. Each memo transaction holds the SHA-256 of a manifest that hashes every frozen file, so anyone can check that the plan came before the results. We did this three times: Stage 1, Stage 2 (written after Stage 1's results were known, which the note discloses) and a liquidity study.
  2. Data. Kalshi's public API (CPI, core CPI and Fed ladders, turned into probability distributions with isotonic regression), SPY minute bars and dividends from Massive, Cboe's VIX and VIX1D histories, and the BLS release calendar.
  3. Stage 1 tests whether Fed liveness $L$ predicts how stocks react to a CPI surprise $S$: $$r = a + b\,S + c\,(S \times L) + d\,L + e\,\mathrm{VIX} + \varepsilon$$ with HC3 errors, within-year permutation tests, a wild bootstrap and leave-one-out checks. A GO required five conditions at once.
  4. Stage 2 prices a short butterfly from $\sigma = \mathrm{VIX1D}/\sqrt{252}$ and measures the variance premium $\sigma^2 - r^2$. Between 4:00 and 4:15 p.m., VIX1D uses only next-day options, so on a release eve it prices release-day risk. Every filter uses only earlier releases.
  5. Liquidity. Real SPXW quotes on the release eves showed that crossing all four spreads costs a median 0.7% of the straddle, against the 3% we assumed, with a median capacity of roughly 87 million dollars at 1% risk per release.
  6. Reporting. Interactive HTML dashboards, and a quant note built by a script that reads every number from the results files. We disclose every specification we ran. python run_all.py reproduces all 114 headline numbers from a fresh clone, with no API keys needed.

We used Claude, Claude Code and ChatGPT as coding and review assistants. We're responsible for every line of code and every claim.

Challenges we ran into

  • Option quotes cost money, so we found a free substitute: VIX1D at its close is the market's own price for the next day's risk.
  • Kalshi data is messy: legacy tickers, live versus archived endpoints, and thin far strikes. A ladder's spread partly reflects how widely Kalshi lists strikes, and we report that as a caveat.
  • The 2025 government shutdown moved one CPI release and cancelled another, so both are excluded.
  • The official 9:30 open is partly stale, so we measure the reaction at 9:35.
  • Honesty under time pressure. We learned the track's out-of-sample rule after our tests were frozen. We logged it as a dated deviation and reported the split anyway: all of the base strategy's profit came in the final 10 releases, exactly the one-period pattern the track warns about.
  • Fat tails. Repricing under Student-t distributions erases the small profit. Real quotes sit closer to the normal model, but either way the in-sample result is flat.

What we learned

  • A clean negative result is still a result. Prediction markets process macro news well, but in 2022–2026 that information didn't help time equity event risk.
  • Pre-registration plus an on-chain timestamp turns "we didn't tune it" from a promise into something anyone can check.
  • Measure your assumptions. Our cost assumption was conservative; the pricing model was the bigger risk.
  • With about 50 events, power is low: "no evidence" isn't "no effect", and we report what our tests could and couldn't detect.

5 Page Write-up https://github.com/shmoney2/kalshi-cpi-prereg/blob/main/note/pricing_the_print.pdf

Built With

  • cboe-blockchain:-solana
  • core:-python
  • css
  • github
  • if-that-tag-autocompletes)
  • its-old-name
  • javascript
  • massive-api-(or-polygon.io
  • matplotlib
  • numpy
  • pandas
  • requests-data-and-apis:-kalshi-api
  • scipy
  • solders-dashboards:-html
  • svg-tooling:-git
Share this project:

Updates

Submission history