Strategy & Algorithm
MarkEdge trades Kalshi BTC price prediction markets using a momentum + spread + technical analysis scoring strategy. It identifies mispriced contracts by cross-referencing Kalshi and Polymarket probabilities, validates signals against BTC price action (trend, volatility, RSI), sizes positions using fractional Kelly criterion within a 5-mode portfolio manager, and auto-tunes parameters based on resolved trade history.
Each cycle, the bot fetches all active BTC price markets from Kalshi and Polymarket, then scores each market on two axes:
| Component | Weight | How it works |
|---|---|---|
| Momentum Score | 60% | Averages the probability of nearby Kalshi markets (same direction, adjacent price levels). High agreement among neighbors = strong directional signal. |
| Spread Score | 40% | Compares Kalshi probability vs Polymarket for the same market. A large spread suggests mispricing — we trade the side we believe has the true edge. |
After scoring, each signal passes through a live TA filter using real-time BTC price data (hourly candles from Coinbase). This layer rejects bad setups and adjusts confidence based on market conditions.
| Filter / Adjustment | Indicator | Effect |
|---|---|---|
| Candle spike | Last candle range > 2× ATR | Skip entire cycle |
| High volatility | ATR > 5% of price | Skip cycle |
| Elevated volatility | ATR 3–5% of price | Cap at 1 contract |
| Trend alignment | EMA20 vs EMA50 | +5% confidence boost if signal matches trend |
| RSI extremes | RSI > 70 or < 30 | Warns of overbought/oversold; adjusts sizing |
| Bollinger bands | Price vs BB upper/lower | Signals near extremes get reduced confidence |
Trade size is determined by fractional Kelly criterion combined with a 5-mode portfolio manager that adapts to weekly performance:
| Condition | Threshold |
|---|---|
| Entry > 70¢ | Max 15% stop-loss |
| Entry 60–70¢ | Max 20% stop-loss |
| Entry 50–60¢ | Max 25% stop-loss |
| Entry ≤ 50¢ | Max 30% stop-loss |
| Time decay < 5min to expiry | Tightens to 15% |
| 3 consecutive losses | 60 min circuit breaker pause |
| Down >1% in 30 min | Skip cycle (rolling loss cap) |