All posts
ResearchBacktestingStrategy ResearchUp/Down Markets

A 97.7% Win Rate That Loses Money: Buying Favorites, Backtested

Buy the side that's clearly winning, collect the near-certain payout, repeat. It produces a win rate that looks extraordinary on a screenshot. Across 17,002 trades on real order book data it also loses money, and the reason is arithmetic rather than luck.

11 min read

The most widely repeated Polymarket Up/Down strategy is also the simplest: with a minute left, buy whichever side is clearly winning. It is intuitive, it is easy to automate, and it produces the kind of win rate that gets screenshotted.

We tested it against 17,002 simulated trades on real order book snapshots. The win rate is genuinely extraordinary. The returns are negative.

How the test works

  • Universe: every resolved BTC, ETH and SOL 5-minute Up/Down market in the PolyTest archive — a rolling 31-day window covering 5 August to 5 September 2026.
  • Entry: one trade per market, at the snapshot nearest 60 seconds before expiry. One observation per market, so no autocorrelation from sampling the same market repeatedly.
  • Side: whichever outcome is quoted higher — the favourite.
  • Fill price: the ask, not the mid. price_up + price_down averages 1.0117 in this data, so the roughly 1.2¢ round-trip spread is already paid at entry.
  • Exclusions: markets where either side has an empty ask book. If nobody is offering, the trade is impossible — including it would fabricate fills that could not have happened.
  • Payout: winners settle at $1.00, losers at $0.

Result: buying the favourite, by price band

Entry priceTradesAvg costWin rateEdgeROIzVerdict
50–60¢1,71553.72¢53.18%−0.54pp−1.00%−0.45Noise
60–70¢1,47164.71¢66.76%+2.04pp+3.16%1.66Noise
70–80¢1,82474.67¢76.15%+1.49pp+1.99%1.49Noise
80–90¢2,46984.87¢85.05%+0.18pp+0.22%0.26Noise
90–97¢3,64493.56¢91.16%−2.39pp−2.56%−5.09Significant
97¢+5,87998.38¢97.70%−0.68pp−0.69%−3.47Significant
17,002 trades. z is the edge divided by its standard error; |z| ≥ 1.96 is significant at 95%. Edge is win rate minus average cost, in percentage points.

Read the bottom two rows first, because that is where the volume is. Over half the trades fall at 90¢ or above, and both of those bands lose money at high statistical confidence. The 90–97¢ band is the worst: you pay 93.56¢ for something that happens 91.16% of the time, bleeding 2.39 percentage points on every trade with a z-score of −5.09.

The middle bands look better — 60–70¢ shows +3.16% ROI — but neither clears significance. At z = 1.66 and z = 1.49 those are the returns you would expect from a coin flip dressed up in 1,500 trades. No band shows a statistically significant positive edge.

The calibration curve

Stepping back from the strategy to the market itself: how accurate are these prices? For every BTC 5-minute market we took the quoted Up price 60 seconds before expiry and compared it to how often Up actually won.

Quoted Up priceMarketsActual Up rateMispricing
1.5¢2,2770.6%−0.9pp
6.8¢4805.4%−1.4pp
11.9¢3089.1%−2.8pp
16.9¢20513.2%−3.8pp
21.9¢16718.0%−3.9pp
42.0¢10942.2%+0.2pp
62.0¢10368.0%+6.0pp
72.1¢15268.4%−3.7pp
82.0¢18488.6%+6.5pp
92.2¢40891.4%−0.8pp
97.8¢1,07798.1%+0.3pp
BTC 5m markets, quoted Up ask at T−60s versus realised outcome. Negative mispricing means the contract is overpriced relative to how often it wins.

This is a textbook favourite–longshot bias, the effect documented in racetrack betting and prediction markets for decades. Longshots are systematically overpriced: contracts quoted around 17¢ win 13.2% of the time, and ones quoted around 22¢ win 18.0%. Mid-range favourites are underpriced by a few points.

It is real, it is in the right direction, and it is very hard to monetise — because the bands where the bias is largest are the bands with the thinnest books and the widest relative spreads. The bias shows up in the calibration curve and disappears in the P&L, which is the usual fate of a well-known anomaly.

So does the bias exist or not?

Both, and the distinction is the whole point:

  • As a description of prices — yes. Longshots below ~25¢ are consistently overpriced by 3–4 percentage points. That is a genuine, measurable property of these markets.
  • As a strategy — no. Buying favourites returns nothing after the spread, and at the prices where most volume sits it returns less than nothing with high confidence.
  • The asymmetry is the tell. If longshots are overpriced, the trade is not to buy favourites — it is to sell longshots. That requires posting resting offers and being filled by someone else's market order, which is market making, with all the inventory risk that implies. It is not a strategy you execute by hitting asks.

Reproduce it

Every figure above comes from data you can pull. The shape of the test matters more than our numbers — run it on your own window and see whether it still holds.

import os, requests
from statistics import mean

BASE, H = "https://api.polytest.io/api/v1", {"X-API-Key": os.environ["POLYTEST_KEY"]}

trades = []
markets = requests.get(f"{BASE}/markets", headers=H, params={
    "coin": "btc", "market_type": "5m", "limit": 100,
}).json()["markets"]

for m in markets:
    if not m.get("winner"):
        continue
    # The snapshot nearest 60s before expiry — one observation per market.
    snap = requests.get(f"{BASE}/markets/{m['id']}/snapshots/at", headers=H, params={
        "timestamp": m["end_time"], "offset_seconds": -60,
        "include_orderbook": "true",
    }).json().get("snapshot")
    if not snap:
        continue

    up, down = snap.get("price_up"), snap.get("price_down")
    if up is None or down is None:
        continue                       # no offer on one side: untradeable

    side = "Up" if up >= down else "Down"
    cost = max(up, down)               # pay the ask, not the mid
    trades.append((cost, m["winner"] == side))

n = len(trades)
cost = mean(c for c, _ in trades)
wr = sum(w for _, w in trades) / n
print(f"n={n}  cost={cost:.4f}  win_rate={wr:.4f}  ROI={(wr-cost)/cost*100:+.2f}%")

What this does and does not prove

  • One month. A rolling 31-day window, 5 Aug – 5 Sep 2026. Long enough for 17,002 trades, not long enough to cover multiple volatility regimes.
  • Top-of-book fills. We charge the best ask and assume the full trade fills there. Real size walks the book, so live results would be worse than these, not better.
  • No fees or gas. Adding them moves every row down.
  • 5-minute markets only. Longer timeframes have different liquidity and may behave differently.
  • Entry at exactly T−60s. Timing turns out to matter enormously — see the entry timing study.

The conclusion we would defend: buying favourites at the ask is not a strategy, it is a way to pay the spread 17,000 times. If you want a version of this that does work, the spot-lag study tests a related idea that does show a real edge — along with the constraint that stops it scaling.

Every number here came from PolyTest snapshots with full order book depth. Polymarket's own API cannot support this test at all: request a resolved market's book and it returns 404, request its price history and it returns 200 with an empty array. Start free if you want to run your own version.

Frequently asked questions

Does buying the favorite work on Polymarket Up/Down markets?
No. Across 17,002 simulated trades on BTC, ETH and SOL 5-minute markets, entering 60 seconds before expiry at the ask, no price band showed a statistically significant positive return. Two bands lost money significantly: 90-97¢ returned -2.56% per trade (z = -5.09) and 97¢+ returned -0.69% (z = -3.47). Those two bands contain more than half of all trades.
How can a 97% win rate strategy lose money?
Because the payout is fixed at $1. Buying at 98.38¢ with a 97.70% win rate means 39 wins out of 40 return about 63 cents in total profit, while the single loss costs 98 cents. Win rate and expected value are different quantities, and on prediction markets a very high win rate usually means you are paying close to the true probability with no margin left.
Is there a favorite-longshot bias on Polymarket?
Yes, measurably. In BTC 5-minute markets, contracts quoted around 17¢ resolved in the buyer's favour only 13.2% of the time, and contracts around 22¢ won 18.0% — longshots overpriced by 3-4 percentage points. But it does not convert into a profitable buy-the-favourite strategy, because the bias sits in the bands with the thinnest books and the widest relative spreads.
Why does paying the ask instead of the mid change the result?
On Polymarket Up/Down markets, the two sides' ask prices sum to about 1.0117, so roughly 1.2 cents of spread is paid on entry. Since the contract settles at $1, that is a 1.2 percentage point hurdle on every trade. Several strategies show apparent edges smaller than that, which is exactly why mid-price backtests look profitable while live trading does not.
Should I sell longshots instead of buying favorites?
That is where the measured bias actually points, but it is a different kind of trade. Selling overpriced longshots means posting resting offers and waiting to be filled by someone else's market order — market making, with inventory risk and adverse selection. It cannot be executed by taking liquidity the way buying favourites can, and this backtest does not measure it.

Get the historical data Polymarket does not keep

PolyTest records Polymarket crypto Up/Down markets as they run — 240M+ snapshots with 8 levels of order book depth, sub-second timestamps, and resolved markets preserved. Free tier, no card.

Keep reading