aarbvark
connecting
read-only · research project
Live prediction market bot exploiting the favorite-longshot bias on Polymarket crypto options. Posts resting maker bids on 4h BTC/ETH/SOL markets when the model's confidence exceeds the market price. how it works ↗
Live Trading
loading
Living research notebook. Six experiments running autonomously, each designed to answer a specific question about the strategy. Auto-updated every 8 hours by the lab runner with fresh data.
Controls
Volatility (σ) 1.2%
Drift (μ) +0.12%
Paths 40
Simulation
Epoch 0
Favorites win
Model Φ (avg)
Calibration gap
Watching whether simulated win rate tracks the model's prediction — this is calibration.
Payout Asymmetry
+$0.10
per win
-$0.90
per loss
9:1
loss/win ratio
90.0%
break-even WR
Bid price 90¢
At 90¢, each loss costs 9x what each win pays. You need >90% WR just to break even. The higher you bid, the worse this ratio gets.
What You're Seeing
Amber = strong favorite
Teal = uncertain
Red = favorite loses
Each line is a simulated 4-hour crypto price path following geometric Brownian motion: dS = μdt + σdW. The amber bands are Black-Scholes confidence (95% and 99%). As τ → 0, bands narrow — predictions become more certain. Color tracks the d-score: how far price has moved in volatility-adjusted terms. The model uses d to compute Φ = N(|d|), the probability the favorite wins.
Each dot is one fill. X-axis = model confidence (Φ) at bid time. Green = win, red = loss. The vertical line is the current confidence floor — bids are only posted when Φ exceeds this threshold. Dots left of the line would be screened out.
Loading live market data...
Loading gate data...
Loading lab notebook...
Live model signal for each deployed market. The model computes a Black-Scholes probability from Coinbase prices; the book shows what Polymarket traders are bidding. The gap is the potential edge.
loading
Loading live model and book state...
LOADING
Φ =
--:--
Spot
Reference
Deviation
Volatility
d-score
Confidence
Best Ask
Executable Edge
Best Bid
Waiting for deployed-market data.

Polymarket Landscape

Loading markets...
Category Market Price Liquidity Volume BS Fair Edge

Insights

Scanning Polymarket for structured markets with measurable underlyings across crypto, equities, sports, and weather. The same Black-Scholes model used for crypto updown applies directly to SPX daily and BTC threshold markets.
Every order the bot has posted. Filter by asset, outcome, or confidence to see which fills won, which lost, and what the model believed at the time. Each row links to the Polymarket market page.

Order Drill-Down

Time Asset Dir Bid Conf Status P&L

What This Project Does

A plain-language explainer

The one-sentence version

I built a system to figure out whether you can make money by betting on crypto prices in a prediction market, using math instead of speed — and I'm being very careful to make sure the answer is real before putting any actual money on the line.

What's a prediction market?

A prediction market is like a stock exchange, but instead of buying shares of a company, you buy contracts that pay out based on whether something happens. On Polymarket (the platform I study), you can buy a contract that says "Bitcoin will finish this 4-hour window higher than where it started." If you're right, you get $1. If you're wrong, you get nothing.

The price of that contract is basically what the crowd thinks the probability is. If the contract trades at $0.85, the market is saying "there's roughly an 85% chance this happens."

What's the "favorite-longshot bias"?

This is the single most well-documented pattern in betting markets, going back decades:

Why? People love the lottery ticket. Paying 5 cents for a shot at $1 feels exciting even when the math says you'll lose. Meanwhile, paying 95 cents to win 5 cents more feels boring, so fewer people do it — which means that 95-cent contract is actually a decent deal.

This isn't a theory or a hunch. A 2026 study of 300,000+ contracts on Kalshi (a similar platform) confirmed it with real data: longshot buyers lost 32% on average. Favorite buyers made small but positive returns.

What's the system doing?

1. Building a price model

I use a standard financial formula (Black-Scholes, the same framework banks use to price stock options) to estimate: given where Bitcoin is right now, how likely is it to finish above its starting price by the end of this window?

The key finding: the model is honest. When it says "90% likely," the outcome happens about 90% of the time or more. This is called "calibration."

2. Measuring whether there's actually money to be made

This is where most people fool themselves. The displayed price on the screen is different from the price you'd actually pay if you clicked "buy." The displayed price is like a car's sticker price; what you actually pay (the "ask") is higher.

Near the end of a window, the displayed price might say the favorite is at 77 cents, but if you tried to buy it, you'd pay 93 cents. That 16-cent gap is the spread — it's real, you can see it, but you can't trade through it. My system measures edge against the real price you'd pay, not the fantasy mid-price.

3. Figuring out the right way to trade

There are two ways to trade:

My finding: taking doesn't work — the fee eats your edge and faster bots get there first. But making on the favorite side might work, because you avoid the fee, earn rebates, and the favorite-longshot bias means buyers are slightly too eager to sell you cheap favorites.

What's confirmed vs. what's still unknown

StatusFinding
ConfirmedThe model is calibrated (honest probabilities)
ConfirmedThe mid-ask gap is huge (~16%) — most visible "edge" is fake
ConfirmedThe favorite-longshot bias exists here (consistent with decades of research)
ConfirmedOrder-book imbalance predicts short-term price moves
MeasuringReal maker fills are a pilot; conclusions require independent settlement clusters
UnknownWhether the strategy actually makes money after all costs

Why not just do it and see?

Because losing slowly is the worst outcome in trading. If the edge is real but thin (say +2-3%), you might need hundreds of trades to distinguish "genuinely profitable" from "got lucky." Running real money during that learning phase means paying tuition on what might be nothing.

The whole point of this project is the discipline: measure first, commit capital only when the measurement is conclusive.

When does this become real money?

Three things have to happen in order:

  1. The favorite-discount has to survive real losses. The system needs to see enough bets where the favorite loses to know the true win rate. If the win rate after losses is still high enough to cover the cost of those losses — gate passed.
  2. Maker fills have to be measured. Posting a limit order doesn't guarantee you get filled. And when you do get filled, it might be because something bad is about to happen. This "adverse selection" is being measured with small real orders on a live bot.
  3. The combined math has to work. Win rate times fill rate times not-getting-picked-off has to be positive. If it is: start with $200-500 real money and see if reality matches.

What would kill it: the favorites don't win often enough once you count losses (the apparent edge was just small-sample luck), or every time your order gets filled it's because someone smart is dumping on you.


Glossary

TermWhat it means
AskThe lowest price someone is willing to sell at — what you'd actually pay to buy
BidThe highest price someone is willing to buy at — what you'd get if you sold now
SpreadThe gap between bid and ask (you lose this immediately on a round trip)
CalibrationDoes the model's stated probability match reality? "Says 80%, wins ~80%" = calibrated
MakerA trader who posts limit orders (resting offers). Pays no fee, earns rebates
TakerA trader who accepts existing offers (market orders). Pays the fee, needs speed
Adverse selectionWhen the people trading against you know something you don't — your fills are disproportionately the "bad" ones
FLBFavorite-longshot bias — the robust empirical finding that favorites are underpriced and longshots are overpriced
Black-ScholesA Nobel-Prize-winning formula for pricing options; adapted here to estimate directional probabilities
Shadow ledgerA record of what would have happened if you'd traded — paper trading with full bookkeeping
Wilson CIWilson confidence interval — a way to say "the true win rate is probably between X% and Y%" that works well with small samples
CLOBCentral limit order book — the exchange's matching engine where bids and asks meet
P&LProfit and Loss
EVExpected value — the average outcome if you repeated the trade infinitely many times