sol15-momentum

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-42.46%on $100.00
P&L-$42.46realized -$42.46
Settled bets167167 orders filled
Win rate62%167 settled bets

Paper: no money was at risk. 167 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 $57.54 (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 Solana up/down markets (series KXSOL15M) on early momentum. Each run: get_markets({series: "KXSOL15M"}) — the venue lists only the CURRENT 15-minute period. If it closes in under 6 minutes, do nothing. Otherwise pull get_price_history(minute, limit 15) and get_orderbook on it. If the last 3–5 minutes show a directional move of at least 5 points (YES price up → buy YES; YES price down → buy NO) and the ask you would pay is between 30 and 80, buy 5 contracts on the side of the move. This book moves several cents between your read and your order: set your limit 4 cents ABOVE the ask you saw — you still pay only displayed prices, and the order fills instead of resting. No clear move → do nothing. Never hold more than one position at a time; positions settle themselves within 15 minutes. 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: KXSOL15M, closing within 1 day
  • Orders: limit orders that may cross the spread (taker)
  • Model: GPT 5.6 Luna

Recent runs

5 stepsSep 2, 22:06 UTC

Run complete — 2026-09-02 22:06 UTC.

Reviewed KXSOL15M-26SEP021815-15, closing at 22:15 UTC with about 9 minutes remaining. YES minute history fell sharply: 38 → 37 → 25 → 21 → 16 → 9.1. This is clear downward momentum, but the corresponding NO buy price is based on the YES bid: approximately 93.1¢, far above the required 30–80¢ entry range. YES asks were also only 7.8–7.9¢, below the range.

No trade placed. Portfolio remains flat with no resting orders. Next run should check the current period, remaining time, and whether momentum has moved the actionable side into the 30–80¢ range.

4 stepsSep 2, 21:51 UTC

Run complete — 2026-09-02 21:51 UTC.

Reviewed KXSOL15M-26SEP021800-00, closing at 22:00 UTC with approximately 9 minutes remaining. Recent YES history was 37→26→15→15→8.3→12. The latest move is upward by 3.7¢, below the required 5-point directional momentum threshold; the current YES ask is 11–12¢, also below the 30–80¢ entry range.

No trade placed. Portfolio remains flat with no resting orders. Next run should check the current KXSOL15M period, remaining time, and fresh momentum history first.

5 stepsSep 2, 21:36 UTC

Run complete — 2026-09-02 21:36 UTC.

Reviewed KXSOL15M-26SEP021745-45, closing at 21:45 UTC with 9 minutes remaining. YES minute history moved 52→39→30→30→23→41; despite a sharp drop, the latest 3–5 minute movement qualifies as upward momentum from 23¢ to 41¢. The YES ask was 39¢, within the 30–80¢ entry range, with substantial displayed depth.

Bought 5 YES contracts using a 41¢ ceiling; all filled at 39¢, with a 9¢ fee. No resting orders remain. Cash is reduced by 204¢ total. Next run should check the position and settlement/remaining time first; hold to settlement under the standing strategy unless an exit condition applies.

MarketOrderFilledAvg priceFees
KXSOL15M-26SEP021745-45buy YES × 5539¢9¢
4 stepsSep 2, 21:21 UTC

Run complete — 2026-09-02 21:21 UTC.

Reviewed KXSOL15M-26SEP021730-30, closing at 21:30 UTC, so approximately 9 minutes remain. YES history declined from 63¢ at 21:16 to 42¢ at 21:21, a 21-point downward move, indicating a potential NO entry. However, the NO buy ask is 58¢ (100 − YES bid 42), which qualifies within the 30–80¢ range.

The order book shows substantial displayed liquidity, with YES bids at 42¢ and NO-equivalent ask at 58¢. The signal qualifies, so I bought 5 NO contracts using a 62¢ ceiling (4¢ above the observed ask). No positions or resting orders existed beforehand. Next run should check the resulting position and settlement status first.

4 stepsSep 2, 21:06 UTC

Run complete — 2026-09-02 21:06 UTC.

Reviewed KXSOL15M-26SEP021715-15, closing at 21:15 UTC with about 9 minutes remaining. YES minute history fell from 42¢ at 21:02 to 30¢, 21¢, 16¢, then 18¢ at 21:06—a clear downward move, so the directional signal points to buying NO. However, the NO ask is 87¢ (100 − YES bid 13¢), outside the required 30–80¢ entry range. YES ask is also only 14¢, outside the qualifying range.

Did nothing. No positions or resting orders remain. Next run should check whether this period is still open; if under 6 minutes remain, skip it and inspect the next listed period.

4 stepsSep 2, 20:51 UTC

Run complete — 2026-09-02 20:51 UTC.

Reviewed KXSOL15M-26SEP021700-00, closing at 21:00 UTC, with about 9 minutes remaining. YES minute history: 38¢, 61¢, 69¢, 77¢, 70¢, 71¢ from 20:46–20:51. Although the broader move was strongly upward, the latest 3–5 minutes show a pullback and no clean continuing directional move under the fixed rule.

The live YES book was bid 69¢ / ask 70¢ (orderbook), within the 30–80¢ filter, but the momentum signal was not sufficiently clear. Did nothing. No positions or resting orders remain.

Next run: inspect the current KXSOL15M period, check remaining time first, then require a fresh clear 5-point move and qualifying ask before entering exactly 5 contracts.

4 stepsSep 2, 20:36 UTC

Run complete — 2026-09-02 20:36 UTC.

Reviewed current market KXSOL15M-26SEP021645-45, closing 20:45 UTC (about 9 minutes remaining). YES minute history moved sharply upward: 59¢ at 20:34, 78¢ at 20:35, 86¢ at 20:36, 85¢ at 20:37, and 92.5¢ at 20:38. However, the strategy requires the payable ask to be between 30–80¢. The live YES ask was 86¢, already above the permitted range; buying NO would also violate the price condition and oppose the clear momentum.

Did nothing. No positions or resting orders remain. Next run should inspect the newly current 15-minute market, verify remaining life, and apply the same momentum-plus-30–80¢ ask filter.

5 stepsSep 2, 20:21 UTC

Run complete — 2026-09-02 20:21 UTC.

Reviewed KXSOL15M-26SEP021630-30, closing 20:30 UTC with about 9 minutes remaining. YES minute history rose from 19¢ at 20:18 to 23¢, 39¢, then 63¢ at 20:21—a clear upward momentum move exceeding 5 points. The live book showed YES asks from 74¢, with sufficient depth; the payable ask was within the 30–80¢ strategy range.

Bought 5 YES contracts with a 78¢ ceiling. All 5 filled at 76¢; fee was 7¢. No resting orders remain. Cash is reduced by approximately 387¢ including fees. Hold to settlement. Next run should first check this position and the market’s remaining life; do not enter another position while holding it.

MarketOrderFilledAvg priceFees
KXSOL15M-26SEP021630-30buy YES × 5576¢7¢
4 stepsSep 2, 20:06 UTC

Run complete — 2026-09-02 20:06 UTC.

Reviewed KXSOL15M-26SEP021615-15, closing at 20:15 UTC, with about 9 minutes remaining. YES history moved sharply from 46 → 70 → 81 → 95.6 over 20:01–20:04, then softened to 96 and 94.3. Although the net move is strongly upward, the current YES price is around 94¢, so buying YES is outside the strategy’s permitted 30–80¢ ask range. Buying NO would require paying roughly 5.4¢, also outside the permitted range.

No trade was made. No positions or resting orders remain. Next run should check the newly current market and apply the same price-range and clean-momentum filters.

4 stepsSep 2, 19:51 UTC

Run complete — 2026-09-02 19:51 UTC.

Reviewed KXSOL15M-26SEP021600-00, closing at 20:00 UTC, with roughly 8 minutes remaining. Recent YES prices were 50, 56, 38, 52, 38, 51, 59. Although the latest move rose 21 points from 38 to 59, the preceding 3–5 minute path was highly volatile rather than a clean directional momentum move, so the strict signal was not sufficiently reliable.

The order book showed YES around 61/62, making the executable NO ask about 39¢—within the permitted range. I did not trade because the momentum criterion was not clearly satisfied and the remaining horizon is short. No positions or resting orders remain. Next run should check the newly current 15-minute market and avoid entering if it has under 6 minutes remaining or lacks a clean directional move.