← Back to blog

How to Hedge a Sports Bet: The Math of Locking In Profit

By the ZenHodl team — we run the trading bots this blog writes about, and the qualifying live-position record, including losses, is public with its admission rules at /results.

Correction — 6 August 2026

This post originally described sub-$1 pair sums as "guaranteed profit with zero risk" and "free money" that happens "multiple times per game." That was wrong on frequency, wrong on execution, and it credited the strategy to a ZenHodl bot that had already been switched off when the post was published.

What we have actually measured, in our own cross-venue arbitrage study: the median quoted two-sided edge is negative, about −1¢, before you cross anything. A positive quoted edge above a 3–5¢ round-trip cost floor appears in only 0.39% of time-weighted exposure, and 92.8% of the rare windows wider than 3¢ are gone by the next ~30-second sample. On the sample used in our calibration study, an executable lock above a 3¢ cost floor existed in 0.36% of snapshots, and even those averaged −0.52¢ once the spread was paid.

That study compares two venues (Polymarket against Kalshi). We have never measured within-market YES+NO pair sums, so this post no longer makes any claim about how often those occur.

The claim that a ZenHodl "hedge accumulator bot" and "WP hedge overlay" do this automatically was also false. Hedge stacking was switched off across the fleet on 2 May 2026 (hedge_stack_enabled = False in every bot config), twenty days before this post was published, and no hedge overlay has run since. Our live ledger stood at −$217.75 over 2,214 resolved trades on 6 August 2026 (current figures on /results), and its best-ever cumulative point was +$38.34. None of it was locked free money.

The hedging arithmetic below is unchanged and still correct. It is the words "guaranteed", "free", and "often" that were not.

Hedging is the move most sports bettors get wrong in both directions. Some hedge every winning ticket out of fear and leave EV on the table. Others refuse to hedge anything and watch a +$200 winner evaporate into a -$50 loser on a fluke. The math actually tells you when to hedge and when to ride. What it will not tell you is where to find free money.

This post walks through the formulas, the worked examples, and the structural reason hedging works better on Polymarket than on a traditional sportsbook.

What "Hedge" Actually Means

A hedge is a position that pays off if your original bet loses. You stake some amount on the opposite side so that, regardless of which side wins, you walk away with a known profit (or a known smaller loss).

Three things to keep straight:

The Math (Two-Outcome Markets)

Suppose you bought $S_A$ shares of side A at price $p_A$ (in dollars per share, so $0 < p_A < 1$ on a prediction market, or convertible from American/decimal odds on a sportsbook). The market then moves and side B is now available at price $p_B$.

If you buy $S_B$ shares of side B, your dollar outcome at resolution is:

profit_if_A_wins  = S_A × (1 - p_A) - S_B × p_B
profit_if_B_wins  = -S_A × p_A + S_B × (1 - p_B)

To lock the same profit either way (perfect hedge), set those equal and solve for $S_B$:

S_B = (S_A × p_A + S_A × (1 - p_A) × x) / (1 - p_B)

You don't actually need to memorize that — the practical version is:

S_B = S_A   (for a perfect lock, when both sides pay $1 on win)

That's the punchline. On Polymarket and Kalshi, where each contract pays exactly $1 at resolution, a perfect hedge means buying the same number of shares on the other side. Once both legs have actually filled, the locked profit per share is:

locked_profit_per_share = 1 - (p_A + p_B) - fees

If $p_A + p_B < 1$, you make money. If $p_A + p_B > 1$, you take a loss to fix the outcome. Note the precondition: a quoted price is not a fill. Everything below assumes you got both legs at the prices you saw, which is the assumption that fails most often in practice.

Worked Example: Lock-In Profit

You bought 100 shares of the Lakers at 35¢ pregame ($35 cost). The Lakers are now up 18 with 6 minutes left and the YES contract is trading at 92¢. You don't want to give back the gain.

The opposite contract (Lakers NO) is now trading at 9¢ (since the market is mostly resolved). Buy 100 shares of NO at 9¢ ($9 cost).

Total cost: $35 + $9 = $44 for 100 paired shares. Payout at resolution: $100 (one side wins, pays $1 per share). Profit: $100 - $44 = $56, before costs.

Two things that arithmetic hides. It excludes fees, so subtract your own round-trip cost. And it only exists once you have actually filled 100 NO shares at 9¢ — a 92¢/9¢ book late in a blowout is thin, and a partial fill leaves you partially hedged, not hedged.

Subject to those, you went from "+$57 if Lakers hold, -$35 if they collapse" to roughly "+$56 either way, no variance." You gave up about $1 of upside in exchange for eliminating the downside. Whether that's a good trade depends on your bankroll, how confident you are in the lead, and how many similar setups you have running in parallel.

Worked Example: Two-Sided Arbitrage, and Why You Will Rarely Get It

This section used to promise free money. It doesn't any more. The arithmetic is real; the frequency we claimed was not.

Suppose a market moves fast mid-game and the other side spikes briefly. You see:

Buy 100 of each. Shares cost $93, costs add $3–$5, so you are in for $96–$98 against a $100 payout at resolution. That is $2–$4 per hundred pairs, not the $5 this post used to quote — and only if both legs fill at the quoted prices.

That last condition is where most of these die. Our cross-venue capture samples books roughly every 30 seconds, and 92.8% of quoted windows wider than 3¢ had closed by the next sample. Quoted is not fillable: our own data cannot show that both sides were simultaneously executable, and we do not claim it.

For frequency, the honest numbers are in the correction at the top: a positive quoted edge above a 3–5¢ cost floor in 0.39% of time-weighted exposure, 0.36% of snapshots on the calibration sample, averaging −0.52¢ after the spread, with a negative median quoted edge overall. Under 1% of the time, mostly not executable, and negative in the middle of the distribution.

ZenHodl built exactly the overlay this section used to advertise — a bot that watched open positions from the rest of the fleet and bought the opposite side when the pair cost dropped below a threshold. We switched hedge stacking off on 2 May 2026 and have not run it since. Treat the paragraph that used to sit here as a retracted product claim, not a description of anything live.

On a sportsbook this setup is close to unavailable, because vig keeps the two-sided sum above 100% almost always. Prediction markets have no vig, only explicit fees, so a sub-100% pair sum is at least structurally possible. Possible is not frequent: within a single binary market a YES and a NO redeem together for exactly $1, so any sub-$1 pair sum is directly redeemable arbitrage that competing bots close quickly. We have not measured within-market pair sums ourselves, so we make no claim about their rate — only that "multiple times per game" was asserted without evidence and is withdrawn.

When You Should Hedge

Hedging is good when:

When You Should NOT Hedge

Hedging is bad when:

The Sportsbook Hedge

On a sportsbook, hedging works the same way but the vig makes it worse.

Say you bet $100 on the Patriots at +400 (decimal 5.00, implied 20%). You're in line for $400 profit if they win. They're up 21 at halftime and the live line on the Patriots is now -300 (decimal 1.33, implied 75%, but with vig pushing the no-vig fair to roughly 78-80%).

To lock the result, you bet on the other side — the Bills moneyline — at whatever it's currently offered. Let's say that's +280 (decimal 3.80, implied 26%, post-vig).

Stake to lock: you want your total profit identical either way.

If Patriots win:  +$400 - hedge_stake
If Bills win:     -$100 + hedge_stake × 2.80

Setting equal: $400 - x = -100 + 2.80x → x = $131.58.

Hedge stake $131.58 at +280. If Patriots win, +$400 - $131.58 = $268.42. If Bills win, -$100 + $131.58 × 2.80 = $268.42. Locked profit either way.

But notice: total stake is now $231.58 for a guaranteed $268.42 profit. The sportsbook is paying you a small premium to remove the variance because the vig built into both lines means the bookmaker collects a tax on each transaction. The same setup on a prediction market would yield meaningfully more profit because there is no vig — only a small explicit fee.

How to Decide in 60 Seconds

Quick mental algorithm:

  1. What is the current opposite price? If you can't see it, you can't hedge.
  2. What does my model say the opposite probability is? If the opposite price is higher than my model's fair probability, the hedge is EV-positive — consider taking it.
  3. What is the pair cost? If it is below $1 after your round-trip costs, both legs are worth trying — while expecting to miss most of them. Pair sums move faster than you can hit two sides.
  4. Is the position oversized for my bankroll? If yes, hedge even at a small EV cost. If no, only hedge when the opposite side has actually overshot.

If you do this often, write the math down once and reuse it:

def lock_profit_hedge(shares_a, price_a, price_b, fee_per_share=0.02):
    """For two-outcome prediction markets where each side pays $1."""
    # Perfect lock: buy equal shares on the other side.
    shares_b = shares_a
    cost = shares_a * price_a + shares_b * price_b + (shares_a + shares_b) * fee_per_share
    payout = shares_a  # exactly one side wins, pays $1 per share
    return payout - cost

def pair_is_worth_trying(price_a, price_b, cost_per_pair=0.04):
    """True if the QUOTED pair sum clears round-trip costs.

    Quoted, not guaranteed: both legs still have to fill at these prices,
    and on our data most wide pair sums close within ~30 seconds.
    """
    return (price_a + price_b + cost_per_pair) < 1.0

Twelve lines of Python cover most hedging decisions. They do not cover execution, which is the part that decides whether the second function ever pays.

The Bottom Line

Hedging is a tool, not a strategy. The bad version is fear-driven and gives away EV. The good version is math-driven and locks a rational profit on an oversized position. The version this post used to sell — free money picked up during mid-game volatility — is arithmetic that works and an opportunity that is rare, usually negative at the median, and gone before you can hit both sides.

The structural advantage of prediction markets here is real but smaller than we made it sound. On a sportsbook every hedge pays a tax to the bookmaker, embedded in both lines. On Polymarket and Kalshi the friction is explicit rather than hidden, which makes a hedge easier to price and usually cheaper to execute. It does not make sub-$1 pair costs common. ZenHodl does not run a hedge overlay: hedge stacking was switched off on 2 May 2026 and has stayed off.

If you bet sized properly with Kelly Criterion, you'll need to hedge less often than you think. When you do hedge, do it because the math says yes — not because you're nervous.


Free interactive hedge calculator — paste your position and the current opposite price, see the locked P&L instantly. Pair with the Kelly Criterion calculator, the odds converter, and the fair value calculator. Full course on building prediction market bots at zenhodl.net/course.

Related reading

Get ZenHodl Weekly

One weekly email with live results, one model insight, and product updates.

Tuesday mornings. No spam.

Want the data behind this post?

Historical sports prediction-market datasets with measured coverage, documented schemas, and disclosed gaps.