Strasmore Research
Learn am Matt ConnorBy Matt Connor

How Delta Hedging Really Works

Delta hedging na buying and selling shares as the stock moves. See why short option books buy high, sell low, and lose money on round trips.

Delta hedging na the way options desk dey remain neutral to market direction. E hold share position wey size am to offset the option’s delta. Then e dey trade that position again as the underlying dey move.

If book short options, e go end up buying shares after the stock rise and selling shares after e fall. The desk’s profit and loss go then follow how far the stock travel, no be only where e finally close.

Wetin be delta hedging?

Delta na how much option price dey change for every $1 move for the underlying. Dem quote am from 0 to 1 for calls, and from 0 to -1 for puts. One US equity option cover 100 shares. So, when you multiply delta by 100, you get share count: the stock position wey the contract behave like at that moment. Our guide to option delta explain this conversion step by step.

Delta hedge dey set an opposite stock position against that number. If you sell one call with delta of 0.50, the book carry equivalent of 50 short shares. To buy 50 shares go flatten am. For this context, “hedged” get narrow meaning: the position neutral to small move at this exact moment and price. Delta no be fixed quantity. E dey change as the stock move and as time dey run out for the contract. So, the share position need follow the change.

Why hedge no dey stay one place

Delta across strikes na curve, e no be step. The panel below show the average delta for SPY calls and puts, based on how far the strike price dey from the spot price. E cover contracts wey get 25 to 35 days before expiry, across June 2026.

QueryAverage call and put delta by strike distance from spot (SPY, 25 to 35 days to expiry, 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_spot
Run this yourself

Read the curve from left to right and the whole problem dey clear. Calls wey their strike price dey -5% from the spot price get average delta of 0.839. For +5%, the same expiry window get average of 0.099. The put line dey show the reverse pattern, from -0.164 for the low strikes to -0.864 for the high ones. As stock dey move along that curve, e dey give the hedger different share requirement at every point. Gamma na the name for the steepness of the curve: how fast delta itself dey change.

How big each forced trade dey be?

Gamma na wetin set the size of every rebalance. The panel below convert am to the unit wey trading desk dey actually trade. For at-the-money SPY contracts, e show how many shares 100 contracts go force hedger to trade when underlying move by 1%, grouped by how much time remain before expiry.

QueryShares wey 1% move go force per 100 at-the-money SPY contracts, by time wey remain (June 2026)
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 bucket
Run this yourself

Contracts wey get 0-2 days to expiry shift the hedge by about 3429 shares for 1% move. The same 100 contracts wey get 46-90 days shift am by roughly 587. Contract count na the same, underlying na the same, but the amount of forced trading dey very different. Short-dated books dey rebalance hard and often; longer-dated books dey move gradually. How the greeks dey change over time track how this steepening enter expiry.

Five closes, and the shares wey dey behind dem

Make we follow one complete example. The prices na made-up figures to make the arithmetic simple, and we just state each delta; we no model am. A desk sell 10 at-the-money calls on one $100 stock at $2.00 per share and collect $2,000 (10 contracts, 100 shares each, $2.00 per share). E hedge back to flat after every close.

  1. Close 1, stock dey $100.00, delta na 0.50. The book short 500 deltas, so the hedge buy 500 shares. Hedge position: 500 shares long.
  2. Close 2, stock rise reach $103.00, delta na 0.62. Target na 620 shares, so the hedge buy 120 more. The 500 shares wey e carry through the rise gain $1,500.
  3. Close 3, stock fall reach $99.00, delta na 0.44. Target drop reach 440, so the hedge sell 180. The 620 shares wey e carry through the fall lose $2,480, and the hedge dey $980 behind.
  4. Close 4, stock rise reach $102.00, delta na 0.58. Target na 580, so the hedge buy 140. The 440 shares gain $1,320, and the hedge dey $340 ahead.
  5. Close 5, stock return to $100.00, delta na 0.48. Target na 480, so the hedge sell 100. The 580 shares lose $1,160, leaving the hedge $820 behind.

The stock finish exactly where e start. The hedger buy at $103 and $102, sell at $99 and $100, and e dey $820 down on the share position against the $2,000 premium wey e collect, while the option still open. No trade be mistake: every trade na the mechanically correct one at that time. Na the signs be the part wey remain the same even if the numbers change. Every purchase happen after the stock close up, and every sale happen after the stock close down. A book wey short options no fit reverse that pattern. If contracts double, gamma double too. Every trade for that list go double, and the bill for the same path go double as well. Why market makers lose money follow that arithmetic enter the cases wey the premium no cover the loss.

Time decay na the other side of the ledger. Across those five closes, the option lose time value too. That gain for the seller na wetin the hedging losses dey offset. A quiet path leave some premium unused. A jagged path spend am, and if the path jagged enough, e fit spend more than all the premium.

Path dey matter; destination no matter

Hedger dey trade against the path, no be the net change. The panel below measure both for four popular names during June 2026. Path length add every daily percentage move after removing the signs. Net move na the direct distance from the first close to the last close.

QueryTotal daily movement versus net movement, June 2026
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_ratio
Run this yourself

Even the name wey get the smallest gap, MSFT, cover 43.2% of daily movement before e finish 19% away from where e start. That na ratio of 2.3 to 1. For the other end of the panel, SPY travel 11.4 times its own net move. Directional trader dey make money from the second number. Delta hedger dey pay for the first.

Wetin the premium really dey pay for

The premium wey seller collect dey based on implied volatility, meaning the movement wey market expect. Hedging bill dey based on realized volatility, meaning the movement wey actually happen. The chart below put both for one axis for SPY, month by month, across the past year.

QuerySPY at-the-money implied volatility against realized volatility, by month
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.m
Run this yourself

For the last month wey the chart show, at-the-money SPY contracts wey get 20 to 45 days before expiry average 14.8% implied volatility, while the underlying print 12.1% realized volatility. Months wey realized line dey below implied line na months wey the price path cost hedger less than the premium wey dey decay. Months wey e dey above na the opposite. Na this gap, no be market direction, be the exposure wey delta-hedged option book carry. How market makers dey make money cover the spread capture wey dey happen alongside am, while gamma exposure add up this forced trading across the whole market.

How desks dey hedge for real life

Almost nobody dey rebalance for every market close, and only small number of desks dey follow fixed time. If dem hedge continuously, dem go track delta closely, but commissions and spread crossing go chop the premium. The normal approach na to use a band: leave the position as e be while net delta dey inside the allowed range, then trade am back toward flat when e break out. Wider band mean fewer trades, but more drift between trades. Desks still net the whole book before dem trade anything, so short call for one expiry and long call for another fit cancel each other before even one share move. Beta-weighted portfolio delta dey use that same netting idea across different underlyings.

FAQ

Delta hedging mean wetin for simple terms?

Na to hold stock position wey dey cancel option directional exposure. If you multiply delta by 100, you get the share equivalent of one contract. The hedger hold the opposite number, and dey update am as delta dey change.

Market makers dey hedge every option wey dem sell?

Dem dey hedge the book’s net exposure, no be each contract separately. Positions wey offset each other cancel internally first. Na only the remaining delta go the underlying as share trade.

Why delta hedge dey lose money when stock dey move up and down?

For short option book, every rebalance dey buy after price don rise and sell after price don fall. For round trip, the purchases dey happen above the sales. That difference na realized cost. The premium collected upfront na the budget wey the cost dey come from.

How often traders dey rebalance delta hedge?

For practice, no be one fixed interval. More frequent rebalancing dey track delta more closely, but e dey cost more through spread and commissions. So many desks set a delta tolerance band and trade only when position comot from that band.

Delta-hedged position risk free?

No. E dey neutralize small price moves for one moment only. Gaps and jumps, changes in implied volatility, dividends and financing costs still remain. The hedge itself also realize cost as the underlying dey move.

How dem measure these panels

The option panels dey read daily per-contract greeks. Dem filter am to contracts wey trade and wey implied volatility solve cleanly. “At the money” mean say strike dey within 1% of that day’s underlying close for the trade-size panel, and within 5% for the delta curve. The forced-trade figure dey convert gamma to shares: hedge for one contract dey move roughly by gamma times the share price for 1% move. The panel then scale am to 100 contracts. The June 2026 and trailing-year windows na fixed dates, so those readings no go change when person visit later. The five-close walk-through na invented, and each delta dey stated directly instead of deriving am from pricing model.


Every panel here carry the exact SQL wey produce am. Open one to see how dem count the number, or ask the same question for plain English on the Strasmore terminal.