Quantitative Finance · Book 5 · Derivatives

Derivatives and Volatility

Derivatives and Volatility · Derivatives

14Variance Swaps and Volatility Derivatives

A variance swap has no strike in price. Its only strike is a volatility, squared, and it pays the difference between that number and the variance the index actually realises. It looks like a bet that needs a model of volatility. It needs none. Its hedge is a fixed strip of every out-of-the-money option on the index, each weighted by one over its strike squared, plus a position in the index that is rebalanced every day. The volatility index is that strip’s price, quoted as a volatility. This chapter builds the replication, the index formula and its errors, and the convexity that separates a swap on volatility from a swap on variance. It then covers futures and options on the volatility index, and the jumps and truncated strikes that break the replication.

14.1 Variance swaps and their replication

Definition 14.1 (Variance swap)

A variance swap is a forward contract on realised variance. At expiry TT the long side receives Nvar(σR2−K2)N_{\mathrm{var}}\bigl(\sigma_R^2-K^2\bigr), where σR2=252n∑i=1nln⁡2(Sti/Sti−1)\sigma_R^2=\frac{252}{n}\sum_{i=1}^n\ln^2(S_{t_i}/S_{t_{i-1}}) is the annualised realised variance of daily closes, with no mean subtracted, and KK is the strike, quoted as a volatility.

Definition 14.2 (Variance notional)

The variance notional NvarN_{\mathrm{var}} is the payment per unit of variance (per “variance point” when variance is quoted in percent squared).

Definition 14.3 (Vega notional)

The vega notional of a variance swap is Nvega=2KNvarN_{\mathrm{vega}}=2KN_{\mathrm{var}}: the approximate payment for one volatility point of realised volatility above the strike, near the strike. Trades are quoted in vega notional and settled in variance notional.

The payoff is convex in realised volatility. With a vega notional of 100 000 per point and a strike of 22.1%, the variance notional is 100 000/(2×22.1)=2 262100\,000/(2\times22.1)=2\,262 per variance point. A realised volatility of 30% pays 2 262×(302−22.12)=931 0002\,262\times(30^2-22.1^2)=931\,000 rather than the 790 000 a linear payoff would give, and 15% costs 596 000 rather than 710 000. The long side gains more than proportionally when volatility spikes. That convexity is why a variance swap is replicable and a volatility swap is not.

Proposition 14.4 (Replication)

If the index moves continuously, with any volatility process, then

∫0Tσt2 dt=2∫0TdStSt−2ln⁡STS0,\int_0^T\sigma_t^2\,dt=2\int_0^T\frac{dS_t}{S_t}-2\ln\frac{S_T}{S_0},

and, with FF the forward and zero rates,

−2ln⁡STF=−2 ST−FF+∫0F2K2(K−ST)+ dK+∫F∞2K2(ST−K)+ dK.-2\ln\frac{S_T}{F}=-2\,\frac{S_T-F}F+\int_0^F\frac2{K^2}(K-S_T)^+\,dK+\int_F^\infty\frac2{K^2}(S_T-K)^+\,dK.

Realised variance is therefore the payoff of a static strip of out-of-the-money options with weights 2/K22/K^2, a forward, and a dynamic position of 2/St2/S_t in the index. The fair strike is

K2T=2∫0FP(K)K2 dK+2∫F∞C(K)K2 dK.K^2T=2\int_0^F\frac{P(K)}{K^2}\,dK+2\int_F^\infty\frac{C(K)}{K^2}\,dK.

Proof. Itô’s formula (One Quant Book 4, chapter 3) for ln⁡S\ln S gives dln⁡St=dSt/St−12σt2 dtd\ln S_t=dS_t/S_t-\frac12\sigma_t^2\,dt; integrate and rearrange. For the second identity, any twice differentiable payoff satisfies f(S)=f(F)+f′(F)(S−F)+∫0Ff′′(K)(K−S)+dK+∫F∞f′′(K)(S−K)+dKf(S)=f(F)+f'(F)(S-F)+\int_0^Ff^{\prime\prime}(K)(K-S)^+dK+\int_F^\infty f^{\prime\prime}(K)(S-K)^+dK (Taylor’s formula with integral remainder), and f(S)=−2ln⁡(S/F)f(S)=-2\ln(S/F) has f′′(K)=2/K2f^{\prime\prime}(K)=2/K^2. The dynamic leg 2∫dS/S2\int dS/S has zero price, and so has the forward, which leaves the strip. ∎

The proof never used a model for σt\sigma_t. That is the product’s appeal: the strike is read from option prices alone. The dealer who sells the swap buys the strip once, trades the index every day and is hedged, whatever volatility does, as long as the index does not jump. The strip’s weights also say what the strike is made of (Figure 14.1). On chapter 9’s surface the one-year strike is 22.1%, against an at-the-money volatility of 19.2%. Puts carry 72% of the variance, strikes below 80 carry 24%, and strikes above 120 carry 1.5%. A variance swap on a skewed index is largely a position in its downside.

Left: each strike’s share of the one-year variance-swap strike on chapter 9’s surface: the puts below the forward (dashed) carry 72%. Right: the log payoff and its replication by nine strikes. The strip is piecewise linear, exact at the strikes up to the spacing error, and linear beyond the last strikes, where it stops replicating. Data: the chapter’s code.
Figure 14.1. Left: each strike’s share of the one-year variance-swap strike on chapter 9’s surface: the puts below the forward (dashed) carry 72%. Right: the log payoff and its replication by nine strikes. The strip is piecewise linear, exact at the strikes up to the spacing error, and linear beyond the last strikes, where it stops replicating. Data: the chapter’s code.

A variance swap is marked to market by splitting it in time. After a time tt with realised variance σR,t2\sigma_{R,t}^2, the expected final variance is the time-weighted average (t σR,t2+(T−t)Kt,T2)/T\bigl(t\,\sigma_{R,t}^2+(T-t)K_{t,T}^2\bigr)/T of the realised part and the fair strike of the remaining part. The value is NvarN_{\mathrm{var}} times the discounted difference from K2K^2. A one-year swap struck at 22.1% that has realised 25% over six months, with six-month variance-swap volatility at 20.1%, expects 0.5×252+0.5×20.12=514.50.5\times25^2+0.5\times20.1^2=514.5 variance points against a strike of 488.4. On a variance notional of 2 262 it is worth 59 000.

14.2 The log contract and the volatility-index formula

Definition 14.5 (Log contract)

The log contract pays ln⁡(ST/F)\ln(S_T/F) at TT. Its price, −12σVS2T-\frac12\sigma_{\mathrm{VS}}^2T with zero rates, is the variance-swap strike in another unit. It is not listed, and is traded as its option strip.

The volatility index turns the strip into a published number. On a listed option chain the integral becomes a sum over strikes, and the index formula is

σ2=2T∑iΔKiKi2 eRTQ(Ki)−1T(FK0−1)2,\sigma^2=\frac2T\sum_i\frac{\Delta K_i}{K_i^2}\,e^{RT}Q(K_i)-\frac1T\Bigl(\frac F{K_0}-1\Bigr)^2,

with Q(Ki)Q(K_i) the mid-quote of the out-of-the-money option at KiK_i, K0K_0 the strike at or just below the forward, and ΔKi\Delta K_i half the distance between neighbouring strikes. The last term corrects for using the put and call at K0K_0 rather than at FF. Between K0K_0 and FF the strip holds an in-the-money call as an out-of-the-money put, and the term removes the difference to second order. Two expiries that bracket thirty days are computed and interpolated to a constant thirty days.

As of September 2026 — The volatility index’s methodology

Cboe’s methodology document for the index (version 6.0, last revised 26 February 2026) specifies the formula above. It uses S&P 500 options at mid-quote, keeps only options with a non-zero bid, brackets thirty days with two expiries, standard or weekly, and states the formula’s basis as the 1999 research note of Demeterfi, Derman, Kamal and Zou. A filtering algorithm guards against quotes that widen suddenly. Futures and options on the index settle on a special opening quotation that follows slightly different rules from the spot index.

How good is the sum? It has two errors: the spacing between strikes, and the range the strikes cover, which in the index is cut wherever bids vanish. On chapter 9’s thirty-day smile, whose exact strip volatility is 16.30%, the index-style number errs as in Table 14.1. Wide spacing biases it up, since a coarse sum over a convex function overstates it. A short range biases it down, since the missing wings would have added variance. A strip that stops at 95 misses 1.6 to 1.8 points. The two errors can cancel by accident, as the strip from 90 in steps of 2.5 shows.

lowest strike (highest =200−=200-lowest)ΔK=0.5\Delta K=0.5ΔK=1\Delta K=1ΔK=2.5\Delta K=2.5
70+0.01+0.01+0.06+0.06+0.38+0.38
80−0.02-0.02+0.03+0.03+0.36+0.36
85−0.13-0.13−0.07-0.07+0.28+0.28
90−0.48-0.48−0.40-0.40+0.01+0.01
95−1.78-1.78−1.61-1.61−0.92-0.92
Table 14.1. Error of the index-style thirty-day volatility against the exact strip (16.30%), in volatility points, by strike range and spacing, on chapter 9’s surface (spot 100). Data: the tutorial.

14.3 Volatility swaps and convexity

Definition 14.6 (Volatility swap)

A volatility swap pays N(σR−Kvol)N\bigl(\sigma_R-K_{\mathrm{vol}}\bigr): realised volatility, not variance, against a strike.

The payoff is linear in volatility, which is what many clients want to trade, but volatility is the square root of variance and no static strip replicates a square root of a path integral. Its fair strike is E[σR]\E[\sigma_R], and Jensen’s inequality puts it below the variance-swap strike E[σR2]\sqrt{\E[\sigma_R^2]}. A second-order expansion of the square root around the mean variance VV gives

Kvol≈V−Var⁡(σR2)8V3/2,K_{\mathrm{vol}}\approx\sqrt V-\frac{\Var(\sigma_R^2)}{8V^{3/2}},

so the convexity adjustment is proportional to the variance of realised variance: it needs a model for the volatility of volatility. It is the convexity adjustment of One Quant Book 2, chapter 8, applied to a square root.

In Heston’s model it is exact. The Laplace transform of integrated variance, E[e−s∫0Tvt dt]\E[e^{-s\int_0^Tv_t\,dt}], has the closed form of an affine model. The identity x=12π∫0∞(1−e−sx)s−3/2ds\sqrt x=\frac1{2\sqrt\pi}\int_0^\infty(1-e^{-sx})s^{-3/2}ds turns it into E[⋅]\E[\sqrt{\cdot}] by one integral. The build does exactly that, and its tests check it against a simulation.

Example 14.7 (Volatility or variance)

Under the Heston model calibrated to chapter 9’s surface in chapter 10, the one-year variance-swap strike is 21.4% and the volatility-swap strike 19.8%: a convexity adjustment of 1.62 volatility points. The adjustment is 0.72 point at one month, 1.34 at three months and 1.61 at six months, then falls to 1.35 at two years and 1.10 at three (Figure 14.2). At short expiries there is little time for variance to vary. At long expiries mean reversion averages its variation away. The market’s own one-year strip gives 22.1%, 0.7 point above Heston’s, because the calibrated model does not reproduce the surface’s wings, which carry weight in the strip.

Variance-swap and volatility-swap strikes by expiry under the Heston model calibrated to chapter 9’s surface, and the market strip’s variance-swap strike. The gap between the first two is the convexity adjustment, largest near one year. Data: the tutorial.
Figure 14.2. Variance-swap and volatility-swap strikes by expiry under the Heston model calibrated to chapter 9’s surface, and the market strip’s variance-swap strike. The gap between the first two is the convexity adjustment, largest near one year. Data: the tutorial.

Variance can be weighted and restricted, and two variants are traded. Each is replicated by the same argument with a different function of the price.

Definition 14.8 (Gamma swap)

A gamma swap pays realised variance weighted by the index level relative to its initial value, 1T∫0T(St/S0) σt2 dt\frac1T\int_0^T(S_t/S_0)\,\sigma_t^2\,dt, against a strike. It is replicated by the payoff 2S0(Sln⁡(S/S0)−S+S0)\frac2{S_0}(S\ln(S/S_0)-S+S_0), whose second derivative is 2/(S0K)2/(S_0K): its strip weights puts less than the variance swap’s.

Definition 14.9 (Corridor variance swap)

A corridor variance swap accrues realised variance only on days when the index is inside a range [L,U][L,U]. Its strip keeps the weights 2/K22/K^2 on strikes in [L,U][L,U] only.

The gamma swap’s variance does not explode when the index falls, since each day’s variance is multiplied by St/S0S_t/S_0, which is small after a crash. That makes it a much less dangerous product to be short than the variance swap. On chapter 9’s surface its one-year strike is 20.8%, between the at-the-money 19.2% and the variance swap’s 22.1%. A down-corridor (U=S0U=S_0) isolates the variance paid in falling markets, the part of the variance swap that the skew makes expensive.

14.4 Futures and options on the volatility index

Futures on the volatility index have traded since March 2004 and options since February 2006. Chapter 12 showed that the index is, idealised, the square root of the average forward variance over thirty days, and that its future is E[VIXT]\E[\mathrm{VIX}_T]. The future therefore lies below the forward variance-swap volatility E[VIXT2]\sqrt{\E[\mathrm{VIX}_T^2]} by a convexity gap. The gap is the same Jensen effect as the volatility swap’s, applied to thirty days of variance seen from TT.

Example 14.10 (The futures curve under Heston)

Under the calibrated Heston model the index is 17.1 today. The three-month future is 18.1 against a forward thirty-day variance-swap volatility of 20.4, the six-month 19.3 against 22.2, and the one-year 20.5 against 23.7 (Figure 14.3, left). The model computes the futures exactly: VIXT2=vˉ+(vT−vˉ)1−e−κΔκΔ\mathrm{VIX}_T^2=\bar v+(v_T-\bar v)\frac{1-e^{-\kappa\Delta}}{\kappa\Delta} is affine in vTv_T, whose Laplace transform is known, so the same square-root identity applies. A desk that reads the forward volatility off the futures curve without the gap overstates the futures’ fair level by one to three points.

Definition 14.11 (VIX option)

A VIX option is a European option on the volatility index at its expiry. It is cash-settled, and its natural underlying is the VIX future of the same expiry, so it is quoted with Black’s formula on the future.

A VIX option is an option on the forward-variance curve, so its smile measures the distribution of future volatility. The market’s VIX smile slopes upward: calls on high volatility are expensive. Baldeaux and Badran point to this observed upward skew. Under the calibrated Heston model the three-month smile slopes the other way, from 110% at 80% of the future to 94% at 175% (Figure 14.3, right). The square-root process has a thin right tail. Rough Bergomi’s VIX smile is nearly flat (chapter 12). Fitting the VIX smile’s slope with the same model as the index smile is the joint calibration problem of chapter 12.

The volatility index under the calibrated Heston model. Left: futures lie below the forward variance-swap volatility by a convexity gap that grows with expiry. Right: the three-month smile of options on the index slopes down, the opposite of the market’s upward slope. Data: the tutorial.
Figure 14.3. The volatility index under the calibrated Heston model. Left: futures lie below the forward variance-swap volatility by a convexity gap that grows with expiry. Right: the three-month smile of options on the index slopes down, the opposite of the market’s upward slope. Data: the tutorial.

Definition 14.12 (Variance risk premium)

The variance risk premium is the difference between the variance-swap strike and the expected realised variance under the real-world measure, K2−EP[σR2]K^2-\E^{\mathbb P}[\sigma_R^2] (some authors use the opposite sign). It is what the seller of variance earns on average for bearing the risk of variance spikes.

Where the premium is positive, a seller of variance swaps earns it on average and pays it back, with interest, in crashes, when realised variance exceeds the strike many times over. Its size, sign and variation across underlyings are empirical questions. Carr and Wu (2009) is the classic study of them with synthetic variance swaps, and One Quant Book 6 measures them. The distinction matters for this chapter: the replication argument gives the strike under the pricing measure, and says nothing about whether selling it pays.

14.5 Skew, jumps and the limits of replication

The replication holds if the index moves continuously. Over a day with log-return rr, the hedge (the strip plus the daily position 2/S2/S) earns 2(er−1−r)2(e^r-1-r) while the swap’s leg pays r2r^2. The difference is

2(er−1−r)−r2=r33+r412+⋯ ,2(e^r-1-r)-r^2=\frac{r^3}3+\frac{r^4}{12}+\cdots,

negligible for ordinary days and not for crashes. A fall of 20% in log costs the hedged seller 0.04−0.0375=0.00250.04-0.0375=0.0025 of variance per unit of notional on that one day. In a model with jumps the fair strike is therefore not the strip: E[σR2]T=Kstrip2T−E[∑(2(er−1−r)−r2)]\E[\sigma_R^2]T=K_{\mathrm{strip}}^2T-\E\bigl[\sum(2(e^r-1-r)-r^2)\bigr]. With negative jumps the correction is positive, and the strip underprices the variance swap.

Example 14.13 (The strip under Merton’s jumps)

With chapter 13’s Merton model (3.16 jumps a year of mean log-size −5.8%-5.8\% and dispersion 4.6%), each jump leaves the hedge short by −0.000182-0.000182 of variance on average (E[J3]/3=−0.000188\E[J^3]/3=-0.000188 to leading order). The fair strike exceeds the strip’s by 0.00058 of variance a year, or 0.18 volatility point. On 100 000 three-month paths, a seller who strikes at the strip and hedges daily loses 0.17 point on average (0.18 up to simulation error), with a standard deviation of 0.40 point and a one-in-a-hundred loss of 1.9 points. In a diffusion of the same variance the same hedge has a standard deviation of 0.014 point (Figure 14.4).

The replication’s residual. A short three-month variance swap struck at the strip and hedged with the strip and a daily position of 2/S in the index, on 100 000 paths: the probability of losing more than a given number of volatility points. In a diffusion no path loses more than a tenth of a point; with jumps each crash day leaves a loss, and one path in a hundred loses 1.9 points. Data: the tutorial.
Figure 14.4. The replication’s residual. A short three-month variance swap struck at the strip and hedged with the strip and a daily position of 2/S2/S in the index, on 100 000 paths: the probability of losing more than a given number of volatility points. In a diffusion no path loses more than a tenth of a point; with jumps each crash day leaves a loss, and one path in a hundred loses 1.9 points. Data: the tutorial.

Three other limits matter in practice.

  • The strikes run out. The strip exists only where options are quoted. In a crash the index falls through the lowest strike, beyond which the hedge is linear while the payoff keeps growing. The truncation error in Table 14.1 then turns from a pricing bias into a loss. Martin records that the large price jumps of 2008 and 2009 disrupted volatility-derivatives markets and caused the single-name variance-swap market to dry up completely.
  • Caps. A variance swap can carry a cap on realised variance, set at a multiple of the strike. The cap is a short call on variance, priced with a model of volatility of volatility, not with the strip.
  • Discrete sampling and dividends. Daily closes, the absence of a mean in the estimator, and the dividend-adjusted forward all move the fair strike by small, computable amounts that the build’s mark-to-market must use consistently.

14.6 Tutorial: replicate a variance swap

Goal. Price a variance swap from a strip on a synthetic surface, compute the index-style number and its errors, value volatility swaps and index futures exactly under Heston, and simulate the hedge with and without jumps. End state: the four figures, the table and the numbers of the weekend problem.

  1. The index formula, with K0K_0, the averaged option at K0K_0 and the forward correction:

    def index_variance(strikes, calls, puts, fwd: float, t: float, rate: float = 0.0) -> float:
        """The volatility-index formula on one expiry: (2/T) sum dK_i / K_i^2 e^(RT) Q(K_i) - (1/T)(F/K0 - 1)^2,
        with Q the put below K0, the call above, their average at K0 (K0 = the strike at or below F), and dK_i
        half the distance between the neighbouring strikes (one-sided at the ends)."""
        k = np.asarray(strikes, float)
        c, p = np.asarray(calls, float), np.asarray(puts, float)
        i0 = int(np.searchsorted(k, fwd, side="right")) - 1
        q = np.where(np.arange(len(k)) < i0, p, c)
        q[i0] = 0.5 * (c[i0] + p[i0])
        dk = np.empty_like(k)
        dk[1:-1] = 0.5 * (k[2:] - k[:-2])
        dk[0], dk[-1] = k[1] - k[0], k[-1] - k[-2]
        return float(2 / t * np.sum(dk / k ** 2 * math.exp(rate * t) * q) - (fwd / k[i0] - 1) ** 2 / t)
    Listing 14.1. The volatility-index formula on one expiry. code/firm/varswap/firm_varswap.py
  2. The jump error of the log-contract hedge, one line that decides the hedge’s residual:

    def jump_error(j):
        """Per-return shortfall of the log-contract hedge against the variance swap's leg: the hedge earns
        2 (e^r - 1 - r) for a log-return r and the swap pays r^2; for small r the difference is about r^3 / 3."""
        j = np.asarray(j, float)
        return 2 * (np.exp(j) - 1 - j) - j * j
    Listing 14.2. Shortfall of the hedge on a return rr. code/firm/varswap/firm_varswap.py
  3. Heston’s volatility swap by the Laplace transform of integrated variance and the square-root identity:

    def _sqrt_expectation(laplace, scale: float) -> float:
        """E[sqrt(X)] = (1 / (2 sqrt(pi))) int_0^inf (1 - E[e^(-s X)]) s^(-3/2) ds, on s = scale * e^y."""
        y = np.linspace(-25.0, 25.0, 4001)
        s = scale * np.exp(y)
        integrand = (1 - laplace(s)) * s ** -0.5          # s^(-3/2) ds = s^(-1/2) dy
        return float(np.trapezoid(integrand, y) / (2 * math.sqrt(math.pi)))
    
    
    def integrated_cir_laplace(s, v0: float, kappa: float, vbar: float, eta: float, t: float):
        """E[exp(-s int_0^T v dt)] for the square-root process (the affine 'bond price' formula)."""
        s = np.asarray(s, float)
        g = np.sqrt(kappa * kappa + 2 * eta * eta * s)
        e = np.exp(-g * t)                                # written with e^(-g t) to stay finite for large s
        den = (g + kappa) * (1 - e) + 2 * g * e
        b = 2 * s * (1 - e) / den
        a = 2 * kappa * vbar / eta ** 2 * (np.log(2 * g / den) + 0.5 * (kappa - g) * t)
        return np.exp(a - b * v0)
    
    
    def heston_vol_swap(v0: float, kappa: float, vbar: float, eta: float, t: float) -> float:
        """E[sqrt((1/T) int_0^T v dt)], the fair volatility-swap strike in Heston."""
        mean = heston_mean_variance(v0, kappa, vbar, t)
        return _sqrt_expectation(lambda s: integrated_cir_laplace(s / t, v0, kappa, vbar, eta, t), 1 / mean)
    Listing 14.3. Exact volatility-swap strike under Heston. code/firm/varswap/firm_varswap.py
  4. Run dv_varswap.index_errors(), heston_terms(), vix_curve(), hedge_pnl() and fig_varswap.py.

What to change next. Replace the square-root identity by the second-order approximation and measure its error at one year; cut the strip where the model’s put price falls below 0.05 (a “zero bid”) and recompute the thirty-day number; price a down-corridor variance swap with U=100U=100.

14.7 Build: variance and volatility swaps

Purpose. The miniature firm’s pricer and mark-to-market for variance swaps, and the volatility-swap and index-future values that its volatility desk quotes against.

Interface. index_variance(strikes, calls, puts, fwd, t, rate); strip_from_vols; log_payoff_strip; realised_variance(prices); variance_notional(vega_notional, strike_vol); mark_to_market(var_notional, strike_vol, realised_var, t_elapsed, fair_var_remaining, t_remaining, df); jump_error(r); vol_swap_approx; heston_mean_variance, heston_vol_swap, heston_vix_future.

Rules. Strikes are quoted in volatility and settled in variance; the realised-variance estimator is the contract’s (daily closes, 252 days, no mean); the strip uses the forward, not the spot; every model value is checked against a simulation in the tests.

Acceptance tests. code/firm/varswap/tests/: a flat smile’s index number is its volatility, with the forward between strikes; the strip reproduces the log payoff inside its range; the conventions (notional conversion, mark-to-market); the jump error behaves like r3/3r^3/3; Heston’s Laplace transforms equal one at zero, the volatility swap tends to the variance swap as the volatility of volatility vanishes and matches a simulation, and index futures lie below the forward.

Stretch. Capped variance swaps under Heston; corridor and gamma swaps from a listed chain; the special opening quotation’s rules for settlement.

Sources and further reading

  • K. Demeterfi, E. Derman, M. Kamal and J. Zou, “More than you ever wanted to know about volatility swaps”, Goldman Sachs Quantitative Strategies Research Notes (March 1999).
  • Cboe Global Markets, “Cboe Volatility Index Methodology”, version 6.0 (2026).
  • P. Carr and R. Lee, “Volatility derivatives”, Annual Review of Financial Economics 1 (2009) 319–339.
  • P. Carr and L. Wu, “Variance risk premiums”, Review of Financial Studies 22(3) (2009) 1311–1341.
  • I. Martin, “Simple variance swaps”, NBER Working Paper 16884 (2011).
  • J. Baldeaux and A. Badran, “Consistent modeling of VIX and equity derivatives using a 3/2 plus jumps model”, arXiv 1203.5903 (2012).

14.8 Exercises

Exercise 14.1 ★

A client wants 50 000 of vega notional on a variance swap struck at 20%. What is the variance notional, and what does the swap pay if realised volatility is 25%?

Solution

Solution of Exercise 14.1.

Nvar=50 000/(2×20)=1 250N_{\mathrm{var}}=50\,000/(2\times20)=1\,250 per variance point; at 25% the swap pays 1 250×(625−400)=281 2501\,250\times(625-400)=281\,250.

Exercise 14.2 ★

Why does a variance swap need a daily trade in the index as well as the option strip?

Solution

Solution of Exercise 14.2.

The strip pays −2ln⁡(ST/F)-2\ln(S_T/F), which equals realised variance only after adding 2∫dS/S2\int dS/S: the gains of holding 2/St2/S_t in the index. Without the daily trade the position is a log contract, whose payoff depends on where the index ends, not on the path.

Exercise 14.3 ★

Show that the gamma swap’s replicating payoff 2S0(Sln⁡(S/S0)−S+S0)\frac2{S_0}(S\ln(S/S_0)-S+S_0) has second derivative 2/(S0S)2/(S_0S), and explain why its strike is below the variance swap’s on a downside-skewed index.

Solution

Solution of Exercise 14.3.

f′(S)=2S0ln⁡(S/S0)f'(S)=\frac2{S_0}\ln(S/S_0) and f′′(S)=2S0Sf^{\prime\prime}(S)=\frac2{S_0S}. Its strip weights are 2/(S0K)2/(S_0K) against 2/K22/K^2 for the variance swap: relative to the variance swap it weights each strike by K/S0K/S_0, less below the spot and more above. On a downside-skewed index the expensive puts count for less, so the strike is lower.

Exercise 14.4 ★★

After nine months a one-year variance swap struck at 22% has realised 18%, and the three-month variance-swap volatility is 16%. Value it per unit of variance notional (variance in percent squared, zero rates).

Solution

Solution of Exercise 14.4.

Expected final variance 0.75×182+0.25×162=243+64=3070.75\times18^2+0.25\times16^2=243+64=307 against 222=48422^2=484: the value is −177-177 per unit of variance notional.

Exercise 14.5 ★★

Use the second-order approximation to estimate the volatility-swap strike when the variance-swap strike is 20% and the standard deviation of realised variance is 0.02.

Solution

Solution of Exercise 14.5.

V=0.04V=0.04, Var⁡=0.0004\Var=0.0004: 0.2−0.0004/(8×0.041.5)=0.2−0.00625=19.4%0.2-0.0004/(8\times0.04^{1.5})=0.2-0.00625=19.4\%.

Exercise 14.6 ★★

Why does the convexity adjustment in Example 14.7 peak near one year?

Solution

Solution of Exercise 14.6.

The adjustment is proportional to the variance of realised variance divided by its level. At short expiries variance has no time to move; at long expiries mean reversion (κ=2.05\kappa=2.05, a half-life of about four months) averages its moves away. The variance of the average is largest when the expiry is a few half-lives long.

Exercise 14.7 ★★★

Coding. Compute the thirty-day index-style number with strikes every 1 from 80 to 120 and then drop the strikes whose out-of-the-money option is worth less than 0.05. How much does the number fall?

Solution

Solution of Exercise 14.7.

The full strip gives 16.32%; the options worth at least 0.05 run from 87 to 106, and the number falls to 16.10%, 0.22 point lower: the missing wings carried variance.

Exercise 14.8 ★★★

Find the flaw. “We sell variance swaps at the strip’s price and hold the strip and the daily delta; the book is fully hedged, so the premium we charge over the strip is pure profit.”

Solution

Solution of Exercise 14.8.

The hedge is exact only for continuous paths within the strip’s range. Each jump leaves a loss of about ∣r∣3/3|r|^3/3 of variance, and a crash through the lowest strike leaves the payoff growing while the hedge stops. The premium over the strip is the price of that jump and truncation risk (0.18 point on average under chapter 13’s Merton model, with a one-in-a-hundred loss of 1.9 points over three months), not profit.

14.9 Problem: Vol or Variance

Problem 14.1

Weekend problem — the price of a square root

A client asks for one-year quotes on a variance swap and on a volatility swap on the index of chapter 9’s surface. The desk has the surface, the Heston calibration of chapter 10, and the build.

Part I — The variance swap.

  1. Give the one-year variance-swap strike from the strip and the at-the-money volatility.
  2. Which strikes carry the strike? Give the puts’ share.
  3. For a vega notional of 100 000, give the variance notional and the payoff at 30% realised volatility.
  4. What would the thirty-day index-style number lose with a strip that stops at 95?
  5. Give the one-year gamma-swap strike.

Part II — The volatility swap under Heston.

  1. Give Heston’s one-year variance-swap strike, and explain the gap to the strip’s.
  2. Give the one-year volatility-swap strike.
  3. Give the convexity adjustment at one month, one year and three years.
  4. Which Heston parameter drives the adjustment, and in which direction?
  5. Why is the volatility swap not replicable with a static strip?

Part III — The index and its options.

  1. Give the index level and the three-month and one-year futures under Heston.
  2. Give the convexity gap at three months.
  3. Describe the three-month VIX smile under Heston.
  4. How would the desk hedge a volatility swap?
  5. What premium over the strip would you charge a client who buys the variance swap, if the index can jump?

Part IV — Judgement.

  1. The client says the volatility swap “should be priced at the variance-swap strike, since both are volatility”. Answer in two sentences.
  2. Which model assumption does the convexity adjustment depend on most?
  3. What reserve would you hold on a short volatility swap hedged with variance swaps?
  4. State the named result: the convexity adjustment between the one-year variance-swap and volatility-swap strikes on the chapter’s surface under Heston dynamics.
  5. In one sentence: why is variance, not volatility, the traded quantity?
Solution

Solution of Problem 14.1.

1. 22.1% and 19.2%. 2. The puts: 72% of the variance; strikes below 80 alone 24%. 3. 2 262 per variance point; 931 000. 4. 1.6 to 1.8 points, depending on the spacing. 5. 20.8%. 6. 21.4%: the calibrated model misses the surface’s wings, which the strip weights heavily. 7. 19.8%. 8. 0.72, 1.62 and 1.10 points. 9. The volatility of variance η\eta: 1.24 points at η−0.1\eta-0.1, 2.01 at η+0.1\eta+0.1. 10. Its payoff is the square root of realised variance, a non-linear function of the path’s quadratic variation; only functions of the terminal price are static strips, and variance is the one path functional that reduces to one. 11. 17.1, 18.1 and 20.5. 12. 20.4−18.1=2.320.4-18.1=2.3 points. 13. It slopes down, from 110% at 80% of the future to 94% at 175%. 14. With variance swaps, dynamically: a volatility swap’s sensitivity to variance is about 1/(2σ)1/(2\sigma), so the desk holds variance swaps in that ratio and adjusts it as volatility moves, a hedge whose cost is the volatility of volatility the adjustment prices. 15. At least the jump correction, 0.18 point under chapter 13’s jump model, plus a reserve for crashes through the strip. 16. Volatility is the square root of variance, and the mean of a square root is below the square root of the mean. The difference, here 1.6 points, is the price of the volatility of volatility. 17. The distribution of realised variance, above all the volatility of volatility η\eta. 18. A reserve for the model: the spread of the adjustment across plausible η\eta (about 0.4 point either way for ±0.1\pm0.1) and the cost of re-hedging in a volatility spike. 19. 1.62 volatility points: 21.4% against 19.8% at one year. 20. Variance is replicated by a static strip and a delta; volatility needs a model.

14.10 Interview questions

Interview question 14.1 ★ trader, researcher

How do you replicate a variance swap?

Solution

Solution of Interview question 14.1.

Itô’s formula gives ∫σ2dt=2∫dS/S−2ln⁡(ST/S0)\int\sigma^2dt=2\int dS/S-2\ln(S_T/S_0). Hold a static strip of out-of-the-money options with weights 2/K22/K^2 (the log payoff) and trade 2/St2/S_t in the underlying daily; the strike is the strip’s price per unit of time.

What the interviewer is looking for: the log contract, the 1/K21/K^2 weights and the dynamic leg.

Interview question 14.2 ★ trader

Why is the variance-swap strike above the at-the-money volatility on an index?

Solution

Solution of Interview question 14.2.

The strip weights options by 1/K21/K^2, so low strikes count more, and on an index the low strikes trade at higher implied volatilities. The strike is an average of variance over the whole smile, tilted to the downside.

What the interviewer is looking for: the weights and the skew.

Interview question 14.3 ★★ researcher

Is a volatility swap’s fair strike above or below the variance swap’s? By how much, roughly?

Solution

Solution of Interview question 14.3.

Below, by Jensen’s inequality. To second order the gap is Var⁡(σR2)/(8V3/2)\Var(\sigma_R^2)/(8V^{3/2}): about 1.6 points at one year under a Heston model calibrated to a typical index surface, more with a higher volatility of volatility.

What the interviewer is looking for: the sign, the expansion, and that it needs a model.

Interview question 14.4 ★★ developer

Implement the volatility-index formula for one expiry. What edge cases matter?

Solution

Solution of Interview question 14.4.

Find the forward from put–call parity, K0K_0 at or below it, take puts below and calls above (both averaged at K0K_0), weight by ΔK/K2\Delta K/K^2 with one-sided differences at the ends, subtract (F/K0−1)2/T(F/K_0-1)^2/T, interpolate two expiries to thirty days. Edge cases: the forward exactly on a strike; zero bids and where to cut the wings; uneven strike spacing; stale quotes; expiry times in minutes.

What the interviewer is looking for: the formula, the K0K_0 correction and the data cases.

Interview question 14.5 ★★ risk, trader

What happens to a dealer short a variance swap, hedged with the strip, when the index gaps down 20%?

Solution

Solution of Interview question 14.5.

The swap’s leg pays r2=0.04r^2=0.04 of variance for the day while the hedge earns 2(er−1−r)=0.03752(e^r-1-r)=0.0375: a loss of about ∣r∣3/3|r|^3/3. If the gap goes below the strip’s lowest strike the hedge also stops tracking. Losses scale with notional and there is no dynamic fix; the protection is pricing the jump risk, caps, and buying deep puts.

What the interviewer is looking for: the cubic term, the strip’s range, and caps.

Interview question 14.6 ★★★ trader, risk

Why must a VIX future be priced below the forward variance-swap volatility, and how would you trade the gap?

Solution

Solution of Interview question 14.6.

The future is E[VIXT]\E[\mathrm{VIX}_T] and the forward variance-swap volatility is E[VIXT2]\sqrt{\E[\mathrm{VIX}_T^2]}; Jensen’s inequality makes the first smaller, by an amount set by the volatility of the index. To trade it: buy the forward variance (a calendar spread of variance swaps) against a short future, which is long the volatility of the index, and hedge its vega with index options; the position profits if realised volatility of the index exceeds what the gap prices.

What the interviewer is looking for: Jensen, and what the spread is exposed to.

Terms defined in this chapter

See all 2333 terms in the glossary