How Delta Hedging Actually Works
How delta hedging works in practice: the shares a short option book is forced to buy and sell at each close, and why round trips cost the hedger money.
Delta hedging is how an options desk stays neutral on direction: it holds a share position sized to offset an option's delta, then re-trades that position as the underlying moves. A book that is short options ends up buying shares after the stock rises and selling them after it falls. The desk's profit and loss then tracks how far the stock travelled, not where it finished.
What is delta hedging?
Delta is the change in an option's price per $1 move in the underlying, quoted from 0 to 1 for calls and 0 to -1 for puts. One US equity option covers 100 shares, so multiplying delta by 100 turns it into a share count: the stock position the contract behaves like at this moment. Our guide to option delta walks through that conversion.
A delta hedge sets an offsetting stock position against that number. Sell one call with a delta of 0.50 and the book carries the equivalent of 50 short shares; buying 50 shares flattens it. "Hedged" has a narrow meaning here: neutral to a small move, at this instant, at this price. Delta is not a fixed quantity. It slides as the stock moves and as time runs off the contract, and the share position has to follow it.
Why the hedge never stays put
Delta across strikes is a curve rather than a step. The panel below averages the delta of SPY calls and puts by how far the strike sat from the spot price, for contracts with 25 to 35 days of life left, across June 2026.
The exact SQL behind every number
SELECT
concat(if(pct_from_spot >= 0, '+', ''), toString(pct_from_spot), '%') AS strike_vs_spot,
round(avgIf(delta, is_call), 3) AS call_delta,
round(avgIf(delta, is_put), 3) AS put_delta
FROM
(
SELECT
toInt16(round((toFloat64(strike_price) / toFloat64(underlying_close) - 1) * 100)) AS pct_from_spot,
lower(option_type) IN ('call', 'c') AS is_call,
lower(option_type) IN ('put', 'p') AS is_put,
delta
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND iv_converged = 1
AND volume > 0
AND underlying_close > 0
AND days_to_expiry BETWEEN 25 AND 35
AND date >= '2026-06-01'
AND date < '2026-07-01'
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) <= 0.05
)
GROUP BY pct_from_spot
HAVING countIf(is_call) > 0 AND countIf(is_put) > 0
ORDER BY pct_from_spotRead the curve left to right and the whole problem is visible. Calls whose strike sat -5% from the spot price averaged a delta of 0.839. At +5%, the same expiry window averaged 0.099. The put line runs the mirror image of it, from -0.164 at the low strikes to -0.864 at the high ones. A stock travelling along that curve hands the hedger a different share requirement at every point on it. Gamma is the name for the steepness of the curve: the rate at which delta itself changes.
How big is each forced trade?
Gamma sets the size of every rebalance. The panel below converts it into the unit a desk actually trades. For at-the-money SPY contracts, it shows how many shares 100 of them force the hedger to trade for a 1% move in the underlying, grouped by how much time the contracts had left.
The exact SQL behind every number
SELECT
multiIf(bucket = 1, '0-2 days',
bucket = 2, '3-7 days',
bucket = 3, '8-21 days',
bucket = 4, '22-45 days',
'46-90 days') AS expiry_window,
toUInt32(round(avg(shares_per_contract) * 100)) AS hedge_shares
FROM
(
SELECT
multiIf(days_to_expiry <= 2, 1,
days_to_expiry <= 7, 2,
days_to_expiry <= 21, 3,
days_to_expiry <= 45, 4,
5) AS bucket,
toFloat64(gamma) * toFloat64(underlying_close) AS shares_per_contract
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND iv_converged = 1
AND volume > 0
AND underlying_close > 0
AND days_to_expiry BETWEEN 0 AND 90
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) <= 0.01
AND date >= '2026-06-01'
AND date < '2026-07-01'
)
GROUP BY bucket
ORDER BY bucketContracts with 0-2 days to run shifted the hedge by about 3429 shares for a 1% move. The same 100 contracts at 46-90 days shifted it by roughly 587. Identical contract count, identical underlying, wildly different amounts of forced trading. Short-dated books rebalance hard and often; longer-dated books drift. How the greeks change over time tracks that steepening into expiry.
Five closes, and the shares behind them
Here is the mechanic end to end on a made-up path. The prices are invented for round arithmetic and each delta is simply stated, not modeled. A desk sells 10 at-the-money calls on a $100 stock at $2.00 per share and collects $2,000 (10 contracts, 100 shares each, $2.00 per share). It hedges back to flat at every close.
- Close 1, stock at $100.00, delta 0.50. The book is short 500 deltas, so the hedge buys 500 shares. Hedge position: 500 shares long.
- Close 2, stock at $103.00, delta 0.62. The target is 620 shares, so the hedge buys 120 more. The 500 shares carried through the rise gained $1,500.
- Close 3, stock at $99.00, delta 0.44. The target drops to 440, so the hedge sells 180. The 620 shares carried through the fall lost $2,480, putting the hedge $980 behind.
- Close 4, stock at $102.00, delta 0.58. The target is 580, so the hedge buys 140. The 440 shares gained $1,320, putting the hedge $340 ahead.
- Close 5, stock at $100.00, delta 0.48. The target is 480, so the hedge sells 100. The 580 shares lost $1,160, leaving the hedge $820 behind.
The stock finished exactly where it started. The hedger bought at $103 and $102, sold at $99 and $100, and sits $820 down on the share position against the $2,000 of premium collected, with the option still open. No step was a mistake: every trade was the mechanically correct one at the time. The signs are the part that survives any change to the numbers. Every purchase came after an up close and every sale came after a down close, and a book that is short options cannot invert that pattern. Double the contracts and gamma doubles with them, so every trade in that list doubles too, and so does the bill for the very same path. Why market makers lose money follows that arithmetic into the cases where the premium fails to cover it.
Time decay is the other side of the ledger. Across those five closes the option also shed time value, and that gain to the seller is what the hedging losses are drawn against. A quiet path leaves premium unspent. A jagged path spends it, and a jagged enough path spends more than all of it.
The path matters, the destination does not
A hedger trades against the path, not the net change. The panel below measures both for four household names over June 2026. Path length sums every daily percentage move with the signs stripped out. Net move is the plain distance from the first close to the last.
The exact SQL behind every number
SELECT
ticker,
round(path, 1) AS path_length_pct,
round(net, 1) AS net_move_pct,
round(path / greatest(net, 0.05), 1) AS path_to_net_ratio
FROM
(
SELECT
ticker,
arraySum(arrayMap((a, b) -> abs(a / b - 1) * 100,
arraySlice(px, 2),
arraySlice(px, 1, length(px) - 1))) AS path,
abs(px[-1] / px[1] - 1) * 100 AS net
FROM
(
SELECT
ticker,
arrayMap(t -> t.2, arraySort(t -> t.1, groupArray((session_date, session_close)))) AS px
FROM
(
SELECT
ticker,
date AS session_date,
toFloat64(max(close)) AS session_close
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'KO')
AND date >= '2026-06-01'
AND date < '2026-07-01'
GROUP BY ticker, date
)
GROUP BY ticker
)
)
ORDER BY path_to_net_ratioEven the name with the narrowest gap, MSFT, covered 43.2% of daily movement to finish 19% from where it began, a ratio of 2.3 to 1. At the other end of the panel, SPY travelled 11.4 times its own net move. A directional trader is paid on the second number. A delta hedger pays for the first.
What the premium is actually paying for
The premium a seller collects is priced off implied volatility, the movement the market expects. The hedging bill is set by realized volatility, the movement that actually turns up. The panel below puts both on one axis for SPY, month by month, over the trailing year.
The exact SQL behind every number
WITH
monthly_iv AS
(
SELECT
toStartOfMonth(date) AS m,
round(avg(implied_volatility) * 100, 1) AS implied_vol_pct
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND iv_converged = 1
AND volume > 0
AND underlying_close > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
AND date >= '2025-08-01'
AND date < '2026-08-01'
GROUP BY m
),
monthly_rv AS
(
SELECT
m,
round(arrayReduce('stddevPop', rets) * sqrt(252) * 100, 1) AS realized_vol_pct
FROM
(
SELECT
m,
arrayMap((a, b) -> log(a / b),
arraySlice(px, 2),
arraySlice(px, 1, length(px) - 1)) AS rets
FROM
(
SELECT
toStartOfMonth(session_date) AS m,
arrayMap(t -> t.2, arraySort(t -> t.1, groupArray((session_date, session_close)))) AS px
FROM
(
SELECT
date AS session_date,
toFloat64(max(close)) AS session_close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2025-08-01'
AND date < '2026-08-01'
GROUP BY date
)
GROUP BY m
)
WHERE length(rets) > 5
)
)
SELECT
toString(iv.m) AS month,
iv.implied_vol_pct AS implied_vol_pct,
rv.realized_vol_pct AS realized_vol_pct
FROM monthly_iv AS iv
INNER JOIN monthly_rv AS rv ON rv.m = iv.m
ORDER BY iv.mIn the last month on that chart, at-the-money SPY contracts with 20 to 45 days to expiry averaged 14.8% implied volatility while the underlying printed 12.1% realized. Months where the realized line sits under the implied line are months when the path cost the hedger less than the premium decaying away. Months where it sits above are the reverse. That gap, and not the market's direction, is the exposure a delta-hedged option book carries. How market makers make money covers the spread capture sitting alongside it, and gamma exposure adds up this forced trading across a whole market.
How desks hedge in practice
Almost nobody rebalances at every close, and few desks work off a fixed clock. Hedging continuously would track delta closely and would pay away the premium in commissions and spread crossing. The usual approach is a band: leave the position alone while net delta sits inside a tolerance, then trade back toward flat when it breaks out. A wider band means fewer trades and more drift between them. Desks also net the whole book before trading anything, so a short call in one expiry and a long call in another can cancel before a single share moves. Beta-weighted portfolio delta applies that same netting idea across different underlyings.
FAQ
What is delta hedging in simple terms?
It is holding a stock position that cancels an option's directional exposure. Delta times 100 gives the share equivalent of one contract, and the hedger holds the opposite of that number, updating it as delta moves.
Do market makers hedge every option they sell?
They hedge the net exposure of the book rather than each contract on its own. Offsetting positions cancel internally first, and only the leftover delta reaches the underlying as a share trade.
Why does a delta hedge lose money on a choppy stock?
Every rebalance on a short option book buys after an up move and sells after a down move. On a round trip the purchases sit above the sales, and that difference is a realized cost. The premium collected up front is the budget it comes out of.
How often do traders rebalance a delta hedge?
There is no single interval in practice. Rebalancing more often tracks delta more closely and pays more away in spread and commissions, so many desks set a delta tolerance band and trade only when the position leaves it.
Is a delta-hedged position risk free?
No. It neutralizes small moves at one instant. Gaps and jumps, shifts in implied volatility, dividends, and financing costs all remain live, and the hedge itself realizes a cost as the underlying travels.
How these panels were measured
The option panels read daily per-contract greeks, filtered to contracts that traded and whose implied volatility solved cleanly. "At the money" means a strike within 1% of that day's underlying close in the trade-size panel and within 5% in the delta curve. The forced-trade figure converts gamma into shares: one contract's hedge moves by roughly gamma times the share price for a 1% move, and the panel scales that to 100 contracts. The June 2026 and trailing-year windows are fixed dates, so those readings stay put on later visits. The five-close walk-through is invented, with each delta stated rather than derived from a pricing model.
Every panel here carries the exact SQL that produced it. Open one to see how the number was counted, or ask the same question in plain English on the Strasmore terminal.