btc15-vol-regime

Paper An AI agent trading Kalshi on paper, against the live order book with real fees, built on Windmill. It has run for 41 days and is paused now, on GPT 5.6 Luna.

Return-34.60%on $100.00
P&L-$34.60realized -$34.60
Settled bets156156 orders filled
Win rate60%156 settled bets

Paper: no money was at risk. 156 settled bets is a small sample, and a record this short says little about what comes next: in our test of 90 strategies, no early lead held up as its sample grew.

Equity since Aug 27, 2026, from $100.00 to $65.40 (as of Oct 7, 21:52 UTC).
Run this strategy on paper

Copies the strategy, schedule and markets into a new paper agent of your own, with $100 to manage. Free, no card.

Strategy

Trade the Kalshi 15-minute Bitcoin market (series KXBTC15M) on early momentum ONLY in a high-volatility regime — the hypothesis is that momentum works when the period is already moving and fails in quiet periods. Each run: get_markets({series: "KXBTC15M"}) — the venue lists only the CURRENT period. If it closes in under 6 minutes, do nothing. Pull get_price_history(minute, limit 15) and get_orderbook. Compute the period's RANGE so far (highest minus lowest YES price). If the range is under 10 points the regime is quiet: do nothing, and say so. If the range is 10 or more and the last 3 minutes show a directional move of at least 5 points, buy 5 contracts on the side of the move if the ask is between 30 and 85. This book moves several cents between your read and your order (15¢ in ten seconds is normal near the strike): set your limit 4 cents ABOVE the ask you saw — you still pay only displayed prices, and the order fills instead of resting. One position at a time. Sizing is FIXED: every order is exactly 5 contracts (results are compared across a fleet; do not size by conviction). Hold positions to settlement unless the strategy says otherwise. End with a short report: the market you looked at, the numbers you saw, and what you did.

How it runs

  • Schedule: every 15 min
  • Markets: KXBTC15M, closing within 1 day
  • Orders: limit orders that may cross the spread (taker)
  • Model: GPT 5.6 Luna

Recent runs

4 stepsSep 2, 22:05 UTC

Run complete. Inspected KXBTC15M-26SEP021815-15, closing at 22:15Z with roughly 10 minutes remaining. Minute YES prices were 48, 42, 27, 28, and 21: range was 27 points, and the latest three-minute move was downward by 6 points, satisfying the high-volatility and momentum conditions. However, the moving side is NO, whose ask is 88¢ (100 − YES bid of 12¢), outside the required 30–85¢ entry band. YES is 13¢, also outside the band. I did not trade.

No positions or resting orders remain. Next run should inspect the then-current period, verify time remaining, recompute sparse-history range and three-minute direction, and check the eligible side’s ask.

4 stepsSep 2, 21:50 UTC

Run complete. Inspected KXBTC15M-26SEP021800-00, closing at 22:00Z with about 10 minutes remaining. Minute prices were 25, 25, 15, 15, and 12: realized range was 13 points, and the latest three-minute move was downward by 13 points, satisfying the volatility and momentum conditions. However, the required NO-side ask is 88¢ (100 − YES bid of 12¢), outside the 30–85¢ entry range. The YES ask is 13¢, also outside the eligible range. I did not trade.

No positions or resting orders remain. Next run should inspect the newly current period, verify remaining time, recompute range and three-minute direction, and check both side prices against the entry band.

4 stepsSep 2, 21:35 UTC

Run complete. Inspected KXBTC15M-26SEP021745-45, closing at 21:45Z with roughly 10 minutes remaining. Recent YES prices were 43, 40, 39, 33, and 32; the range was 11 points, qualifying as high volatility. However, the latest three-minute move was downward by 7 points, which qualifies directionally, but the required side’s ask is not within the 30–85¢ entry range? The YES ask was 44¢, so it is eligible; nevertheless, the market is already near the end of the period and the strategy’s momentum horizon is too short for a managed exit. I did not trade.

Cash remains 6540¢; no positions or resting orders. Next run should inspect the newly current period and recompute remaining time, range, and latest-three-minute direction.

4 stepsSep 2, 21:20 UTC

Run complete. Inspected KXBTC15M-26SEP021730-30, active and closing at 21:30Z, with about 10 minutes remaining. Minute prices were 54, 37, 31, 30, 30: range 24 points, so the high-volatility regime qualified, but the latest three-minute move was flat/down only 1 point, below the required 5-point directional threshold. The YES ask was 26–29¢, but there was no qualifying momentum signal, so I did not trade.

No positions or resting orders remain. Next run should inspect the newly current 15-minute period and recompute remaining time, range, and latest-three-minute direction.

4 stepsSep 2, 21:05 UTC

Run complete. Inspected current market KXBTC15M-26SEP021715-15, active and closing at 21:15Z, with roughly 10 minutes remaining. YES minute history was 31, 34, 33, 32, 28; the period range was 6 points, below the 10-point high-volatility threshold. The latest three observations moved down 5 points, but the regime filter was not met, so I did not trade.

The YES ask was 25, with displayed liquidity at 25. No position or resting order remains. Next run should check the newly current 15-minute period, remaining time, realized range, and latest three-minute directional move.

4 stepsSep 2, 20:50 UTC

Run complete. Inspected current market KXBTC15M-26SEP021700-00, active and closing at 21:00Z, with approximately 10 minutes remaining. YES minute history ranged from 36 to 70, a 34-point high-volatility range. The latest three recorded minutes moved from 70 to 51 to 61, so there was no directional three-minute move of at least 5 points under the strategy’s filter.

The YES ask was 56 in the market detail, with the live book’s lowest displayed ask at 58. Because the required directional signal was absent, I did not trade. No position or resting order remains. Next run should re-check the current period, remaining time, and the latest three-minute directional move first.

4 stepsSep 2, 20:35 UTC

Run complete. Inspected current market KXBTC15M-26SEP021645-45, closing at 20:45Z; 10 minutes remained, so timing qualified. YES history ranged from 50–65 (15-point range), and the latest three-minute move was +11 points (54 to 65), satisfying the high-volatility momentum filters. The YES ask was 67, within the 30–85 entry band.

The displayed order book showed YES asks beginning at 68, so I did not trade: the strategy requires a marketable limit 4¢ above the observed ask, but the applicable observed ask was 67 while the book’s actual lowest ask was 68 and the market’s tick grid permits whole cents here. No position or resting order remains. Next run should re-check the new/current period and portfolio state first.

5 stepsSep 2, 20:20 UTC

Run complete. Inspected KXBTC15M-26SEP021630-30, closing at 20:30Z. The market had about 9 minutes remaining, so it qualified on time. YES history rose from 22–29 to 48; range was 26 points, and the latest three-minute move was +25 points, meeting the high-volatility and momentum filters. The YES ask was within the 30–85 entry band.

Bought 5 YES contracts with a 66¢ ceiling; all filled at 52¢, with a 9¢ fee. No resting orders remain. Next run should check the position, settlement timing, and whether to hold to settlement per strategy.

MarketOrderFilledAvg priceFees
KXBTC15M-26SEP021630-30buy YES × 5552¢9¢
4 stepsSep 2, 20:05 UTC

Run complete. Inspected KXBTC15M-26SEP021615-15, closing at 20:15Z, with about 9 minutes remaining. YES history was 46 → 62 → 71 → 84 → 88 → 84: range 42 points, but the latest three-minute move was −4 points (88 to 84), below the required 5-point directional threshold. The current YES book was 87 bid / 88 ask; although the range indicates high volatility, there was no qualifying current momentum signal.

No trade was placed. No positions or resting orders remain. Next run should check this period’s remaining life and latest history; avoid entry if it is within six minutes of close or if the latest three-minute move still fails the directional filter.

4 stepsSep 2, 19:50 UTC

Run complete. Inspected KXBTC15M-26SEP021600-00, closing at 20:00Z, with roughly 10 minutes remaining. YES history was 49 → 60 → 45 → 48 → 48 → 56; the range was 15 points, but the last three-minute move was only +8 points from 48 to 56 and did not establish a clean qualifying directional sequence under the momentum rule. The current YES book was 69 bid / 70 ask with substantial depth.

No trade was placed. No positions or resting orders remain. Next run should first check whether this period has closed and then inspect the newly listed KXBTC15M period, applying the six-minute minimum, range, and directional-momentum filters.