Polymarket Quant

Polymarket Quant

Finding systematic alpha in prediction markets

Python Polymarket CLOB WebSockets Supabase Railway Rust

Why prediction markets

I want to get into quant trading, but I'm not interested in competing directly with teams of PhDs in math and physics in hyper-efficient markets. Betting markets are relatively new, attract many amateur participants, and often price events under uncertainty rather than fundamentals. This project is about finding out if it's possible to find real, systematic alpha in prediction markets by building and testing quant strategies.

How it works

Polymarket lets you bet on real-world events. You buy YES or NO on outcomes like elections, sports, crypto prices. The bot watches for opportunities, places bets automatically, and manages positions. I get Discord alerts whenever it makes a trade.

Latest updates 5
Polymarket Quant icon Polymarket Quant

Pivoting away from "build a bot, let it run." The trader is Claude Code now, invoked via a /trade slash command on a $45 seed account.

Each session: read the journal, write verdicts on resolved positions, hunt thin markets, propose trades with thesis + size, execute on approval, log everything for the next session.

The category showing edge so far: thin verbal-mention markets — tiny markets ($30–$120 in 24h volume) on whether a public figure says some word in a 7-day window. Sit at $0.60–$0.85 on near-certainties because nobody trades them.

Trades closed so far

Market Side / Entry Size Result
Bitcoin Up/Down 5-min (pipeline test) YES Up @ $0.51 $2.54 +$2.44 (no thesis — lucky)
Trump says "TV" this week YES @ $0.82 $8.00 +$1.76

Currently open

  • Vyvgart FDA approval — YES @ $0.84, $8 (PDUFA May 10)
  • Trump says "Kamala" this week — YES @ $0.70, $10
  • Trump says "Scam" or "Fraud" this week — YES @ $0.88, $4

Bankroll: $45.70 → ~$50.61 NAV after one full session. Two trades isn't a sample, but the category is the strongest candidate yet.

Polymarket Quant icon Polymarket Quant

Late-game props on BO3 series (e.g. pentakill in Game 3) traded NO at ~$0.93. The thesis: BO3s often end 2-0, so Game 3 doesn't happen, so the rare event can't happen, so NO wins. Free money on the sweep probability.

The numbers I had:

  • P(no Game 3) ≈ 60%
  • P(rare event | Game 3 plays) ≈ 5%
  • NO entry: $0.93

What I assumed: no Game 3 → NO pays $1. What the resolver actually says: no Game 3 → market resolves 50/50. NO pays $0.50.

Recomputing:

EV payout = 0.60 × $0.50 + 0.40 × 0.95 × $1
          = $0.30 + $0.38
          = $0.68

True EV @ $0.93 entry = -$0.25 / share = -27%

The "free leg" was a coin flip. Lesson: every mechanical edge on this platform is one resolution clause away from being the opposite trade.

Polymarket Quant icon Polymarket Quant

Tried polling lolesports livestats to trade Game-N winner markets faster than the book.

The book repriced ~50 seconds before our feed fired. Someone has a faster pipe — we were the slow money. Latency budget here isn't something AI orchestration solves.

Polymarket Quant icon Polymarket Quant

Tested every technical analysis / price-action strategy I could think of, none came close to showing an edge. Polymarket price data just doesn't seem to carry exploitable patterns. I'm fairly confident in ruling out TA-based approaches.

Next hypothesis to test: information speed. The thesis is that smaller, lower-volume markets may not have sophisticated news-parsing bots monitoring them, especially if the news is not easily accessible and requires custom-built information retrieval.

Polymarket Quant icon Polymarket Quant

Built the full trading infrastructure in a single day:

  • Strategy framework
  • Backtesting
  • Paper trading
  • Live execution
  • Discord webhooks for real-time P&L notifications

Then let two Cursor instances run full 200k context quant research sessions, which produced a mean reversion strategy projecting ~350% annualized (backtests, so grain of salt). Bot is live on paper now. Letting it run for 2 weeks while I focus on school, then switching to real money if the numbers hold.