Entry Window Test
Test whether narrowing the entry window to later in the 15-minute ETH cycle raises the win rate, holding the 10-cent per-fill stop and all other filters fixed.
Historical research only. Not investment advice.
Comparison Results
Kalshi ETH 15-Minute Entry Window Test
Disclaimer (Short)
This is historical simulation research on a prediction-market strategy. It is not investment advice, and nothing here should be read as a promise of future results. Simulated performance is not live trading performance.
Intro / Thesis
The question for this batch was narrow and mechanical: on Kalshi's 15-minute ETH market (KXETH15M), does waiting longer before entering raise the win rate?
The reference strategy enters somewhere in the last 7 minutes of the contract, using a Coinbase ETH feed (price, ema_12_1m, macd_1m, macd_signal_1m, refreshed every 10s). It buys YES when ETH price is above its 1-minute EMA-12 and the 1-minute MACD is above its signal line, and buys NO on the mirror condition. Entry requires a spread under 0.03, an ask under 0.60, and no existing position. Each fill carries a 10-cent stop: if the executable side bid falls to the fill's purchase price minus 0.10, that fill is sold. One entry per market, $50 max notional, evaluated every 30 seconds.
The thesis was that the late part of the cycle contains better information — the outcome is closer, noise has had time to resolve — so narrowing entry to the last 5 minutes, and then the last 3 minutes, might convert a thin edge into a thicker one. The only thing moving between variants is the upper bound on time_to_expiry: 7m, 5m, then 3m. Everything else — stop, filters, sizing, market selection — is held fixed.
Three of three variants completed over a 30-day window.
Variant and Strategy Explanation
Each variant is a complete, standalone rule set; the shared base is context, not a component that gets inherited across the comparison.
All three run the same four-rule structure, evaluated top-to-bottom, first match wins:
- Rule 1: if YES position size > 0, sell YES with a per-fill stop gate of executable bid ≤ that fill's purchase price − 0.10. Gaps can sell lower. Only that fill's remaining quantity is sold.
- Rule 2: the same structure for NO.
- Rule 3: buy YES (size 50) when
time_to_expiryis at or below the variant's upper bound and above 1m, both position sizes are 0, spread < 0.03,yes_best_ask< 0.6, ETH price >ema_12_1m, andmacd_1m>macd_signal_1m. - Rule 4: buy NO (size 50) on the mirror conditions.
What changes per variant:
- Baseline: 7m window, 10c stop — entry allowed from 7m down to 1m before expiry.
- Last 5m window only, 10c stop — entry allowed only from 5m down to 1m.
- Last 3m window only, 10c stop — entry allowed only from 3m down to 1m.
Risk caps are common to all three: max position 53 contracts, YES bounds 0.05–0.95, one entry per market, $50 max notional per market, 30-second loop. Note that entry spend budget is not released by later sells, and because max_entries_per_market is 1, partial fills and maker chunks can each consume that single entry slot — conservative behavior, but it also means the trade counts below are not a clean 1:1 count of distinct market decisions.
Top Results
Ranked by ROI over the 30-day window:
| Rank | Variant | Trades | Win rate | Total P&L | ROI | Max drawdown | Sharpe |
|---|---|---|---|---|---|---|---|
| 1 | Last 3m window only, 10c stop | 999 | 31.8% | $597.34 | 1127.06% | −$212.88 | 0.36 |
| 2 | Last 5m window only, 10c stop | 1371 | 29.5% | $455.47 | 859.38% | −$377.01 | 0.20 |
| 3 | Baseline: 7m window, 10c stop | 1768 | 28.3% | $34.74 | 65.55% | −$585.06 | 0.00 |
The direction of the thesis held up in this run. Narrowing the window raised win rate in a monotone way: 28.3% → 29.5% → 31.8%. Fewer trades were taken (1768 → 1371 → 999), which is expected — you are removing the earlier entry opportunities — and the remaining trades were the better ones. Total P&L and ROI moved in the same direction as win rate, and max drawdown shrank from −$585.06 at the 7m baseline to −$212.88 at 3m.
Two things in this table are worth flagging rather than smoothing over.
First, the win rates are all below 50%. That is not a contradiction of the P&L figures by itself — traders on short-horizon binary contracts can win a minority of the time and still come out ahead if the average winer is much bigger than the average loser, and the 10-cent stop caps the loss per fill while a correct directional bet can ride toward settlement. But the report does not have the per-trade win/loss size distribution, so this is an observation about what the numbers are consistent with, not an explanation of the gap.
Second, and more awkward: the ROI numbers are very large relative to the stated $50 max notional and $53 max position. Simulated ROI over 30 days of 859% and 1127% is not something to take at face value. The discrepancy between the notional caps as described and the reported ROI is unresolved from the data available here. It could be a denominator convention in how ROI is computed, it could be that the effective capital base is much smaller than the notional caps suggest, or it could be a difference in how P&L is accumulated versus how the base is defined. This report does not have a validated explanation, so it states the discrepancy plainly rather than assigning one.
Bottom Results
| Rank | Variant | Trades | Win rate | Total P&L | ROI | Max drawdown | Sharpe |
|---|---|---|---|---|---|---|---|
| 3 | Baseline: 7m window, 10c stop | 1768 | 28.3% | $34.74 | 65.55% | −$585.06 | 0.00 |
| 2 | Last 5m window only, 10c stop | 1371 | 29.5% | $455.47 | 859.38% | −$377.01 | 0.20 |
| 1 | Last 3m window only, 10c stop | 999 | 31.8% | $597.34 | 1127.06% | −$212.88 | 0.36 |
Read bottom-up, this is the same ordering: the 7m baseline is the weakest of the three on every metric except trade count. Its Sharpe is reported as 0.00. That is a surprising value given positive total P&L of $34.74 and a nonzero drawdown, and the cause is unresolved in this data. A zero Sharpe alongside positive P&L and a five-figure drawdown is not a combination this report can explain from the fields provided, so it is left as-is rather than interpreted.
The 7m baseline also shows the worst drawdown (−$585.06) and the lowest Sharpe, which is a consistent story — it took the most trades, entered earliest, and carried the most risk for the least return in this sample.
Conclusion
Within this 30-day simulation on Kalshi KXETH15M, the entry-window thesis behaved as hypothesized. Restricting entry to the last 3 minutes of the 15-minute cycle produced the highest win rate (31.8%), the highest total P&L ($597.34), the best ROI (1127.06%), the smallest max drawdown (−$212.88), and the best Sharpe (0.36) of the three variants. The 5m variant sat between the baseline and the 3m variant on most metrics, which is what a genuine window effect would look like rather than a single lucky configuration.
Each of the three successful variants is saved in Turbine as a runnable strategy under the entry-window-test-* slug family, so any of them can be re-run or carried forward.
Three caveats deserve to travel with that conclusion:
- This was an explicit three-way batch, not a sweep. No parameter grid was searched and no permutation or robustness test was run. The winner winning once does not establish that the 3m window is a stable edge.
- The reported ROI magnitudes sit awkwardly against the $50 notional cap, and the baseline's Sharpe of 0.00 is not consistent with its positive P&L and drawdown in any way this report can explain. Both issues are unresolved here and should be resolved before treating the rankings as final.
- A 30-day window on 15-minute crypto contracts is a small, regime-dependent sample. Different periods and different risk budgets can produce very different orderings.
The honest summary: the experiment answered the question it was built to answer, the answer pointed the way the thesis expected, and the numbers also contain at least two things that do not yet add up.
Disclaimer (Long)
This document is a research write-up of a historical simulation. It is published for informational and educational purposes only. It is not investment advice, financial advice, trading advice, or a recommendation to buy or sell any security, contract, derivative, or prediction-market position. It is not an offer or solicitation.
All figures in this report come from a backtest over a fixed historical period on Kalshi's 15-minute ETH series and a Coinbase ETH reference feed. Backtests are reconstructions. They are subject to look-ahead risk, fill-ass
About this Kalshi strategy backtest
What question does Entry Window Test investigate?
Test whether narrowing the entry window to later in the 15-minute ETH cycle raises the win rate, holding the 10-cent per-fill stop and all other filters fixed.
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 3 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.