BTC Entry Signals
Which BTC 15-minute entry signals carry their weight on KXBTC15M and which bleed? Isolate each of the five entry families as a standalone strategy sharing one exit - flatten_before_settlement at time_to_expiry <= 10s - holding risk.max_position 60 and the 10s loop fixed, so per-signal PnL, trade count, win rate, and drawdown are directly comparable. The flatten rule replaces the take-profit/stop pair, so every candidate rides its position to within ten seconds of settlement with no profit target and no loss cutoff.
Historical research only. Not investment advice.
Comparison results
BTC 15-Minute Entry Signals on Kalshi: Which Entry Families Carry Their Weight?
Short disclaimer: This is historical simulation research on past data. It is not investment advice, not a solicitation, and not a promise of future results. Past simulated performance does not predict live trading outcomes.
Intro / Thesis
Kalshi's KXBTC15M contract settles every fifteen minutes on the direction of BTC, which makes it a natural testbed for short-horizon crypto signals. The question this batch tried to answer is narrow and practical: if you take five different BTC entry ideas and give each one the same exit, which ones actually earn their keep, and which ones just churn?
To make the comparison fair, every candidate ran as a standalone strategy with identical plumbing. Position cap was 60 contracts, the loop evaluated every 10 seconds, and the only exit was a single flatten rule: when time_to_expiry drops to 10 seconds or less, sell everything. There is no take-profit, no stop-loss, no trailing exit, no time-based exit other than that settlement flatten. Every dollar of PnL in this report comes from an entry signal riding its position to within ten seconds of settlement and then being closed out. That deliberately isolates the entry, which is what we wanted to compare.
A note on why this matters: on a 15-minute contract with a forced flatten, PnL is dominated by whether your entry signals are genuinely predictive of short-term direction, not by clever exit management. Stripping the exits away removes most of the ways a strategy can look good for the wrong reasons.
Variant and Strategy Explanation
All five variants share the same skeleton. Each one:
- Trades KXBTC15M on Kalshi.
- Caps position at 60 contracts.
- Evaluates on a 10-second loop.
- Uses Kalshi prices between 0.01 and 0.99.
- Applies a spread filter of
spread <= 0.015on every entry. - Sizes each entry at 30 contracts.
- Exits via one rule only:
sell_allwhentime_to_expiry <= 10s.
The differences are entirely in the entry logic. Each variant is a separate strategy with its own rules, its own market context, and its own 30-day window. The base DSL is context, not shared logic — the five candidates are independent.
1. early_entry only (0.40–0.60 band). Buys YES when price sits between 0.40 and 0.60, BTC's 5-minute change is above +0.002, BTC price is above both its 1-hour VWAP and its 12-period 1-minute EMA, and 1-minute velocity is positive. Symmetric short via buy_no. This is the classic "mid-priced contract, confirming trend context" setup.
2. triple_confirm only (0.35–0.65 band). Requires BTC, ETH, and SOL 5-minute changes to all be above +0.002 (or all below -0.002) simultaneously. No VWAP or EMA requirement. Tests whether cross-asset agreement adds information.
3. above/below_vwap only (0.20–0.80 band). The loosest entry family. Buys YES whenever BTC price is above its 1-hour VWAP and its 12-period 1-minute EMA, inside a wide 0.20–0.80 price band. No change or velocity requirement. This is essentially a trend-following bias filter.
4. accel_momentum only (0.20–0.80 band). Requires BTC 5-minute change above +0.0015 and 1-minute velocity above +0.0001. No VWAP, no EMA, no cross-asset check. A pure acceleration bet on a single asset.
5. triple_accel only (0.20–0.80 band). The strictest variant. Requires BTC, ETH, and SOL 5-minute changes all above +0.002 and all 15-minute changes above +0.003. Twelve conditions across three assets. The intent was to only fire when multi-asset, multi-horizon momentum lines up.
Each successful variant is saved as a runnable Turbine strategy, so any of these can be re-run against a different window without rebuilding the logic from scratch.
Top Results
Ranked by ROI over the 30-day window:
| Rank | Variant | Trades | Win rate | Total PnL | Max drawdown | ROI | Sharpe |
|---|---|---|---|---|---|---|---|
| 1 | accel_momentum only | 1,284 | 63.3% | +1,894.39 | -256.87 | 3,157.32% | 0.79 |
| 2 | triple_confirm only | 366 | 72.7% | +1,484.97 | -64.67 | 2,474.95% | 0.84 |
| 3 | early_entry only | 272 | 69.8% | +1,178.90 | -44.73 | 1,964.83% | 0.73 |
accel_momentum takes the top spot on raw PnL and ROI. The single-asset momentum + velocity combination fired 1,284 times, winning 63.3% of the time, and produced the highest total PnL in the batch. Note the drawdown: -256.87, meaningfully larger than the two rank-2 and rank-3 variants. That's the trade-off — it earns the most but tolerates more heat.
triple_confirm is arguably the most balanced result in the set. Highest win rate (72.7%) and highest Sharpe (0.84) in the batch, with a small -64.67 drawdown. It fired roughly a quarter as often as accel_momentum, which is consistent with a stricter cross-asset filter. The cross-asset agreement requirement seems to have improved quality at the cost of frequency.
early_entry had the smallest drawdown (-44.73) and a solid 69.8% win rate, with the fewest trades (272). The multi-condition filter — change, velocity, VWAP, and EMA all pointing the same way inside a narrow price band — appears to have kept it out of low-conviction setups.
One thing worth flagging: ROI percentages in this batch are very large (1,964% to 3,157%) relative to the modest dollar PnL. The dollar figures are consistent with ~$30 notional per entry and ~1,300 trades at most. The ROI figures appear to imply a much smaller capital base than the trade sizes would suggest. This discrepancy is unresolved from the data provided, and I'm not going to speculate on what produces it. Read the ROI column as a relative ranking among these five runs rather than as a literal percentage return on a defined account.
Bottom Results
Ranked from fifth to fourth, and then the rest of the field for context:
| Rank | Variant | Trades | Win rate | Total PnL | Max drawdown | ROI | Sharpe |
|---|---|---|---|---|---|---|---|
| 5 | triple_accel only | 236 | 65.0% | +332.50 | -130.09 | 554.17% | 0.31 |
| 4 | above/below_vwap only | 6,181 | 53.3% | +1,105.50 | -1,751.92 | 1,842.50% | 0.16 |
triple_accel lands last despite the strictest filter in the batch. It fired only 236 times — fewer than triple_confirm, which has fewer conditions — and its -130.09 drawdown is nearly double triple_confirm's -64.67 for less than a quarter of the PnL. The added 15-minute agreement layer did not appear to help. This is a case where more confirmation produced worse risk-adjusted results, not better.
above/below_vwap is the instructive one. It fired 6,181 times, more than every other variant combined, and its drawdown of -1,751.92 is by far the largest in the batch — roughly seven times the next-worst. Its win rate of 53.3% is the lowest of the five, and its Sharpe of 0.16 is the weakest. The VWAP/EMA-only filter, without any change or velocity requirement, produced a strategy that traded constantly and clustered near break-even. It still ended positive on PnL, but the variance was severe. This is what "bleeding" looks like in a sample that happens to end green: the signal is weak, so the outcome is dominated by the distribution of price paths rather than by genuine edge.
The head-to-head between triple_accel and triple_confirm is worth sitting with. Triple_confirm requires three conditions across three assets; triple_accel requires twelve. Triple_confirm fired 366 times with a 72.7% win rate and a 0.84 Sharpe. Triple_accel fired 236 times with a 65.0% win rate and a 0.31 Sharpe. Adding the 15-minute layer made the signal rarer and worse, not rarer and better. I don't have a clean explanation for why the extra agreement hurt, and the data here doesn't resolve it.
Conclusion
If I had to take one thing from this batch, it's that the entry families sorted into three rough tiers:
- Carried their weight: accel_momentum and triple_confirm. Both produced strong PnL with win rates above 63% and drawdowns that were proportionally contained. Accel_momentum earned more in absolute terms; triple_confirm had the better Sharpe and the tighter drawdown. Different appetites, both defensible.
- Solid but narrower: early_entry. Lowest drawdown in the batch, respectable win rate, but it fired the fewest times of the three profitable candidates. Less capacity, cleaner ride.
- Bled or disappointed: above/below_vwap and triple_accel. The VWAP/EMA-only filter traded wildly and produced near-break-even win rates with a huge drawdown. The triple_accel filter added confirmation and got worse risk
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.