$npx -y skills add agiprolabs/claude-trading-skills --skill prediction-market-strategyVenue- and market-type-agnostic strategy, sizing, and backtesting layer for binary prediction markets (Kalshi, Polymarket, ForecastEx). Covers the durable edge thesis, fee-aware selection, fractional-Kelly sizing, and leak-free validation methodology.
| 1 | # Prediction Market Strategy |
| 2 | |
| 3 | Binary prediction markets price contracts as probabilities. This skill covers the *strategy, sizing, and validation* layer that applies across all venues and market types. API mechanics live in `kalshi-api` / `polymarket-api`; contract semantics and settlement live in `kalshi-weather-markets` / `kalshi-crypto-index-markets`. This is the strategy/sizing/validation layer that applies across all of them. |
| 4 | |
| 5 | ## Core Thesis |
| 6 | |
| 7 | **Price = implied probability.** A contract priced at $0.18 claims an 18% chance of resolving YES. Brackets in a series sum to just above $1.00 — the overround is the house margin (roughly 5–8% for weather markets on Kalshi). |
| 8 | |
| 9 | **Takers systematically lose; makers systematically win.** Across 300k+ Kalshi contracts, the average pre-fee return is ≈ −20%, concentrated in takers (market-order users) and in longshot buyers. Makers (resting limit orders) earn positive returns. On Polymarket (588M+ trades), the top ~1% of accounts capture ~76.5% of profit, predominantly by resting limit orders. This is the foundational result. |
| 10 | |
| 11 | **Favorite–longshot bias is the durable mechanism.** Cheap longshots are systematically overpriced: a $0.05 contract historically wins ~2%; sub-$0.10 contracts lose ~60% of stake to buyers. Favorites are fairly- to slightly-underpriced. The repeatable expression is **selling the overpriced longshot tail, maker-side** — resting NO bids on brackets priced ~$0.05–$0.20, diversified across many events to survive the rare hit. This is structural/behavioral, not a forecasting edge. |
| 12 | |
| 13 | **Forecast skill ≠ trading edge.** A good weather or event forecast is largely redundant with the market price at decision time. Markets aggregate information efficiently enough that even a measurably better model produces near-zero net edge after fees unless it finds systematic mispricings (which are behavioral, not informational). The exception is official-label ML in lightly-traded markets — but that is bounded by fill-rate and capacity, not forecast accuracy. |
| 14 | |
| 15 | --- |
| 16 | |
| 17 | ## Strategy Catalog |
| 18 | |
| 19 | Strategies evaluated on Kalshi/Polymarket weather and event markets. "Real" means it survived correct settlement + fees in testing; others are flagged so you don't re-chase them. |
| 20 | |
| 21 | | Strategy | Verdict | Mechanism | Key Catch | |
| 22 | |----------|---------|-----------|-----------| |
| 23 | | Favorite–longshot fade, maker-side | ✅ Durable | Rest maker NO bids on ~$0.05–$0.20 brackets; behavioral tail overpricing | Rare longshot hit; measure fill-rate forward | |
| 24 | | Bracket YES-only (forecast-driven) | ✅ Works, fee-sensitive | Buy YES when calibrated model says bracket is materially underpriced | Requires net_edge > θ gate; not raw win-rate | |
| 25 | | Market-making / liquidity provision | ⚠️ Structurally favored, infra-heavy | Two-sided quotes, capture spread + maker rebates | Inventory risk, adverse selection, queue priority | |
| 26 | | Overround / dutching arbitrage | ⚠️ Real in theory, marginal in practice | Sum-to->$1.00 across brackets; buy the underpriced residual | Legs must fill simultaneously; Kalshi fills are sequential | |
| 27 | | Cross-venue arb (Kalshi ↔ Polymarket) | ❌ Blocked for most | Simultaneous position in equivalent contracts on two venues | Transfer time/cost destroys edge; geo-lock | |
| 28 | | Latency / news front-running (crypto/index hourlies) | ❌ HFT game | React to public feeds before market reprices | Sub-100ms requirement; co-location; not retail | |
| 29 | | Near-certainty intraday repricing | ⚠️ Information/latency edge | Markets slow to reprice near-certain contracts; capture the residual | Requires real-time feed + automation | |
| 30 | | Copy-the-sharps | ❌ Survivorship illusion | Mirror apparent winning accounts | No reliable signal on public data; past winners regress | |
| 31 | |
| 32 | **Bottom line:** Two strategies survive correct accounting — the behavioral tail fade (maker-side) and the forecast-driven YES entry past the θ gate. Everything else is either HFT-scale, infrastructure-heavy, or dissolves under correct settlement + fees. |
| 33 | |
| 34 | --- |
| 35 | |
| 36 | ## Fee-Aware Sizing & Edge Gates |
| 37 | |
| 38 | All selection is on **fee-adjusted net edge**. Raw win-rate, return on notional, and % correct are not selection metrics. |
| 39 | |
| 40 | ### Net Edge Formula |
| 41 | |
| 42 | ```python |
| 43 | net_edge = p_model - ask - kalshi_fee(ask) |
| 44 | # Kalshi taker fee: ceil(0.07 * price * (1 - price) * 100) / 100 per contract |
| 45 | # Polymarket fee: 0 (no explicit taker fee; spread is the cost) |
| 46 | ``` |
| 47 | |
| 48 | Select a trade only when `net_edge > θ`. |
| 49 | |
| 50 | ### Expected-Edge Gate (θ) |
| 51 | |
| 52 | | Account size | θ (Kalshi) | Rationale | |
| 53 | |---|---|---| |
| 54 | | < $2,000 | 15% | Small account; fee drag is proportionally higher | |
| 55 | | ≥ $2,000 | 20% | Standard gate covering fee + execution uncertainty | |
| 56 | | Polymarket | ~5% | No explicit taker fee; spread and gas are |