BTC EMA Momentum
Selective EMA momentum on KXBTC15M with $100 starting capital: enter 20 YES contracts only when flat, 3-5 minutes remain before expiry, YES price is $0.55-$0.65, Coinbase BTC spot sits $25-$100 above EMA-12 on 1-minute candles (ema_12_1m_distance_usd), and spot is 0-0.2% above EMA-26 on 5-minute candles (ema_26_5m_distance_pct). Exit the full position when ema_12_1m_distance_pct < -0.001, ema_26_5m_distance_usd > 300, or under 60 seconds remain before expiry. Test whether tightening the entry band, loosening the momentum gates, or widening the stop/cap thresholds changes the tradeoff between trade frequency and per-trade outcome over 30 days.
Historical research only. Not investment advice.
Top strategy variants
Bottom strategy variants
Selective EMA Momentum on Kalshi KXBTC15M — 100-Variant Parameter Sweep
Disclaimer (short)
This is a historical simulation study. It is not investment advice, not a live track record, and not a forecast. Nothing here should be read as evidence that any of these configurations will make money in the future.
Intro / thesis
This report covers a 100-variant sweep of a single BTC strategy family on Kalshi's KXBTC15M series — 15-minute BTC binary contracts. The underlying idea is a selective, short-horizon momentum entry: buy YES only when BTC spot on Coinbase is modestly extended above short-term EMAs, on the theory that a small, fresh push above trend is more likely to carry into expiry than a large or stale one. The base configuration uses $100 of starting capital, a 20-contract position cap, and enters at most once per flat state.
The base DSL evaluated every 30 seconds with four rules, applied top-to-bottom so the first matching rule fires and ends that tick:
- If
edge.btc.ema_12_1m_distance_pct < -0.001, sell all. - If
edge.btc.ema_26_5m_distance_usd > 300, sell all. - If
time_to_expiry < 1m, sell all. - If
position_size == 0ANDtime_to_expirybetween 3m and 5m (inclusive) ANDpricebetween 0.55 and 0.65 (inclusive) ANDema_12_1m_distance_usdbetween 25 and 100 (inclusive) ANDema_26_5m_distance_pctbetween 0 and 0.002 (inclusive), buy 20 YES.
The sweep tested two axes only: risk.price_floor at ten values (0.05 to 0.45) and risk.price_ceiling at ten values (0.55 to 0.95), for 100 cells total. All 100 cells completed. The stated research question was whether tightening the entry price band, loosening the momentum gates, or widening the stop/cap thresholds changes the tradeoff between trade frequency and per-trade outcome over a 30-day window. Note that the sweep as executed only varied the price floor and ceiling — the momentum gates and the exit thresholds were held fixed. That is a meaningful limitation when reading the results.
Variant and strategy explanation
Each variant is a complete, runnable Turbine strategy. The 100 variants differ only in the two risk bounds. Everything else — the entry momentum conditions, the three exit rules, the 20-contract size, the 30-second loop, the Coinbase BTC-USD edge feed — is shared.
The price floor and ceiling act as gates on the YES contract price at entry. Because the entry rule already requires price >= 0.55 AND price <= 0.65, raising the floor above 0.55 or lowering the ceiling below 0.65 narrows the effective entry band. Lowering the ceiling to 0.55, for example, removes the entire original entry band and replaces it with a single-point condition at exactly 0.55 (or whatever the floor permits). That mechanical interaction turns out to matter a great deal.
The exits are the same in every cell: a short-term EMA flip on the 1-minute timeframe (ema_12_1m_distance_pct < -0.001), a stretch cap on the 5-minute EMA distance (ema_26_5m_distance_usd > 300), and a hard time stop inside the final minute before expiry.
Top results
The top eight variants, ranked by net PnL, are all clustered at the same effective outcome:
| Rank | Floor | Ceiling | Net PnL | ROI % | Trades | Win rate | Max DD | Sharpe |
|---|---|---|---|---|---|---|---|---|
| 1 | 0.05 | 0.64 | 122.86 | 614.3 | 36 | 0.944 | -6.65 | 0.79 |
| 2 | 0.05 | 0.68 | 122.86 | 614.3 | 37 | 0.944 | -6.65 | 0.81 |
| 3 | 0.09 | 0.64 | 122.86 | 614.3 | 36 | 0.944 | -6.65 | 0.79 |
| 4 | 0.09 | 0.68 | 122.86 | 614.3 | 37 | 0.944 | -6.65 | 0.81 |
| 5 | 0.14 | 0.64 | 122.86 | 614.3 | 36 | 0.944 | -6.65 | 0.79 |
| 6 | 0.14 | 0.68 | 122.86 | 614.3 | 37 | 0.944 | -6.65 | 0.81 |
| 7 | 0.18 | 0.64 | 122.86 | 614.3 | 36 | 0.944 | -6.65 | 0.79 |
| 8 | 0.18 | 0.68 | 122.86 | 614.3 | 37 | 0.944 | -6.65 | 0.81 |
Every top cell has identical PnL, identical drawdown, and a win rate near 94%. The only differences are 36 versus 37 trades and the associated Sharpe (0.79 versus 0.81). Inspection of the underlying cell metrics shows this is not a narrow peak: the entire floor axis produces identical results at each ceiling value, and only the ceiling value changes the outcome. The floor is effectively inert across the swept range.
The winner by the sweep's primary metric (net PnL) is floor 0.05 / ceiling 0.64. This should be read with the understanding that ceiling 0.64 and ceiling 0.68 are tied on PnL. The winner value of 122.86 is the maximum of the grid, but the grid's maximum is a tie, and the tie is broken by trial ordering convention rather than by any performance difference.
The deflated Sharpe probability is 0.985, and the expected-max-Sharpe benchmark on the selection-noise scale is 0.485. These are technically on the same axis but should not be compared directly as if one dominated the other — the DSR probability says the observed Sharpe clears the selection-noise benchmark, which is favorable for that one check. It does not establish profitability and does not substitute for out-of-sample testing.
The permutation test returned p = 0.010. That is the share of 100 edge-feed-scrambled re-sweeps whose best net PnL matched or exceeded 122.86; the stated result is that the observed edge-feed timing beat 99.0% of the scrambled runs. The design permutes the edge feed, not the market price series. Price-based conditions in the entry rule are therefore not exercised by this test, so the p-value speaks only to the timing of the momentum fields, not to whether the price gates are doing useful work.
Bottom results
The bottom of the sweep is more heterogeneous than the top:
| Rank | Floor | Ceiling | Net PnL | ROI % | Trades | Win rate | Max DD | Sharpe |
|---|---|---|---|---|---|---|---|---|
| 100 | 0.05 | 0.55 | -4.94 | -24.7 | 22 | 0.455 | -43.1 | -0.03 |
| 91 | 0.09 | 0.55 | 17.30 | 86.5 | 4 | 1.000 | -0.35 | 0.27 |
| 92 | 0.14 | 0.55 | 17.30 | 86.5 | 4 | 1.000 | -0.35 | 0.27 |
| 93 | 0.18 | 0.55 | 17.30 | 86.5 | 4 | 1.000 | -0.35 | 0.27 |
| 94 | 0.23 | 0.55 | 17.30 | 86.5 | 4 | 1.000 | -0.35 | 0.27 |
| 95 | 0.27 | 0.55 | 17.30 | 86.5 | 4 | 1.000 | -0.35 | 0.27 |
| 96 | 0.32 | 0.55 | 17.30 | 86.5 | 4 | 1.000 | -0.35 | 0.27 |
| 97 | 0.36 | 0.55 | 17.30 | 86.5 | 4 | 1.000 | -0.35 | 0.27 |
The single worst cell is floor 0.05 / ceiling 0.55: 22 trades, a win rate of 45%, a 43-point drawdown, and a small net loss. That cell is the one case in the sweep where the entry band was widest while the ceiling was pinned to the low end, and it is also the only cell that produced a losing net result. Every other cell in the bottom eight is the same configuration repeated across floor values and produces identical results at ceiling 0.55 with the floor raised off 0.05 — 4 trades, a perfect win rate, and small positive PnL.
The gap between the worst cell and the next cluster is stark: one cell loses money with a wide drawdown on 22 trades, while nine cells with the same ceiling and any floor at or above 0.09 make 17.30 on 4 trades. The cause of this discontinuity is not resolved by the data provided. The sweep shows the pattern but does not explain it. It is not possible from these numbers alone to say whether the difference is a genuine property of the entry band, an artifact of how the price floor interacts with the entry gate, or a small-sample effect
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.