Greeks
First and second-order sensitivities, with closed-form Black-Scholes-Merton expressions.
N() is the standard normal cumulative distribution function and phi() its density. Definitions below assume the Black-Scholes-Merton framework with continuous dividend yield q. Quoting conventions differ from mathematical definitions and are stated separately for each measure, because that mismatch is a common source of error.
Black-Scholes-Merton inputs
| Term | Expression |
|---|---|
| d1 | [ln(S/K) + (r - q + sigma^2/2)*T] / (sigma*sqrt(T)) |
| d2 | d1 - sigma*sqrt(T) |
| Call value | S*exp(-q*T)*N(d1) - K*exp(-r*T)*N(d2) |
| Put value | K*exp(-r*T)*N(-d2) - S*exp(-q*T)*N(-d1) |
Sensitivities
| Greek | Definition | Call | Put | Quoted as |
|---|---|---|---|---|
| Delta | dV/dS | exp(-q*T)*N(d1) | exp(-q*T)*(N(d1) - 1) | Per 1.00 move in S. Range 0 to 1 for calls, -1 to 0 for puts. |
| Gamma | d2V/dS2 | exp(-q*T)*phi(d1) / (S*sigma*sqrt(T)) | Identical to call | Change in delta per 1.00 move in S. |
| Vega | dV/dsigma | S*exp(-q*T)*phi(d1)*sqrt(T) | Identical to call | Usually divided by 100 and quoted per 1 volatility point. |
| Theta | dV/dt | Negative for long options, largest near ATM at expiry | Same sign convention | Usually divided by 365 and quoted per calendar day. |
| Rho | dV/dr | K*T*exp(-r*T)*N(d2) | -K*T*exp(-r*T)*N(-d2) | Usually divided by 100 and quoted per 1 percentage point. |
Reference Greeks at fixed inputs, verified
Computed at S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25 from the closed forms above. Per-share figures; multiply by 100 for one standard contract. Vega is stated per one volatility point and theta per calendar day, matching quoting convention rather than the raw derivative. These are chosen inputs, not market observations.
| Strike | d1 | d2 | Call | Put | Delta call | Delta put | Gamma | Vega/pt | Theta call/day | Theta put/day | Rho call/pt |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 95 | 0.662933 | 0.562933 | 7.5459 | 1.6006 | 0.746313 | -0.253687 | 0.032024 | 0.160121 | -0.024899 | -0.014592 | 0.167714 |
| 100 | 0.150000 | 0.050000 | 4.4852 | 3.4902 | 0.559618 | -0.440382 | 0.039448 | 0.197240 | -0.027257 | -0.016407 | 0.128691 |
| 105 | -0.337902 | -0.437902 | 2.3909 | 6.3461 | 0.367719 | -0.632281 | 0.037681 | 0.188403 | -0.024415 | -0.013022 | 0.085952 |
Position Greeks worked across multi-leg structures
Same inputs. One contract per leg, multiplier 100. Delta in share-equivalents, gamma in delta per 1.00 move, vega in dollars per volatility point, theta in dollars per calendar day. Each row is the signed sum of its legs and nothing else.
| Position | Value | Position delta | Position gamma | Position vega | Position theta |
|---|---|---|---|---|---|
| Long 100 call | +448.52 | +55.96 | +3.945 | +19.72 | -2.726 |
| Short 100 call | -448.52 | -55.96 | -3.945 | -19.72 | +2.726 |
| Long 100 straddle | +797.55 | +11.92 | +7.890 | +39.45 | -4.366 |
| Bull call spread 100/105 | +209.44 | +19.19 | +0.177 | +0.884 | -0.284 |
| Iron condor 90/95/105/110 | n/a, credit position | -1.74 | -2.147 | -10.74 | +1.171 |
| 10 short 100 calls, delta-hedged with 560 shares | n/a | +0.38 | -39.45 | -197.24 | +27.26 |
Second- and third-order Greeks in closed form
Every expression below was verified against a central finite difference of the corresponding first-order Greek at the reference inputs; the largest disagreement across all of them was 1.2e-07, on ultima, which is third order and therefore the noisiest to difference numerically. Charm, veta and colour are stated as derivatives with respect to calendar time t, so a positive number means the quantity increases as time passes. Vega and its derivatives are raw, not divided by 100.
| Greek | Definition | Closed form | Identical for a call and a put |
|---|---|---|---|
| Vanna | d2V / (dS dsigma) | minus exp(-q*T)*phi(d1)*d2/sigma | Yes |
| Volga, also vomma | d2V / dsigma^2 | Vega*d1*d2/sigma | Yes |
| Charm | d2V / (dS dt), the drift of delta with time | Call: q*exp(-q*T)*N(d1) minus exp(-q*T)*phi(d1)*[2*(r-q)*T minus d2*sigma*sqrt(T)] / (2*T*sigma*sqrt(T)). Put: same second term, with minus q*exp(-q*T)*N(-d1) in place of the first | Only when q = 0 |
| Veta | dVega / dt, the drift of vega with time | S*exp(-q*T)*phi(d1)*sqrt(T)*[q + (r-q)*d1/(sigma*sqrt(T)) minus (1 + d1*d2)/(2*T)] | Yes |
| Speed | d3V / dS^3 | minus (Gamma/S)*(1 + d1/(sigma*sqrt(T))) | Yes |
| Zomma | dGamma / dsigma | Gamma*(d1*d2 minus 1)/sigma | Yes |
| Colour, also color | dGamma / dt | Gamma*[q + (r-q)*d1/(sigma*sqrt(T)) + (1 minus d1*d2)/(2*T)] | Yes |
| Ultima | d3V / dsigma^3 | minus (Vega/sigma^2)*[d1*d2*(1 minus d1*d2) + d1^2 + d2^2] | Yes |
| Dual delta | dV / dK | Call: minus exp(-r*T)*N(d2). Put: exp(-r*T)*N(-d2) | No |
| Dual gamma | d2V / dK^2 | exp(-r*T)*phi(d2)/(K*sigma*sqrt(T)) | Yes |
Second- and third-order Greeks at the reference inputs, verified
S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. Per-share figures, raw units, computed from the closed forms above and cross-checked against finite differences. Charm is the call figure; at q = 0 the put figure is identical, because the difference between call and put delta is the constant exp(-q*T) and its time derivative is zero.
| Strike | Vanna | Volga | Charm | Veta | Speed | Zomma | Colour | Ultima | Dual delta, call | Dual gamma |
|---|---|---|---|---|---|---|---|---|---|---|
| 95 | minus 0.901374 | 29.877514 | plus 0.232453 | minus 39.729219 | minus 0.002443 | minus 0.100366 | plus 0.048638 | minus 396.416260 | minus 0.706163 | 0.035484 |
| 100 | minus 0.098620 | 0.739649 | minus 0.118344 | minus 38.560355 | minus 0.000986 | minus 0.195760 | plus 0.080671 | minus 15.997986 | minus 0.514765 | 0.039448 |
| 105 | plus 0.825018 | 13.938743 | minus 0.480729 | minus 45.802465 | plus 0.000896 | minus 0.160525 | plus 0.059117 | minus 203.478793 | minus 0.327438 | 0.034177 |
Position Greeks by structure at the reference inputs, verified
Every leg valued from Black-Scholes-Merton at S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25, one contract per leg, multiplier 100. These are model values at chosen inputs, not the stated premiums used in the payoff worked examples elsewhere on this site, so the value column will not match those dollar figures. Delta is in share-equivalents, gamma in delta per 1.00 move, vega in dollars per volatility point, theta in dollars per calendar day. Each row is the signed sum of its legs and nothing else.
| Structure | Value | Position delta | Position gamma | Position vega per point | Position theta per day |
|---|---|---|---|---|---|
| Long 100 call | plus 448.52 | plus 55.96 | plus 3.9448 | plus 19.7240 | minus 2.7257 |
| Long 100 put | plus 349.02 | minus 44.04 | plus 3.9448 | plus 19.7240 | minus 1.6407 |
| Long 100 straddle | plus 797.55 | plus 11.92 | plus 7.8896 | plus 39.4479 | minus 4.3663 |
| Short 95/105 strangle | minus 399.15 | minus 11.40 | minus 6.9705 | minus 34.8523 | plus 3.9007 |
| Bull call spread 100/105 | plus 209.44 | plus 19.19 | plus 0.1767 | plus 0.8837 | minus 0.2842 |
| Bear call spread 100/105 | minus 209.44 | minus 19.19 | minus 0.1767 | minus 0.8837 | plus 0.2842 |
| Bull put spread 95/100 | minus 188.96 | plus 18.67 | minus 0.7424 | minus 3.7119 | plus 0.1815 |
| Long 95/100/105 call butterfly | plus 96.63 | minus 0.52 | minus 0.9191 | minus 4.5956 | plus 0.5199 |
| Iron butterfly 95/100/105 | minus 398.40 | minus 0.52 | minus 0.9191 | minus 4.5956 | plus 0.4657 |
| Iron condor 90/95/105/110 | minus 226.96 | minus 1.74 | minus 2.1473 | minus 10.7364 | plus 1.1708 |
| Long call condor 90/95/105/110 | plus 268.07 | minus 1.74 | minus 2.1473 | minus 10.7364 | plus 1.2251 |
| Call ratio 1x2 100/105 | minus 29.65 | minus 17.58 | minus 3.5913 | minus 17.9565 | plus 2.1573 |
| Collar, long 100 shares plus 95 put minus 105 call | minus 79.03 on the options | plus 37.86 | minus 0.5656 | minus 2.8282 | plus 0.9823 |
| Box spread 100/110 | plus 990.05 | 0.00 | 0.0000 | 0.0000 | plus 0.1085 |
| Jade lizard 90p/105c/110c | minus 183.20 | minus 4.24 | minus 2.8118 | minus 14.0590 | plus 1.5671 |
Profit and loss attribution on one reprice, term by term
Long one K = 100 call. The move: S from 100 to 102, sigma from 0.20 to 0.22, and 7 calendar days elapse, so T goes from 0.25 to 0.230822. Value moves from 4.485236409 to 5.855752, an actual change of plus 1.370515 per share, plus 137.05 per contract. Terms are added in the order shown and the residual column is what is still unexplained after each one. Every figure recomputed.
| Term | Expression | Contribution per share | Cumulative | Residual |
|---|---|---|---|---|
| Delta | Delta*dS = 0.559618*2.00 | plus 1.11923538 | plus 1.11923538 | plus 0.25127974 |
| Gamma | 0.5*Gamma*dS^2 = 0.5*0.039448*4.00 | plus 0.07889587 | plus 1.19813125 | plus 0.17238388 |
| Speed | Speed*dS^3/6 | minus 0.00131493 | plus 1.19681632 | plus 0.17369881 |
| Vega | Vega*dsigma = 19.723967*0.02 | plus 0.39447933 | plus 1.59129565 | minus 0.22078052 |
| Volga | 0.5*Volga*dsigma^2 | plus 0.00014793 | plus 1.59144358 | minus 0.22092845 |
| Theta | Theta*dt = minus 9.948648*0.019178 | minus 0.19079599 | plus 1.40064759 | minus 0.03013246 |
| Vanna | Vanna*dS*dsigma | minus 0.00394479 | plus 1.39670280 | minus 0.02618767 |
| Charm | Charm*dS*dt | minus 0.00453921 | plus 1.39216359 | minus 0.02164846 |
| Veta | Veta*dsigma*dt | minus 0.01479027 | plus 1.37737331 | minus 0.00685818 |
Entries
Gamma and vega are identical for calls and puts
For the same strike, expiration, and underlying, a call and a put have identical gamma and identical vega. Only delta, theta, and rho differ. This follows directly from put-call parity, in which the difference between call and put value is linear in S and therefore has zero second derivative and no volatility sensitivity.
- Practical consequence: a long straddle has roughly double the gamma and vega of either leg alone, and near-zero delta at the money.
- It also means there is no gamma or vega reason to prefer a call over a put at the same strike. The choice is about delta, financing, and assignment.
Second-order Greeks
Cross-derivatives that matter for hedged books held over time.
| Field | Value |
|---|---|
| Vanna | d2V/(dS dsigma) - how delta moves as volatility moves |
| Charm (delta decay) | d2V/(dS dt) - how delta moves as time passes |
| Volga (vomma) | d2V/dsigma2 - how vega moves as volatility moves |
| Speed | d3V/dS3 - how gamma moves as S moves |
- Charm is why a delta-hedged book drifts out of hedge over a weekend with no price movement at all.
- Volga is positive for long options, which is why long vega positions gain disproportionately in a volatility spike.
The theta-gamma relationship
In a delta-hedged Black-Scholes book, theta and gamma are two sides of one quantity. A long-gamma position pays theta; a short-gamma position collects it.
| Field | Value |
|---|---|
| Formula | Theta + 0.5*sigma^2*S^2*Gamma + (r-q)*S*Delta - r*V = 0 |
| Worked | S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20. Theta = -9.948648, 0.5*sigma^2*S^2*Gamma = 0.5*0.04*10000*0.039448 = 7.889587, (r-q)*S*Delta = 0.04*100*0.559618 = 2.238471, r*V = 0.04*4.485236 = 0.179409. Sum = -9.948648 + 7.889587 + 2.238471 - 0.179409 = 0.000000 to ten decimal places |
- This is the Black-Scholes PDE rearranged. It states that the time decay you pay is the fair price of the convexity you own.
- A long-gamma book profits when realised volatility exceeds the implied volatility paid, and loses otherwise. That comparison, not direction, is the actual position.
Delta
The first derivative of option value with respect to the underlying price. It is both a hedge ratio and, for d2 rather than d1, a bridge to the risk-neutral probability of finishing in the money.
| Field | Value |
|---|---|
| Formula | Delta_call = exp(-q*T)*N(d1); Delta_put = exp(-q*T)*(N(d1) - 1) = Delta_call - exp(-q*T) |
| Quoted as | Change in option value per 1.00 change in S, per share |
| Range | 0 to exp(-q*T) for calls, -exp(-q*T) to 0 for puts |
| Put-call relation | Delta_call - Delta_put = exp(-q*T) |
| Position delta | sum over legs of qty * multiplier * Delta_leg |
| Worked | Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: d1 = 0.150000, d2 = 0.050000, call = 4.4852, put = 3.4902. Delta_call = N(0.15) = 0.559618, Delta_put = -0.440382. Their difference is 1.000000, which equals exp(-0) as required. At K = 105: Delta_call = 0.367719. At K = 95: Delta_call = 0.746313 |
- At-the-money delta is above 0.50 for a call, not equal to it, because d1 carries the plus sigma-squared-over-two drift term. In the worked case it is 0.5596.
- Delta is a local slope. Using it to project a large move ignores gamma and will understate a long option and overstate a short one.
- Delta is not the probability of finishing in the money. N(d2) is the risk-neutral probability; N(d1) is delta. In the worked case they are 0.5199 and 0.5596, a gap of nearly four points at the money.
Gamma
The second derivative of option value with respect to the underlying price, equivalently the first derivative of delta. It measures how fast a hedge goes stale.
| Field | Value |
|---|---|
| Formula | Gamma = exp(-q*T)*phi(d1) / (S*sigma*sqrt(T)) |
| Quoted as | Change in delta per 1.00 change in S |
| Sign | Positive for long options of either type, negative for short |
| Put-call relation | Identical for a call and a put at the same strike and expiry |
| Convexity value | Value change from a move dS is approximately Delta*dS + 0.5*Gamma*dS^2 |
| Worked | Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: phi(0.15) = 0.394479, Gamma = 0.394479 / (100 * 0.20 * 0.5) = 0.039448 per share. Position gamma for one long contract = 3.9448. A 1.00 move contributes 0.5 * 0.039448 * 1 = 0.019724 per share, 1.97 per contract. A 2.00 move contributes 7.89 per contract, four times as much for twice the move |
- Gamma scales with the square of the move, so the convexity term is negligible for small moves and dominant for large ones. That asymmetry is the entire economics of a long-gamma book.
- Gamma is highest at the money and rises as expiry approaches, so an at-the-money short option is at its most dangerous on its last day.
- Gamma falls as sigma rises: a higher volatility input spreads the density and flattens the peak. Short-gamma positions therefore look calmer in high-volatility inputs than they behave.
Theta
The derivative of option value with respect to the passage of time, holding S and sigma fixed. Long options have negative theta because extrinsic value must reach zero at expiry.
| Field | Value |
|---|---|
| Formula | Theta_call = -S*exp(-q*T)*phi(d1)*sigma/(2*sqrt(T)) - r*K*exp(-r*T)*N(d2) + q*S*exp(-q*T)*N(d1) |
| Theta_put | -S*exp(-q*T)*phi(d1)*sigma/(2*sqrt(T)) + r*K*exp(-r*T)*N(-d2) - q*S*exp(-q*T)*N(-d1) |
| Quoted as | Usually divided by 365 and stated per calendar day |
| Decay over n days | Approximately n * Theta / 365, valid only while gamma is small over the interval |
| Worked | Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: annual Theta_call = -9.9486, so the quoted per-day figure is -9.9486 / 365 = -0.027257 per share, -2.73 per contract. Theta_put annual = -5.9884, per day -0.016407. Over 25 days the linear estimate is 25 * 0.027257 = 0.6814. Repricing the call at T = 0.25 - 25/365 gives 3.7599 against 4.4852, an actual drop of 0.7253. The linear estimate understates the true decay by 0.0439, about 6 percent |
- Theta is not linear. Quoting a per-day figure and multiplying by the holding period understates decay for an at-the-money option, because theta itself grows as expiry approaches.
- Call theta and put theta differ at the same strike because the interest terms carry opposite signs. In the worked case the call decays 66 percent faster than the put.
- A deep in-the-money put can have positive theta once the interest term dominates, which is the same condition that makes early exercise rational.
Vega
The derivative of option value with respect to implied volatility. Not a Greek letter, and not a true partial derivative in any model where sigma is a constant, but the standard measure of volatility exposure.
| Field | Value |
|---|---|
| Formula | Vega = S*exp(-q*T)*phi(d1)*sqrt(T) |
| Quoted as | Divided by 100 and stated per one volatility point |
| Put-call relation | Identical for a call and a put at the same strike and expiry |
| Scaling in time | Proportional to sqrt(T), so a four-times-longer option has twice the vega |
| Worked | Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: Vega = 100 * 0.394479 * 0.5 = 19.7240 in raw units, quoted as 0.197240 per volatility point per share, 19.72 per contract. Repricing the call at sigma = 0.21 gives 4.682511 against 4.485236, an actual change of 0.197274. The linear vega estimate is accurate to within 0.000034 for a one-point move |
- Vega is nearly exact for a one-point move and increasingly wrong for a large one, because volga makes vega itself a function of sigma.
- Vega peaks slightly above the at-the-money strike and falls away on both wings, but the wings carry far more vega per dollar of premium.
- A vega figure is meaningless without a term attached. One point of vega on a one-week option and one point on a one-year option are different exposures to the same headline number.
Rho
The derivative of option value with respect to the risk-free rate. Usually the smallest of the first-order Greeks for short-dated options and material for long-dated ones.
| Field | Value |
|---|---|
| Formula | Rho_call = K*T*exp(-r*T)*N(d2); Rho_put = -K*T*exp(-r*T)*N(-d2) |
| Quoted as | Divided by 100 and stated per one percentage point of rate |
| Sign | Positive for calls, negative for puts |
| Scaling in time | Roughly proportional to T, so it grows faster with maturity than vega does |
| Worked | Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: Rho_call = 100 * 0.25 * exp(-0.01) * 0.519939 = 12.8691 raw, quoted 0.128691 per percentage point per share, 12.87 per contract |
- Rho is the reason put-call parity implies a call is worth more than a put at the same at-the-money strike: in the worked case 4.4852 against 3.4902, a difference of 0.9950 which equals S - K*exp(-r*T) exactly.
- For LEAPS-length options rho can exceed vega in dollar terms, so a rate move repricing a long-dated book is not a volatility event.
Delta-neutral hedge ratio
The quantity of the underlying required to bring net position delta to zero. It is a point-in-time figure that decays with charm and moves with gamma.
| Field | Value |
|---|---|
| Formula | Shares to hedge = -(sum over legs of qty * multiplier * Delta_leg) |
| For a short option position | Buy shares equal to multiplier * |Delta| * contracts |
| Rehedge trigger by move | dS = dDelta_tolerance / Gamma |
| Worked | Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. Ten short at-the-money 100 calls carry position delta = -10 * 100 * 0.559618 = -559.62, so a delta-neutral hedge is long 560 shares. Position gamma is -10 * 100 * 0.039448 = -39.45, so a 1.00 rise in S changes position delta by -39.45 and the hedge is 39 shares short of neutral |
- A hedge computed from delta alone is neutral at one price and one instant. Gamma tells you how fast that stops being true, and it is the only figure that sets a sensible rehedge band.
- Rounding to whole shares leaves a residual delta. On a small position that residual can exceed the gamma exposure being managed.
- Hedging with the underlying neutralises delta and leaves gamma, vega, and theta untouched. Only another option can hedge those.
Gamma scalping arithmetic
The mechanical result of rehedging a delta-neutral position as the underlying moves. Each rehedge realises the convexity term of the value change, and the sum of those realisations is set against theta paid.
| Field | Value |
|---|---|
| Formula | Realised convexity per rehedge = 0.5 * Gamma * dS^2 per share |
| Over n independent moves | 0.5 * Gamma * sum(dS_i^2) |
| Breakeven condition | 0.5 * Gamma * sum(dS_i^2) = |Theta| * elapsed days / 365 |
| Equivalent condition | realised variance over the period exceeds the implied variance paid |
| Worked | Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. Gamma = 0.039448 per share. A 1.00 round trip realises 0.5 * 0.039448 * 1 = 0.019724 per share, 1.97 per contract. Daily theta is 0.027257 per share, 2.73 per contract. So one 1.00 round trip per day recovers 72 percent of the day theta; the position needs about 1.18 of movement per day to break even, since 0.5 * 0.039448 * 1.18^2 = 0.027464 |
- The breakeven move per day is proportional to the square root of theta over gamma, which is another statement of the implied-versus-realised comparison rather than a separate rule.
- Realised convexity depends on the path, not the endpoint. A position can be flat on the day and have scalped a substantial amount, or move a long way in one gap and scalp almost nothing.
- Every rehedge crosses a spread. The bid-ask cost of the rehedging programme is subtracted from the convexity, and at a tight rehedge band it can exceed it.
Aggregating Greeks across a multi-leg position
Greeks are additive across legs when each is expressed in the same units. Sum signed quantity times multiplier times the per-share Greek for every leg; there is no interaction term at first order.
| Field | Value |
|---|---|
| Formula | Position Greek = sum over legs of (signed qty) * multiplier * (per-share Greek) |
| Delta units | Share-equivalents of the underlying |
| Gamma units | Change in position delta per 1.00 move in S |
| Vega units | Dollars per volatility point |
| Theta units | Dollars per calendar day |
| Worked | Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. One 100/105 bull call spread: value 4.4852 - 2.3909 = 2.0944 (209.44 debit). Position delta = 100 * (0.559618 - 0.367719) = 19.19. Gamma = 100 * (0.039448 - 0.037681) = 0.1767. Vega = 19.7240 - 18.8403 = 0.8837 dollars per point. Theta = 100 * (-9.9486 + 8.9113) / 365 = -0.2842 dollars per day. One 90/95/105/110 iron condor at the same inputs: delta -1.74, gamma -2.147, vega -10.74 dollars per point, theta +1.171 dollars per day |
- A spread cancels most of the gamma and vega of its legs while retaining most of the delta. In the worked case the vertical keeps 34 percent of the long leg delta and 4 percent of its gamma.
- Legs in different expirations cannot be summed for vega without weighting. One point of vega in a one-week leg and one point in a six-month leg do not offset, because implied volatilities in different tenors do not move one for one.
- Position theta on the iron condor is positive and position vega negative, which is the same trade viewed twice, not two separate exposures.
How each Greek behaves as spot, time and volatility move
The sign of each cross-effect, stated for a long option. Reverse every sign for a short position. These are the relationships that make a hedge decay without any trade being placed.
| Field | Value |
|---|---|
| Delta vs S | Rises with S for a call, rises toward zero for a put; the rate is gamma |
| Delta vs T | Moves toward 0.5 for an out-of-the-money call as T grows; the rate is charm |
| Delta vs sigma | OTM delta rises and ITM delta falls as sigma rises; the rate is vanna |
| Gamma vs S | Peaks at the money and falls on both wings |
| Gamma vs T | Rises sharply as T falls for an at-the-money option; falls as T falls for a wing |
| Gamma vs sigma | Falls as sigma rises at the money |
| Vega vs T | Rises with sqrt(T) |
| Vega vs S | Peaks near the money, falls on both wings |
| Vega vs sigma | Rises for wings and falls at the money; the rate is volga |
| Theta vs T | Magnitude rises as T falls for an at-the-money option |
| Theta vs sigma | Magnitude rises with sigma |
| Rho vs T | Magnitude rises roughly linearly with T |
- The at-the-money and wing cases move in opposite directions for gamma and vega as expiry approaches. Any statement that begins "gamma rises into expiry" is true only at the money.
- A position can lose money with S, sigma and the calendar all unchanged if the strike has moved relative to the money because the underlying moved earlier. The Greeks are recomputed, not carried forward.
Charm, vanna and volga in closed form
The three second-order cross-derivatives most often quoted on a hedged book, given for completeness alongside their definitions.
| Field | Value |
|---|---|
| Formula | Vanna = -exp(-q*T)*phi(d1)*d2/sigma; Volga = Vega*d1*d2/sigma |
| Vanna | d2V/(dS dsigma). Same for a call and a put at the same strike |
| Volga (vomma) | d2V/dsigma^2. Same for a call and a put; positive when d1 and d2 share a sign |
| Charm (call) | d2V/(dS dt), the drift of delta with time |
| Speed | d3V/dS^3, the drift of gamma with S |
| Worked | Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: d1 = 0.150000, d2 = 0.050000, phi(d1) = 0.394479, Vega = 19.7240 raw. Vanna = -0.394479 * 0.050000 / 0.20 = -0.098620 per share. Volga = 19.7240 * 0.150000 * 0.050000 / 0.20 = 0.739650 raw |
- Volga is zero where d1 and d2 straddle zero, which happens just below the at-the-money strike. Vega is locally flat in sigma there and a vega hedge is at its most stable.
- Vanna is what makes a delta hedge on a skewed book directional in volatility rather than in price. A vanna-heavy position can be delta-flat and still lose on a pure volatility move.
- Charm is why a delta-hedged book drifts out of hedge over a weekend with no price movement at all.
Speed, zomma, colour and ultima in closed form
The third-order sensitivities, given for completeness and because they are what a hedged book's Greeks do when the book is left alone. Each is the derivative of a second-order Greek with respect to one of the three moving inputs.
| Field | Value |
|---|---|
| Formula | Speed = minus (Gamma/S)*(1 + d1/(sigma*sqrt(T))); Zomma = Gamma*(d1*d2 - 1)/sigma; Colour = Gamma*[q + (r-q)*d1/(sigma*sqrt(T)) + (1 - d1*d2)/(2*T)]; Ultima = minus (Vega/sigma^2)*[d1*d2*(1 - d1*d2) + d1^2 + d2^2] |
| Speed | d3V/dS^3, how gamma changes as S moves. Identical for a call and a put |
| Zomma | dGamma/dsigma, how gamma changes as volatility moves |
| Colour | dGamma/dt, how gamma changes as time passes |
| Ultima | d3V/dsigma^3, how volga changes as volatility moves |
| Worked | Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: Gamma = 0.039448, Vega = 19.723967 raw, d1 = 0.150000, d2 = 0.050000. Speed = minus (0.039448/100)*(1 + 0.150000/0.100000) = minus 0.00098620. Zomma = 0.039448*(0.0075 - 1)/0.20 = minus 0.19576037. Colour = 0.039448*(0 + 0.04*0.150000/0.100000 + (1 - 0.0075)/0.50) = 0.039448*2.045 = plus 0.08067102. Ultima = minus (19.723967/0.04)*[0.0075*0.9925 + 0.0225 + 0.0025] = minus 15.99798599. Each was checked against a central finite difference of the corresponding second-order Greek; the largest deviation was 1.2e-07, on ultima |
- Colour is positive at the money, which is the arithmetic behind the statement that gamma rises into expiry. It is negative on a far wing, where gamma falls into expiry, so the statement is strike-specific and not general.
- Speed is negative for a call struck at or below spot and positive above it. It changes sign near the strike where d1 crosses minus sigma*sqrt(T), which is why a gamma hedge behaves asymmetrically for equal moves up and down.
- Zomma is negative at the money and positive on the wings, so raising the volatility input flattens the gamma profile. A short-gamma book therefore looks least dangerous in exactly the volatility regime where it is most dangerous.
- Ultima is large and negative on a wing, minus 396 at the 95 strike against minus 16 at the money in the worked case. Vega hedging a wing with a linear vega estimate is unreliable for anything but a small volatility move.
Charm and veta: the Greeks of the calendar
Charm is the rate at which delta changes with the passage of time and veta the rate at which vega does. Both are the reason a book that traded nothing over a weekend comes back with different exposures than it left with.
| Field | Value |
|---|---|
| Formula | Charm_call = q*exp(-q*T)*N(d1) - exp(-q*T)*phi(d1)*[2*(r-q)*T - d2*sigma*sqrt(T)] / (2*T*sigma*sqrt(T)); Veta = S*exp(-q*T)*phi(d1)*sqrt(T)*[q + (r-q)*d1/(sigma*sqrt(T)) - (1 + d1*d2)/(2*T)] |
| Sign convention | Both stated per unit of calendar time t, so a negative figure means the quantity falls as time passes |
| Call versus put charm | Identical whenever q = 0, because Delta_call minus Delta_put equals exp(-q*T), a constant in time when q = 0 |
| Quoting | Usually divided by 365 and stated per calendar day, like theta |
| Worked | Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: Charm = minus 0.118344 per year, so minus 0.00032423 of delta per calendar day, or minus 0.032423 share-equivalents per contract per day. Over a three-day weekend a delta-neutral hedge on 100 contracts drifts by 100*100*3*0.00032423 = 9.73 share-equivalents with no price movement at all. At K = 95 charm is plus 0.232453 and at K = 105 it is minus 0.480729, so the drift changes sign across the strike. Veta at K = 100 is minus 38.560355 per year in raw units, which is minus 0.10564481 per calendar day raw, or minus 0.00105645 per volatility point per day per share. Against a quoted vega of 0.197240 per point that is 0.5356 percent of the vega exposure lost per day at this tenor |
- Charm is why a wing hedge goes stale faster than an at-the-money hedge. At K = 105 the worked charm is four times the at-the-money figure.
- Charm changes sign across the strike, so a symmetric strangle hedge drifts in one direction on one side and the other direction on the other. A single rehedge band applied to both sides is not symmetric in practice.
- Veta is negative at the money for a long option, which means the vega you are paying for shrinks while you hold it. Comparing vega across two tenors without accounting for that overstates the longer-dated exposure over any holding period.
Dual delta and dual gamma: sensitivity to the strike
The derivatives with respect to K rather than S. They are not hedging quantities, because K is contractual, but they are the exact tool for pricing a strike-shift, for interpolating a value between two listed strikes, and for reading the implied terminal density off a strike curve.
| Field | Value |
|---|---|
| Formula | DualDelta_call = minus exp(-r*T)*N(d2); DualDelta_put = exp(-r*T)*N(-d2); DualGamma = exp(-r*T)*phi(d2)/(K*sigma*sqrt(T)) |
| Relation to the digital | minus DualDelta_call is exactly the value of a cash-or-nothing call paying 1.00 at the same strike |
| Relation to the implied density | DualGamma equals exp(-r*T) times the risk-neutral probability density of the terminal price at K, which is the Breeden-Litzenberger result |
| Butterfly arbitrage test | DualGamma must be non-negative at every strike; a negative value implies a negative implied density and a butterfly arbitrage |
| Worked | Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: DualDelta_call = minus exp(-0.01)*0.519939 = minus 0.514765, and the cash-or-nothing call at the same strike is 0.514765, matching exactly. DualDelta_put = plus 0.475285, and the two sum to minus 0.039480 which equals minus exp(-r*T)*(2*N(d2) - 1). DualGamma = exp(-0.01)*phi(0.050000)/(100*0.100000) = 0.039448. Note that dual gamma at K = 100 happens to equal gamma at K = 100 here to six decimals, which is a coincidence of S = K and not an identity. At K = 95 dual gamma is 0.035484 against a gamma of 0.032024, and at K = 105 it is 0.034177 against 0.037681. All four were checked against central finite differences in K, agreeing to within 2e-10 |
- Dual gamma is the cleanest data-quality check on an option chain there is. Compute the second difference of mid prices across three adjacent strikes; a negative result means the chain cannot be arbitrage-free as quoted.
- Interpolating a value between two listed strikes with dual delta is a first-order estimate and it understates a convex curve. Add half of dual gamma times the strike gap squared and the estimate is usually within a cent.
- The identity between minus dual delta and the digital is why a tight vertical replicates a digital: differencing the call price in K is literally taking the derivative.
Source: Breeden and Litzenberger 1978
Vega is gamma times S squared times sigma times T
For any two options on the same underlying with the same expiration and the same volatility input, vega and gamma are the same number scaled by a strike-independent constant. That makes them the same exposure at one expiration, and it is why they cannot be hedged separately with same-expiry instruments.
| Field | Value |
|---|---|
| Formula | Vega = Gamma * S^2 * sigma * T, identically, for every strike at a given S, sigma and T |
| Derivation | Gamma = exp(-q*T)*phi(d1)/(S*sigma*sqrt(T)) and Vega = S*exp(-q*T)*phi(d1)*sqrt(T). Dividing gives Vega/Gamma = S^2*sigma*T, with phi(d1) cancelling |
| Consequence for hedging | A hedge matrix whose gamma row and vega row are built from one expiration is singular: the two rows are the same equation scaled by S^2*sigma*T |
| How to break it | Use instruments in at least two expirations. The ratio is 500 at T = 0.25 and 1500 at T = 0.75 on the worked inputs |
| Worked | Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. S^2*sigma*T = 10000*0.20*0.25 = 500.0000. At K = 95: Gamma 0.032024 and Vega 16.012096, ratio 500.00000000. At K = 100: 0.039448 and 19.723967, ratio 500.00000000. At K = 105: 0.037681 and 18.840253, ratio 500.00000000. Attempting to solve a three-by-three delta-gamma-vega hedge using two same-expiry options and shares fails with a zero pivot, which is the numerical signature of the same-equation-twice problem |
- This is the reason a calendar spread exists as a structure. Term is the only dimension along which gamma and vega separate.
- A risk report that shows a large vega and a small gamma at a single expiration is showing a unit-conversion artefact, not two independent exposures. Divide vega by S-squared-sigma-T and check.
- The proportionality holds under the model, at one volatility input. Once the surface has a term structure, the two exposures do separate economically even though they remain proportional strike by strike, because a one-point move in a near tenor and a one-point move in a far tenor are not the same event.
The profit and loss attribution identity, worked on a real reprice
A value change over a finite move is exactly reproduced by the Taylor expansion in the three moving inputs, and the residual after each term is what quantifies whether the next order matters. The identity is arithmetic, not an approximation to be trusted on faith, and it either closes or names the term that is missing.
| Field | Value |
|---|---|
| Formula | dV = Delta*dS + 0.5*Gamma*dS^2 + Speed*dS^3/6 + Vega*dsigma + 0.5*Volga*dsigma^2 + Theta*dt + Vanna*dS*dsigma + Charm*dS*dt + Veta*dsigma*dt + residual |
| Order of inclusion matters for reading | The residual after each term is the honest measure of that term's necessity. Adding terms out of order hides which one was doing the work |
| Where the residual goes | Remaining terms are third order and higher in the mixed moves, plus the curvature of theta over the interval |
| Worked | Long one K = 100 call. S 100 to 102, sigma 0.20 to 0.22, 7 calendar days elapse so T goes 0.25 to 0.230822. Value 4.485236409 to 5.855752, actual change plus 1.370515. Delta term plus 1.11923538, residual plus 0.25127974. Add gamma plus 0.07889587, residual plus 0.17238388. Add speed minus 0.00131493, residual plus 0.17369881. Add vega plus 0.39447933, residual minus 0.22078052. Add volga plus 0.00014793, residual minus 0.22092845. Add theta minus 0.19079599, residual minus 0.03013246. Add vanna minus 0.00394479, residual minus 0.02618767. Add charm minus 0.00453921, residual minus 0.02164846. Add veta minus 0.01479027, residual minus 0.00685818, which is 0.50 percent of the move and 0.69 in dollars per contract |
- Delta and gamma together explain 87 percent of this move and leave 0.17 unexplained, which is larger than the entire theta term. Stopping at second order in S is the most common attribution error and it is not small.
- The three calendar cross-terms, charm and veta, together account for 0.019 of the 0.030 residual left after the first-order terms. On a book held over a weekend they are not optional.
- A residual that will not close is diagnostic. If it exceeds a percent of the move on a single vanilla option with no missing inputs, the inputs used for the two repricings differ in something other than what you think moved.
Delta, gamma and vega hedging as a linear system
Neutralising three exposures with three instruments is a three-by-three linear solve. Writing it that way makes two things visible that a leg-by-leg hedge hides: whether the system is solvable at all, and how much of the neutrality is destroyed by rounding to whole contracts.
| Field | Value |
|---|---|
| Formula | A*x = minus g, where row i of A holds the per-contract delta, gamma and vega of each hedge instrument, x is the contract count of each, and g is the book's current delta, gamma and vega |
| Solvability | A is singular whenever all option instruments share one expiration, because Vega = Gamma*S^2*sigma*T makes two rows proportional |
| Shares as an instrument | Contribute delta 1 and nothing else, so the share column is (1, 0, 0) and shares can only ever close the delta row |
| Rounding cost | Residual exposure after rounding equals A times the rounding vector, and it is not small on a small position |
| Worked | Book: short 10 K = 100 T = 0.25 calls and short 5 K = 105 T = 0.50 calls at Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. Net exposures to neutralise: delta minus 783.192428, gamma minus 53.428721, vega minus 33704.7549 raw. Hedge instruments: K = 95 T = 0.25 call, per-contract delta 74.6313, gamma 3.202419, vega 1601.2096, vega-to-gamma ratio 500; K = 100 T = 0.75 call, per-contract delta 60.2494, gamma 2.226923, vega 3340.2830, ratio 1500; and shares. Solution: 14.501015 contracts of the first, 3.139133 of the second, and short 488.1683 shares. Residuals from the exact solve: delta 1.7e-13, gamma 4.4e-15, vega 0.0. Rounded to whole lots of 15, 3 and minus 488, the residuals become delta plus 29.0256, gamma plus 1.2881 and vega plus 334.2378 - so rounding leaves 3.7 percent of the original delta and 2.4 percent of the original gamma unhedged |
- The singularity is the whole reason a hedge needs two expirations. A trader who reaches for a second strike in the same expiration to fix a vega problem has not fixed anything, and the solver will say so with a zero pivot rather than a bad answer.
- Rounding residual scales with the size of the hedge instruments, not with the size of the book. Hedging a small book with high-delta contracts leaves a proportionally larger residual than hedging a large one.
- The solve is instantaneous and valid only at the current inputs. Every Greek in A is itself a function of S, sigma and t, so the system has to be re-formed, not re-used, after any material move.
Theta decomposed into its three terms
Call theta is the sum of three separately interpretable pieces: the decay of convexity, the interest on the discounted strike, and the dividend on the deferred stock. Splitting them explains why call and put theta differ at the same strike, and why a deep in-the-money put can have positive theta.
| Field | Value |
|---|---|
| Formula | Theta_call = minus S*exp(-q*T)*phi(d1)*sigma/(2*sqrt(T)) minus r*K*exp(-r*T)*N(d2) plus q*S*exp(-q*T)*N(d1) |
| Term 1, the volatility term | minus S*exp(-q*T)*phi(d1)*sigma/(2*sqrt(T)). Always negative for a long option, identical for a call and a put, and equal to minus 0.5*sigma^2*S^2*Gamma |
| Term 2, the rate term | minus r*K*exp(-r*T)*N(d2) for a call, plus r*K*exp(-r*T)*N(-d2) for a put. Opposite signs, which is the entire call-put theta difference at q = 0 |
| Term 3, the dividend term | plus q*S*exp(-q*T)*N(d1) for a call, minus q*S*exp(-q*T)*N(-d1) for a put |
| Worked | Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100. Term 1 = minus 100*0.394479*0.20/(2*0.5) = minus 7.889587, and independently minus 0.5*0.04*10000*0.039448 = minus 7.889587, confirming the gamma identity. Term 2 for the call = minus 0.04*100*0.990050*0.519939 = minus 2.059061. Term 3 = 0 since q = 0. Total Theta_call = minus 9.948648, per day minus 0.027257. For the put, term 2 flips to plus 0.04*100*0.990050*0.480061 = plus 1.901139, giving Theta_put = minus 5.988449, per day minus 0.016407. The call decays 66.2 percent faster than the put, and the whole difference is 2.059061 plus 1.901139 = 3.960199, which equals r*K*exp(-r*T) = 3.960199 exactly |
- The call-put theta difference is exactly r*K*exp(-r*T) at any strike, any volatility and any moneyness when q = 0. It is a rate quantity, not a volatility quantity, and it does not depend on sigma at all.
- Term 1 being minus 0.5*sigma^2*S^2*Gamma is the Black-Scholes partial differential equation showing through: the volatility part of theta is the price of the convexity, and nothing else in the formula is.
- For a deep in-the-money put term 1 goes to zero while term 2 stays at plus r*K*exp(-r*T), so theta turns positive. That is the same condition that makes early exercise of the put rational, expressed as a Greek instead of as a comparison.
Pin risk quantified
As expiry approaches an at-the-money delta goes to a step function and gamma to an unbounded spike. Pin risk is the dollar consequence of that: a hedge computed at one price is wrong at a price a few cents away, and the assignment outcome is undetermined until after the close.
| Field | Value |
|---|---|
| Formula | Gamma at the money grows as 1/sqrt(T); the required hedge change over a move dS is 100*Gamma*dS share-equivalents per contract |
| Gamma scaling | At the money Gamma is proportional to 1/(S*sigma*sqrt(T)), so halving the remaining life multiplies it by sqrt(2) |
| Assignment ambiguity | Per contract the exposure is the full multiplier of shares, present or absent, decided after the close |
| Worked | K = 100, r = 0.04, q = 0, sigma = 0.20. At 30 days to expiry with S = 100: delta 0.534270, gamma 0.069320. At 7 days: delta 0.516569, gamma 0.143914. At 1 day: delta 0.506264, gamma 0.381042 - gamma has risen 5.5 times over those 29 days. At 1 day the call delta moves from 0.468170 at S = 99.90 to 0.544263 at S = 100.10, so a 0.20 move changes the required hedge by 7.61 shares per contract and by 76 shares on 10 contracts. Against that, ten short contracts carry a 1,000-share assignment that is undetermined until the instruction cut-off: an unresolved 1,000-share position exposed to a 1.00 overnight gap is 1,000.00 of profit or loss, while the entire gamma exposure being hedged is 10*100*0.381042 = 381.04 of delta per point. The assignment ambiguity is 2.6 times the exposure the hedge is managing |
- The assignment uncertainty is larger than the hedging problem. The hedge error is measured in tens of shares; the assignment error is measured in whole multipliers, and it is binary.
- A short at-the-money option at expiry is the only common position where the correct hedge cannot be computed, because it depends on an exercise decision that has not been made yet.
- Closing the position rather than hedging it removes the uncertainty entirely, and its cost is one bid-ask spread on a contract whose spread is at its widest relative to its price. That trade-off is the whole of pin-risk management and it is arithmetic, not judgement.
Greeks of a box spread and of a synthetic: zero at every order
A box spread has no exposure to the underlying or to volatility at any order, because it is a bond. A synthetic long has a delta of exactly one and no gamma or vega. Both are useful precisely because their Greeks are known constants rather than model outputs.
| Field | Value |
|---|---|
| Formula | Box(K1,K2) = C(K1) - C(K2) + P(K2) - P(K1) = (K2 - K1)*exp(-r*T); Synthetic long at K = C(K) - P(K) = S*exp(-q*T) - K*exp(-r*T) |
| Box delta, gamma, vega | All exactly zero, since the value does not contain S or sigma |
| Box theta | plus r times the box value, because the discount unwinds. Per day, r*Value/365 |
| Box rho | minus T times the box value, the rho of a zero-coupon bond |
| Synthetic long Greeks | Delta exp(-q*T), gamma 0, vega 0, theta minus r*K*exp(-r*T) plus q*S*exp(-q*T), rho K*T*exp(-r*T) |
| Worked | Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. A 100/110 box built from the four model values: 4.485236 minus 1.140397 plus 10.045879 minus 3.490220 = 9.900498 per share, 990.05 per contract, and independently 10*exp(-0.01) = 9.900498. Position delta, gamma and vega all computed to 0.00 to eight decimals. Position theta = 0.04*990.05/365 = plus 0.1085 per day. The synthetic long at K = 100: 4.485236 minus 3.490220 = 0.995017, delta 100*(0.559618 plus 0.440382) = 100.00 share-equivalents exactly, gamma 0.0000, vega 0.0000 |
- A box that shows any gamma or vega in a risk system has a leg mispriced, a wrong strike, or a stale mark. It is the fastest single check on a valuation feed.
- The synthetic long delta of exactly one hundred share-equivalents per contract holds at every sigma and every moneyness. Any deviation is q, not error.
- Box theta is positive and equals interest, which is the only sense in which a box decays. Describing it as a theta position confuses a financing accrual with option decay.