Chicago Heat Momentum
In KXHIGHCHI daily high-temperature markets, freshly observed heat at Chicago Midway (KMDW) above 71°F with a recent (<15 min) observation can still be mispriced in the contract. Posting a 1¢-above-best-bid YES maker order when the price is between 15¢ and 50¢, the spread is at least 2¢, and more than 45 minutes remain captures this repricing edge, exiting on subsequent temperature confirmation (temp_hour_1 > 72) plus favorable repricing (price > 66¢), a -$3 unrealized stop, or holding past the 45m cutoff.
Historical research only. Not investment advice.
Top Strategy Variants
Bottom Strategy Variants
Short Disclaimer
This is a historical simulation research note only. It does not describe live trading results, and nothing here should be read as a claim about future profits.
Intro / Thesis
We tested whether KXHIGHCHI daily high-temperature contracts on Kalshi leave a short-lived edge after fresh, warm observations at Chicago Midway (KMDW). The core idea: when current temperature prints above 71°F and the observation is less than 15 minutes old, the YES contract can still be mispriced for a brief window. A passive, post-only YES order one cent above the best bid was designed to capture that repricing without chasing.
The full sweep completed 100 out of 100 variants. The results are far weaker than the raw top-line ROI suggests once we account for how many parameter combinations were tested.
Variant and Strategy Explanation
The base strategy is a custom Kalshi loop running every 60 seconds on the KXHIGHCHI series. Entry requires all of the following:
- Current KMDW temperature above 71°F
- Observation age under 900 seconds
- Contract price above 15¢ and below 50¢
- Spread at least 2¢
- More than 45 minutes to expiry
- No current position
When those conditions hold, the strategy posts a YES buy order for 40 contracts at best bid plus 1¢, post-only.
The exit logic has three branches:
- Heat confirmed hold: temp_hour_1 above 72°F and contract price above 66¢ triggers a full sell.
- Stale or late exit: any position held when time to expiry drops below 45 minutes is sold.
- Stop loss: any position with unrealized PnL below -$3 is sold.
The parameter sweep varied two risk settings:
risk.price_floorfrom 0.05 to 0.45risk.price_ceilingfrom 0.55 to 0.95
That produced a 10-by-10 grid of 100 tested variants. Every successful variant has been saved as a runnable Turbine strategy.
An important consequence of the sweep design: the ceiling parameter was never exercised in this historical window. Varying risk.price_ceiling produced identical trades in every cell.
Top Results
The highest-ranked variants all share the same economic outcome: a total PnL of $50.92, ROI of 50.92%, Sharpe of 0.31, and max drawdown of -$20.28 across 30 reported trades.
| Rank | Label | Total PnL | ROI | Sharpe | Max DD | Trades |
|---|---|---|---|---|---|---|
| 1 | floor 0.05 / ceil 0.55 | $50.92 | 50.92% | 0.31 | -$20.28 | 30 |
| 2 | floor 0.05 / ceil 0.59 | $50.92 | 50.92% | 0.31 | -$20.28 | 30 |
| 3 | floor 0.05 / ceil 0.64 | $50.92 | 50.92% | 0.31 | -$20.28 | 30 |
| 4 | floor 0.05 / ceil 0.68 | $50.92 | 50.92% | 0.31 | -$20.28 | 30 |
| 5 | floor 0.05 / ceil 0.73 | $50.92 | 50.92% | 0.31 | -$20.28 | 30 |
| 6 | floor 0.05 / ceil 0.77 | $50.92 | 50.92% | 0.31 | -$20.28 | 30 |
| 7 | floor 0.05 / ceil 0.82 | $50.92 | 50.92% | 0.31 | -$20.28 | 30 |
| 8 | floor 0.05 / ceil 0.86 | $50.92 | 50.92% | 0.31 | -$20.28 | 30 |
The winning coordinate was price_floor = 0.05 and price_ceiling = 0.55.
But the most important statistic here is the deflated Sharpe. After correcting for the number of cells tested, the deflated Sharpe is 0.09. The expected max Sharpe under a skill-less selection process across the same sweep is 0.47. In other words, the best result is worse than what we would expect to find by picking the luckiest cell from a no-skill parameter sweep.
The robustness check also flags the ceiling axis as inert. The top results are not a ceiling effect. They are a floor effect, and even that is consistent with selection noise.
Bottom Results
The worst variants were concentrated at price_floor = 0.36. Every ceiling value paired with that floor produced the same losing outcome: total PnL of -$16.77, ROI of -16.77%, Sharpe of -0.18, and max drawdown of -$18.20 across 21 trades.
| Rank | Label | Total PnL | ROI | Sharpe | Max DD | Trades |
|---|---|---|---|---|---|---|
| 81 | floor 0.36 / ceil 0.55 | -$16.77 | -16.77% | -0.18 | -$18.20 | 21 |
| 82 | floor 0.36 / ceil 0.59 | -$16.77 | -16.77% | -0.18 | -$18.20 | 21 |
| 83 | floor 0.36 / ceil 0.64 | -$16.77 | -16.77% | -0.18 | -$18.20 | 21 |
| 84 | floor 0.36 / ceil 0.68 | -$16.77 | -16.77% | -0.18 | -$18.20 | 21 |
| 85 | floor 0.36 / ceil 0.73 | -$16.77 | -16.77% | -0.18 | -$18.20 | 21 |
| 86 | floor 0.36 / ceil 0.77 | -$16.77 | -16.77% | -0.18 | -$18.20 | 21 |
| 87 | floor 0.36 / ceil 0.82 | -$16.77 | -16.77% | -0.18 | -$18.20 | 21 |
| 88 | floor 0.36 / ceil 0.86 | -$16.77 | -16.77% | -0.18 | -$18.20 | 21 |
The same ceiling flatness appears here: changing the ceiling from 0.55 to 0.86 changed nothing. The floor parameter is doing all the work, and at 0.36 it produced the worst cluster in the sweep.
Conclusion
This research does not support the original thesis in a deployable form. The top raw result, a $50.92 total PnL at a 0.05 price floor, looks superficially attractive but fails the selection-noise test. The deflated Sharpe of 0.09 is below the expected max Sharpe of 0.47 from a skill-less sweep, and the robustness warning explicitly says the top results are consistent with the luckiest draw from the parameter grid.
The ceiling parameter did not influence outcomes at all in this window. The floor parameter did, but the spread between the best and worst floor settings looks like exactly the kind of pattern a 100-cell sweep can produce by chance.
No variant here should be described as strong, validated, or promising. The saved strategies are runnable, but that is an implementation property, not an edge.
Long Disclaimer
This report is a historical simulation research document prepared for internal strategy review. It is not an offer, recommendation, or solicitation to buy or sell any financial instrument, including event contracts, prediction market positions, or crypto-adjacent products.
All performance figures are derived from backtests or historical parameter sweeps conducted over a limited window. Backtested results do not represent live trading. They are subject to survivorship bias, lookahead bias, data errors, execution assumptions, and overfitting, especially when large numbers of parameter combinations are tested and the top results are selected afterward.
The simulation assumes order execution at modeled prices, including post-only maker behavior. Live markets may reject post-only orders, move before fill, or exhibit different spread and depth behavior. The strategy may also be exposed to exchange outages, data feed latency, NWS observation delays, and contract settlement differences.
The parameter sweep described here included 100 tested cells. When many variants are tested, the best observed result is expected to overstate the true edge. In this case, the deflated Sharpe is 0.09, and the robustness statistics indicate the top result is consistent with selection noise. The permutation test result was not supplied in the available statistics, so no permutation p-value is quoted in this report.
The strategies mentioned as saved are runnable artifacts only. Their existence does not imply that they have been validated, stress-tested, or approved for live deployment.
Past performance, simulated or real, is not indicative of future results. Any decision to deploy capital based on this research is the sole responsibility of the reader.
About this Kalshi strategy backtest
What question does Chicago Heat Momentum investigate?
In KXHIGHCHI daily high-temperature markets, freshly observed heat at Chicago Midway (KMDW) above 71°F with a recent (<15 min) observation can still be mispriced in the contract. Posting a 1¢-above-best-bid YES maker order when the price is between 15¢ and 50¢, the spread is at least 2¢, and more than 45 minutes remain captures this repricing edge, exiting on subsequent temperature confirmation (temp_hour_1 > 72) plus favorable repricing (price > 66¢), a -$3 unrealized stop, or holding past the 45m cutoff.
Read the analysis alongside the individual variant results. Check which entry, exit, price-band or risk settings changed, which settings stayed fixed, and whether the report documents enough historical coverage to support its comparison. A different parameter value defines a different simulation; it does not establish a new source of live trading returns.
How many strategy variants are included?
This report lists 100 completed and 0 failed strategy variants. Failed comparisons do not count as successful tests with zero profit. Review trade counts and drawdown alongside net P&L, win rate and Sharpe, and read any coverage or execution caveats in the analysis. A result based on very few trades needs particular care, even when its return looks high.
Does a profitable Kalshi backtest predict live performance?
These are historical simulations. Live results can differ because of liquidity, fees, slippage, latency, market resolution, outages and data quality. Selecting the best result after comparing many variants can also overstate how reliably it will perform on new data. Compare nearby settings, inspect losing variants and test on a separate period before considering a live run. The report is research, not a promise of profit or investment advice.
How can I inspect or test a strategy from this report?
Use an available Open strategy link to inspect that variant. Review its rules, market, date window, fill assumptions, fees and trade history before changing parameters or rerunning it. Confirm which data and execution assumptions the selected market actually supports; a replay does not establish that every historical order could have filled live. For the workflow, read the Kalshi and prediction market backtesting guide. The Kalshi backtesting software page explains the product's supported testing workflow.
This report is generated from historical simulations. Backtests can be wrong or incomplete, and live trading can differ materially because of liquidity, fees, slippage, latency, market resolution, outages, and data quality. Do your own review before running any strategy.