Level 5 — MasteryThe Greeks

The Greeks

90 minutes60 marksprintable — key stays hidden on paper

Chapter: Options Greeks & Volatility Difficulty: Level 5 — Mastery (cross-domain: math + quantitative finance + coding) Time limit: 90 minutes Total marks: 60

Instructions: Answer all three questions. Show full derivations. Use N()N(\cdot) for the standard normal CDF and N()=ϕ()N'(\cdot)=\phi(\cdot) for its density. Assume the Black–Scholes world (no dividends, constant rr and σ\sigma) unless stated. Present code in Python/NumPy-style pseudocode where asked.


Question 1 — Deriving and connecting the Greeks (24 marks)

The Black–Scholes call price is C(S,t)=SN(d1)KerτN(d2),d1=ln(S/K)+(r+12σ2)τστ,d2=d1στ,C(S,t)=S\,N(d_1)-Ke^{-r\tau}N(d_2),\qquad d_1=\frac{\ln(S/K)+(r+\tfrac12\sigma^2)\tau}{\sigma\sqrt{\tau}},\quad d_2=d_1-\sigma\sqrt{\tau}, where τ=Tt\tau=T-t is time to expiry.

(a) Prove the identity Sϕ(d1)=Kerτϕ(d2)S\,\phi(d_1)=Ke^{-r\tau}\phi(d_2). (5 marks)

(b) Using (a), derive closed forms for Delta (Δ=CS)\left(\Delta=\dfrac{\partial C}{\partial S}\right), Gamma (Γ=2CS2)\left(\Gamma=\dfrac{\partial^2 C}{\partial S^2}\right) and Vega (V=Cσ)\left(\mathcal V=\dfrac{\partial C}{\partial \sigma}\right). Show that the messy terms from differentiating d1,d2d_1,d_2 cancel. (9 marks)

(c) Establish the algebraic relationship V=S2στΓ,\mathcal V = S^2\,\sigma\,\tau\,\Gamma, and interpret why Gamma and Vega peak near at-the-money for short-dated options but Vega's peak shifts for long-dated options. (6 marks)

(d) Verify the Black–Scholes PDE Θ+rSΔ+12σ2S2Γ=rC\Theta + rS\Delta + \tfrac12\sigma^2 S^2\Gamma = rC is satisfied, and use it to explain the intuitive trade-off "a long option holder pays theta to own gamma." (4 marks)


Question 2 — IV crush, skew and event trading (18 marks)

A stock trades at S0=100S_0=100. A binary earnings event occurs tomorrow. The market prices a one-week ATM straddle at total premium \8.00$.

(a) Using the ATM approximation CATM0.4S0στC_{ATM}\approx 0.4\,S_0\,\sigma\sqrt{\tau} (so straddle 0.8S0στ\approx 0.8\,S_0\sigma\sqrt\tau), infer the implied volatility embedded in the straddle. Take τ=1/52\tau=1/52 year. (5 marks)

(b) The realised historical volatility of the stock is 30%30\% annualised. Compute the event-implied move priced by the straddle as a one-day move (in $ and %), and state the break-even condition for a long straddle buyer. (5 marks)

(c) Immediately after the announcement, IV collapses from your part-(a) value to 35%35\% while the stock gaps up 4%4\%. Estimate the straddle's new value using the same ATM formula (re-strike ATM at the new spot for the estimate), and decide whether the long straddle buyer profited. Explain the role of IV crush vs the realised move. (5 marks)

(d) Explain, in terms of the volatility skew/smile, why the out-of-the-money put on this name would carry a higher IV than the OTM call, and how a trader could exploit expected post-event skew flattening. (3 marks)


Question 3 — Building and managing a delta–gamma hedged book (18 marks)

You run a Python risk engine. Your book holds:

  • Short 100 call contracts (1 contract = 100 shares), each with Δ=0.55\Delta=0.55, Γ=0.04\Gamma=0.04, V=0.12\mathcal V=0.12 (per share, per 1.00 vol point =100%=100\%... use per share values directly).
  • Long the underlying: 3000 shares.

(a) Compute the book's net Delta, Gamma and Vega (in share-equivalent units). Is the book long or short volatility? (6 marks)

(b) You want to be delta-neutral and gamma-neutral simultaneously using the underlying (Δ only) and a traded option with Δ2=0.40, Γ2=0.05\Delta_2=0.40,\ \Gamma_2=0.05. Set up and solve the 2×2 linear system for the number of option-shares xx and underlying shares yy to add. (7 marks)

(c) Write NumPy-style pseudocode for a function hedge(book_greeks, instrument_greeks) that returns the hedge quantities by solving the linear system, and explain what breaks if the instrument's Greek matrix is singular. (5 marks)


Answer keyMark scheme & solutions

Question 1

(a) Identity Sϕ(d1)=Kerτϕ(d2)S\phi(d_1)=Ke^{-r\tau}\phi(d_2) (5 marks)

ϕ(d1)/ϕ(d2)=exp ⁣(12(d12d22))\phi(d_1)/\phi(d_2)=\exp\!\big(-\tfrac12(d_1^2-d_2^2)\big). (1) d12d22=(d1d2)(d1+d2)=στ(d1+d2)d_1^2-d_2^2=(d_1-d_2)(d_1+d_2)=\sigma\sqrt\tau\,(d_1+d_2). (1) Since d1+d2=2d1στd_1+d_2 = 2d_1-\sigma\sqrt\tau and d1στ=ln(S/K)+(r+12σ2)τd_1\sigma\sqrt\tau = \ln(S/K)+(r+\tfrac12\sigma^2)\tau: 12(d12d22)=12στ(2d1στ)=d1στ12σ2τ=ln(S/K)+rτ\tfrac12(d_1^2-d_2^2)=\tfrac12\sigma\sqrt\tau(2d_1-\sigma\sqrt\tau)=d_1\sigma\sqrt\tau-\tfrac12\sigma^2\tau=\ln(S/K)+r\tau. (2) Thus ϕ(d1)/ϕ(d2)=eln(S/K)rτ=KSerτ\phi(d_1)/\phi(d_2)=e^{-\ln(S/K)-r\tau}=\tfrac{K}{S}e^{-r\tau}, giving Sϕ(d1)=Kerτϕ(d2)S\phi(d_1)=Ke^{-r\tau}\phi(d_2). (1)

(b) Delta, Gamma, Vega (9 marks)

Δ\Delta: CS=N(d1)+Sϕ(d1)d1SKerτϕ(d2)d2S\frac{\partial C}{\partial S}=N(d_1)+S\phi(d_1)\frac{\partial d_1}{\partial S}-Ke^{-r\tau}\phi(d_2)\frac{\partial d_2}{\partial S}. Since d1/S=d2/S=1Sστ\partial d_1/\partial S=\partial d_2/\partial S=\frac{1}{S\sigma\sqrt\tau} and by (a) Sϕ(d1)=Kerτϕ(d2)S\phi(d_1)=Ke^{-r\tau}\phi(d_2), the last two terms cancel: Δ=N(d1)\boxed{\Delta=N(d_1)}. (3)

Γ\Gamma: ΔS=ϕ(d1)d1S=ϕ(d1)Sστ\frac{\partial \Delta}{\partial S}=\phi(d_1)\frac{\partial d_1}{\partial S}=\boxed{\dfrac{\phi(d_1)}{S\sigma\sqrt\tau}}. (3)

V\mathcal V: Cσ=Sϕ(d1)d1σKerτϕ(d2)d2σ=Sϕ(d1)(d1σd2σ)\frac{\partial C}{\partial\sigma}=S\phi(d_1)\frac{\partial d_1}{\partial\sigma}-Ke^{-r\tau}\phi(d_2)\frac{\partial d_2}{\partial\sigma}=S\phi(d_1)\big(\tfrac{\partial d_1}{\partial\sigma}-\tfrac{\partial d_2}{\partial\sigma}\big) (using a). Since d1d2=στd_1-d_2=\sigma\sqrt\tau, its σ\sigma-derivative is τ\sqrt\tau: V=Sϕ(d1)τ\boxed{\mathcal V=S\phi(d_1)\sqrt\tau}. (3)

(c) V=S2στΓ\mathcal V=S^2\sigma\tau\Gamma (6 marks)

S2στΓ=S2στϕ(d1)Sστ=Sϕ(d1)τ=VS^2\sigma\tau\Gamma = S^2\sigma\tau\cdot\frac{\phi(d_1)}{S\sigma\sqrt\tau}=S\phi(d_1)\sqrt\tau=\mathcal V. ✓ (3) Interpretation: both scale with ϕ(d1)\phi(d_1), maximal when d10d_1\approx0 (near ATM). Gamma carries an extra 1/τ1/\sqrt\tau (blows up ATM as τ0\tau\to0), while Vega carries τ\sqrt\tau (vanishes at expiry, grows with maturity). Hence Gamma is sharpest for short-dated ATM; Vega's peak in strike drifts because the d1=0d_1=0 strike K=Se(r+σ2/2)τK=S e^{(r+\sigma^2/2)\tau} moves up with τ\tau. (3)

(d) PDE check + intuition (4 marks)

Θ=Sϕ(d1)σ2τrKerτN(d2)\Theta = -\frac{S\phi(d_1)\sigma}{2\sqrt\tau}-rKe^{-r\tau}N(d_2). Substitute with Δ=N(d1)\Delta=N(d_1), Γ=ϕ(d1)/(Sστ)\Gamma=\phi(d_1)/(S\sigma\sqrt\tau): 12σ2S2Γ=12Sσϕ(d1)/τσ...=Sϕ(d1)σ2τ\tfrac12\sigma^2S^2\Gamma=\tfrac12 S\sigma\phi(d_1)/\sqrt\tau\cdot\sigma\cdot... = \frac{S\phi(d_1)\sigma}{2\sqrt\tau}, which cancels the first theta term; rSΔ=rSN(d1)rS\Delta=rSN(d_1); sum =rSN(d1)rKerτN(d2)=rC=rSN(d_1)-rKe^{-r\tau}N(d_2)=rC. ✓ (2) Intuition: rearranged, Θ=rCrSΔ12σ2S2Γ\Theta=rC-rS\Delta-\tfrac12\sigma^2S^2\Gamma. Long gamma (Γ>0\Gamma>0) forces Θ<0\Theta<0: the holder bleeds time value (pays theta) as the "rent" for the convexity/gamma that profits from movement. (2)


Question 2

(a) Implied vol (5 marks) Straddle =0.8S0στ=8.00=0.8 S_0\sigma\sqrt\tau=8.00. (2) σ=80.81001/52=880/52=5210=0.721172.1%\sigma=\frac{8}{0.8\cdot100\cdot\sqrt{1/52}}=\frac{8}{80/\sqrt{52}}=\frac{\sqrt{52}}{10}=0.7211\approx72.1\%. (3)

(b) Event move & break-even (5 marks) One-day priced move (expected absolute move) S0στday\approx S_0\sigma\sqrt{\tau_{day}} with τday=1/252\tau_{day}=1/252: 100\cdot0.7211\cdot\sqrt{1/252}=100\cdot0.7211\cdot0.06300=\4.54\approx4.5%.(3)Equivalentlythestraddlebreakevenis. **(3)** Equivalently the straddle break-even is \pm$8movebyexpiry( move by expiry (\pm8%).Buyerprofitsonlyifrealisedmoveexceedspremium:). Buyer profits only if realised move exceeds premium: |S_T-100|>8$. (2)

(c) IV crush outcome (5 marks) New straddle \approx0.8\cdot104\cdot0.35\cdot\sqrt{1/52}=0.8\cdot104\cdot0.35\cdot0.13868=\4.04.(2)Buyerboughtat8.00,nowworth4.04plusintrinsic:the. **(2)** Buyer bought at 8.00, now worth ≈4.04 plus intrinsic: the 4%( (=$4)gapgivesoneleg) gap gives one leg \approx$4intrinsic.Roughtotalvalueintrinsic+remainingextrinsic.UsingATMrestrikeestimate intrinsic. Rough total value ≈ intrinsic + remaining extrinsic. Using ATM re-strike estimate ≈$4.04timevalue,buttherealisedtime value, but the realised$4move<move <$8paidbuyerlostmoney.(2)Thestockmovedonly4 paid ⇒ **buyer lost money**. **(2)** The stock moved only 4% while 7.2% (~8) was priced; the IV crush from 72% to 35% destroyed extrinsic value. Realised move failed to beat the "vol premium." (1)

(d) Skew (3 marks) Equity index/name puts trade richer (higher IV) — crash-o-phobia / leverage effect: down moves raise volatility, so OTM puts carry a skew premium. (2) A trader expecting post-event skew flattening could sell the expensive OTM put IV (or put spread) and buy relatively cheaper call-wing IV, netting the skew normalisation. (1)


Question 3

(a) Net Greeks (6 marks) Short 100 calls ×100 shares = short 10,000 option-shares.

  • Delta: 10000(0.55)+3000=5500+3000=2500-10000(0.55)+3000 = -5500+3000=\boxed{-2500} (2)
  • Gamma: 10000(0.04)+0=400-10000(0.04)+0 = \boxed{-400} (2)
  • Vega: 10000(0.12)=1200-10000(0.12)= \boxed{-1200}short volatility (negative vega). (2)

(b) Delta+Gamma neutral system (7 marks) Underlying has Γ=0\Gamma=0. Let xx=option-shares of hedge instrument, yy=underlying shares. Gamma: 400+0.05x=0x=8000-400 + 0.05x = 0 \Rightarrow x = 8000. (3) Delta: 2500+0.40x+y=02500+0.40(8000)+y=02500+3200+y=0y=700-2500 + 0.40x + y = 0 \Rightarrow -2500 + 0.40(8000)+y=0 \Rightarrow -2500+3200+y=0 \Rightarrow y=-700. (3) So buy 8000 option-shares (=80 contracts) and short 700 underlying shares. (1)

(c) Pseudocode (5 marks)

import numpy as np
def hedge(book_greeks, instrument_greeks):
    # book_greeks = [delta, gamma]; instrument matrix columns = [opt, underlying]
    A = np.array([[instrument_greeks['opt_delta'], 1.0],
                  [instrument_greeks['opt_gamma'], 0.0]])
    b = -np.array([book_greeks['delta'], book_greeks['gamma']])
    x = np.linalg.solve(A, b)   # [opt_shares, underlying_shares]
    return x

(3) If AA is singular (det = 0) — e.g. the option has zero gamma, or hedging instruments are linearly dependent — np.linalg.solve raises LinAlgError; no simultaneous neutrality exists and you need an independent second instrument (least-squares / different maturity or strike). (2)


[
  {"claim":"Vega = S^2 sigma tau Gamma identity holds symbolically","code":"S,sig,tau=symbols('S sigma tau',positive=True); d1=symbols('d1'); phi=exp(-d1**2/2)/sqrt(2*pi); Gamma=phi/(S*sig*sqrt(tau)); Vega=S*phi*sqrt(tau); result=simplify(Vega-S**2*sig*tau*Gamma)==0"},
  {"claim":"Implied vol from straddle = sqrt(52)/10 approx 0.7211","code":"sig=8/(0.8*100*sqrt(Rational(1,52))); result=abs(float(sig)-0.72111)<1e-3"},
  {"claim":"Gamma-neutral option shares x=8000 and delta hedge y=-700","code":"x=400/0.05; y=-(-2500+0.40*x); result=(x==8000) and (y==-700)"},
  {"claim":"Net book Greeks: delta=-2500, gamma=-400, vega=-1200","code":"d=-10000*0.55+3000; g=-10000*0.04; v=-10000*0.12; result=(d==-2500) and (g==-400) and (v==-1200)"},
  {"claim":"Post-event straddle estimate approx 4.04","code":"val=0.8*104*0.35*sqrt(Rational(1,52)); result=abs(float(val)-4.04)<0.05"}
]