work / kalshi

Kalshi vs. options IV

Testing whether prediction markets give a cleaner probability signal than options-implied volatility. On unemployment they lead by about two days. On CPI they do not.

The CPI markets are the honest half of this project. They show nothing, which is what stops the unemployment result from being cherry-picked.

Status
Research · finished, written up
Finding
Kalshi unemployment markets Granger-cause VIX at a 2-day lag, p = 0.024
Stack
Python · Kalshi API · yfinance · statsmodels
Source
github.com/rushjais/kalshi-iv-research ↗

01  The question

Options markets encode uncertainty about the future in implied volatility, but they encode it indirectly — IV bundles together the probability of a move, the size of the move, and the price of insurance against it.

Prediction markets state a probability outright. If a Kalshi contract says 62% chance unemployment prints above some threshold, that is a clean number with no volatility risk premium tangled into it.

So: does the clean signal move first? I pulled Kalshi macro market prices alongside VIX, aligned them daily, and ran Granger causality tests at a range of lags to see which series helps predict the other.

02  The result

A · KALSHI IMPLIED PROBABILITY (U-3 > 4.3%) vs VIX · 222 trading days 2025-012025-072026-01 0.980.01 Kalshi prob VIX B · GRANGER CAUSALITY, KALSHI → VIX · p-value by lag (first differences) 0.878lag 10.024lag 20.089lag 30.139lag 40.172lag 5 p = 0.05 Only the 2-day lag clears the threshold. Lags 1 and 3–5 do not.
Plotted from the actual project data — kalshi_unemployment_panel.csv against yahoo_iv_proxy.csv, median threshold (U-3 > 4.3%), both series first-differenced, Granger tested at lags 1–5. Reproduced 2026-09-07: 222 observations, 2025-01-21 to 2026-01-09, lag 2 p = 0.0238. Not a schematic.

03  How the pipeline runs

Kalshi APImarket pricesYahoo FinanceVIXAlign dailyoverlapping windowUnemployment222 daysCPI90 days · controlp = 0.0242-day leadNo signalas expectedGranger causality tested across lags 1–10
Two markets through one pipeline. The CPI arm is not a failed experiment — it is the control that makes the unemployment result worth reporting.

04  What I found

  • Unemployment markets lead VIX by two days (Granger causality, p = 0.024, over 222 days of overlapping data from January 2025 to January 2026). Correlation is −0.152 at a 5-day lag.
  • The sign makes economic sense. Higher probability of stable employment goes with lower VIX — a labour market that is holding up means less market uncertainty. A result that only worked with the sign flipped would be a red flag.
  • CPI markets show nothing, on 90 days of data. I report this because a study that only shows the market where the result worked is not a study.
  • I do not have a story I believe for why the two differ. It might be the sample length, it might be that unemployment prints are more predictable from alternative data, it might be noise. Saying so is more useful than inventing a mechanism.

p=0.024

Granger, 2-day lag

222

days of overlap

−0.152

corr. at 5-day lag

0

significant CPI lags

Honest limits. One year, two market families, and a p-value that would not survive aggressive multiple-comparison correction across all the lags I tested. Granger causality measures predictive precedence, not causation — and a two-day statistical lead is not the same thing as a tradeable edge once you account for costs and liquidity on Kalshi. Treat this as a promising direction, not a finding.