| Category | Market | Price | Liquidity | Volume | BS Fair | Edge |
|---|
| Time | Asset | Dir | Bid | Conf | Status | P&L |
|---|
A plain-language explainer
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.
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."
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.
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."
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.
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.
| Status | Finding |
|---|---|
| Confirmed | The model is calibrated (honest probabilities) |
| Confirmed | The mid-ask gap is huge (~16%) — most visible "edge" is fake |
| Confirmed | The favorite-longshot bias exists here (consistent with decades of research) |
| Confirmed | Order-book imbalance predicts short-term price moves |
| Measuring | Real maker fills are a pilot; conclusions require independent settlement clusters |
| Unknown | Whether the strategy actually makes money after all costs |
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.
Three things have to happen in order:
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.
| Term | What it means |
|---|---|
| Ask | The lowest price someone is willing to sell at — what you'd actually pay to buy |
| Bid | The highest price someone is willing to buy at — what you'd get if you sold now |
| Spread | The gap between bid and ask (you lose this immediately on a round trip) |
| Calibration | Does the model's stated probability match reality? "Says 80%, wins ~80%" = calibrated |
| Maker | A trader who posts limit orders (resting offers). Pays no fee, earns rebates |
| Taker | A trader who accepts existing offers (market orders). Pays the fee, needs speed |
| Adverse selection | When the people trading against you know something you don't — your fills are disproportionately the "bad" ones |
| FLB | Favorite-longshot bias — the robust empirical finding that favorites are underpriced and longshots are overpriced |
| Black-Scholes | A Nobel-Prize-winning formula for pricing options; adapted here to estimate directional probabilities |
| Shadow ledger | A record of what would have happened if you'd traded — paper trading with full bookkeeping |
| Wilson CI | Wilson confidence interval — a way to say "the true win rate is probably between X% and Y%" that works well with small samples |
| CLOB | Central limit order book — the exchange's matching engine where bids and asks meet |
| P&L | Profit and Loss |
| EV | Expected value — the average outcome if you repeated the trade infinitely many times |