Strategies II: Volatility, Relative Value, Macro and the Bank Desks · Strategies
1Harvesting the Variance Risk Premium
At the end of 84% of months since 1990 the VIX index, the market’s price of the next month’s S&P 500 volatility, was higher than the volatility that followed: on average 19.5 against 15.4. Selling that price and delivering the realised volatility has been one of the most reliable trades in finance. Its losses come the other way, all at once. At the end of February 2020 the VIX stood at 40.1; the next month’s realised volatility was 94.5. On this chapter’s synthetic market a short-variance book earns a Sharpe ratio of 1.57 until its worst month, which then costs 7.7 of its monthly standard deviations: 22% of capital at a 10% volatility target, and more than the capital at 60%. This chapter is about the implementations of short volatility and about sizing them for the month that matters. The build is two components: firm.synthvol, the synthetic option market that Part I runs on, and firm.shortvol.
1.1 The premium and why it exists
The variance risk premium (Book 5, chapter 14) is the difference between the price of variance, the rate of a variance swap or the square of an index like the VIX, and the variance that is then realised. Carr and Wu measured it directly: they synthesised variance swap rates from option prices on five stock indexes and 35 stocks, and took the difference with realised variance as the premium. It is paid because variance is highest when investors are poorest: a long-variance position pays in crashes, and investors pay to hold it, as they pay for insurance.
The real record, from Cboe’s data (Figure 1.1): over 440 month-ends from January 1990 to August 2026 the VIX averaged 19.5% and the next month’s realised volatility of the S&P 500 15.4%; the VIX was higher 84% of the time, by 4.1 points on average; its square exceeded realised variance by 31% on average. The six months when it fell furthest short tell the other side: February 2020 (VIX 40.1, realised 94.5), September 2008 (39.4 and 82.3), August 2008 (20.6 and 54.3), March 2025 (22.3 and 47.7), July 2011 and June 2002.
s2_fetch_cboe.1.2 Implementations: variance, options, overwriting
firm.synthvol (Listing 1.1) simulates twenty years of an index and thirty member stocks: a common factor with stochastic variance around 16% (mean reversion of four a year, a leverage correlation of ), negative jumps once a year on average, and three planted crashes of 25%, 20% and 30% over ten days each. The truth sets the surface: the index’s at-the-money implied variance is the expected variance over the option’s life times 1.3, and the smile falls with strike. Realised volatility over the twenty years is 19.0%, crashes included, and the average one-month implied volatility 18.3%.
firm.shortvol runs five monthly implementations on the index, each rolled every 21 trading days:
| implementation, 239 months | Sharpe ratio | skewness | worst month (sd) | months up |
|---|---|---|---|---|
| short variance swap | 0.69 | 79% | ||
| delta-hedged short straddle | 1.24 | 77% | ||
| covered calls, 2% out of the money | 0.40 | 69% | ||
| short puts, 5% out of the money | 0.08 | 92% | ||
| short variance sized by | 0.09 | 79% | ||
| the index itself | 0.26 | 62% |
Every implementation has negative skewness, and the shape matches the premium’s source: the short put wins in 92% of months and loses ten standard deviations in one. Sizing short variance by the inverse of its strike (more when volatility is cheap) makes it worse: the planted crashes start from calm markets, when the book is largest. The synthetic crashes are harsher than recent history: on Cboe’s indices from February 2007 to September 2026, PutWrite returned 7.2% a year at 13.8% volatility (a Sharpe ratio of 0.57 without a risk-free rate) and BuyWrite 6.0% at 14.3% (0.48), against 9.0% at 19.7% (0.53) for the S&P 500 price index, which omits dividends. PutWrite lost 27.6% from September to November 2008 and 19.8% in February and March 2020; BuyWrite 28.5% and 21.3%.
1.3 Delta-hedged option returns
Bakshi and Kapadia used exactly this: in S&P 500 options, a delta-hedged long option underperformed zero, less so away from the money, more when volatility was high, even after accounting for jump fears. The seller’s side, a short at-the-money straddle hedged daily at the surface’s current volatility (Listing 1.2), earns 0.53% of the index a month on the synthetic market, about an eighth of the straddle’s premium of 4.2%, with a Sharpe ratio of 1.24, the best of the five, because the hedge removes the index’s own direction and leaves the gap between implied and realised volatility.
1.4 Blow-ups and how to size for them
Short volatility is a sizing problem. Figure 1.2 scales the short-variance book to three volatility targets. Its Sharpe ratio before the worst month (the first crash, in year 5.9) is 1.57 at any size; the worst month costs 7.7 of its monthly standard deviations at any size:
| target volatility | 5% | 10% | 20% | 40% | 60% |
|---|---|---|---|---|---|
| Sharpe ratio before the worst month | 1.57 | 1.57 | 1.57 | 1.57 | 1.57 |
| worst month, share of capital | |||||
| capital survives | yes | yes | yes | yes | no |
The record before the crash says nothing about the size of the crash: a manager who judged the risk from five years of monthly returns saw a Sharpe ratio above 1.5 and a worst month of a fraction of the one to come. The size that survives is set by the stress, not the volatility: a book that must not lose more than a quarter of its capital in a month can run the synthetic short-variance book at about 10% volatility, whatever its history.
s2_vrp.paths.1.5 Strategy files
1.6 Tutorial: picking up nickels
Goal. Build the synthetic option market, run five short-volatility implementations, and size the short-variance book through its planted crashes; compare with the real variance premium and option-writing indices. End state: the tables and the two figures.
The market: stochastic variance with leverage, jumps and crashes; members with specific returns.
def simulate_vol(cfg: VolConfig | None = None) -> dict: cfg = cfg or VolConfig() rng = np.random.default_rng(cfg.seed) T, N, dt = cfg.days, cfg.members, 1 / YEAR v = np.empty(T) r = np.empty(T) starts = {s: move for s, move in cfg.crashes} drift_left, vt = 0.0, cfg.theta for t in range(T): if t in starts: vt = max(vt, cfg.crash_var) drift_left = cfg.crash_days crash_move = starts[t] z1, z2 = rng.standard_normal(2) zv = cfg.rho * z1 + math.sqrt(1 - cfg.rho**2) * z2 jump = rng.normal(cfg.jump_mean, cfg.jump_sd) if rng.random() < cfg.jump_rate * dt else 0.0 r[t] = (cfg.mu - 0.5 * vt) * dt + math.sqrt(vt * dt) * z1 + jump if drift_left > 0: r[t] += crash_move / cfg.crash_days drift_left -= 1 v[t] = vt vt = max(vt + cfg.kappa * (cfg.theta - vt) * dt + cfg.xi * math.sqrt(vt * dt) * zv, 1e-4) spec = cfg.spec_vol * np.exp(0.3 * rng.standard_normal(N)) R = r[:, None] + spec[None, :] * math.sqrt(dt) * rng.standard_normal((T, N)) - 0.5 * spec**2 * dt return {"r": r, "v": v, "R": R, "spec": spec, "crashes": [(s, s + cfg.crash_days) for s, _ in cfg.crashes]}Listing 1.1. Twenty years of the synthetic index and its members. code/firm/synthvol/firm_synthvol.py Two implementations: the variance swap and the delta-hedged straddle.
def short_variance(r, v, cfg, tenor: int = 21): tau = tenor / YEAR out = [] for s in periods(len(r), tenor): strike = float(atm_iv(v[s], cfg, tau)) ** 2 realised = float((r[s + 1:s + 1 + tenor] ** 2).sum() / tau) out.append((strike - realised) * tau) return np.array(out) def hedged_straddle(r, v, cfg, tenor: int = 21): out = [] for s in periods(len(r), tenor): S, K = 1.0, 1.0 vol0 = float(atm_iv(v[s], cfg, tenor / YEAR)) premium = float(bs_price(S, K, tenor / YEAR, vol0, "C") + bs_price(S, K, tenor / YEAR, vol0, "P")) hedge_pnl = 0.0 for d in range(tenor): tau = (tenor - d) / YEAR vol = float(atm_iv(v[s + d], cfg, tau)) delta = float(bs_delta(S, K, tau, vol, "C") + bs_delta(S, K, tau, vol, "P")) S_new = S * np.exp(r[s + 1 + d]) hedge_pnl += delta * (S_new - S) # the short straddle's hedge is long its delta S = S_new out.append(premium - abs(S - K) + hedge_pnl) return np.array(out)Listing 1.2. Short variance and a delta-hedged short straddle. code/firm/shortvol/firm_shortvol.py - Run
s2_fetch_cboe.pyonce for the real statistics, thenimplementations(),leverage_table()andfig_vrp.py.
What to change next. Hedge the straddle on bands instead of daily; add a crash that starts from high volatility and see whether inverse-strike sizing helps; buy a far out-of-the-money put against the short variance and measure what it costs and saves.
1.7 Build: the synthetic option market and short volatility
Purpose. firm.synthvol: a deterministic index and member option market with stochastic variance, jumps, crashes and surfaces carrying a variance premium and a correlation premium, for Part I. firm.shortvol: short-volatility implementations and leverage.
Interface. VolConfig(…), simulate_vol(cfg), expected_var, atm_iv, smile_iv, bs_price, bs_delta; periods, short_variance, hedged_straddle, overwrite, put_write, lever.
Rules. Implied volatilities from the truth known at the time; options priced at the surface; P&L per unit of index at inception.
Acceptance tests. code/firm/synthvol/tests/ and code/firm/shortvol/tests/: Black–Scholes by hand, expected variance and the premium, a planted crash; variance and straddle P&L on a flat path, a wipe-out.
Stretch. Surfaces with term-structure premia; transaction costs on hedges; members’ options.
Sources and further reading
- P. Carr and L. Wu, “Variance risk premiums”, Review of Financial Studies 22(3), 2009.
- G. Bakshi and N. Kapadia, “Delta-hedged gains and the negative market volatility risk premium”, Review of Financial Studies 16(2), 2003.
- Cboe Global Markets, daily histories of the VIX, S&P 500, PutWrite and BuyWrite indices.
1.8 Exercises
Exercise 1.1 ★
An at-the-money straddle is worth about of the index. What is it worth for a month (21 trading days) at 20% volatility?
Exercise 1.2 ★
Expected variance is and implied variance is 30% higher. What are the implied variance and volatility?
Exercise 1.3 ★
Why does the short put win more often than the short variance swap but have the lower Sharpe ratio?
Exercise 1.4 ★★
A book at 10% annual volatility loses 7.7 monthly standard deviations. What share of capital does it lose?
Exercise 1.5 ★★
Why does sizing short variance by the inverse of its strike make it worse on the synthetic market? When would it help?
Exercise 1.6 ★★
Why does the VIX exceed realised volatility most of the time, and why is its average excess not the premium’s full measure?
Exercise 1.7 ★★★
Coding. Run leverage_table((0.3, 0.5)). At which target volatility between them does the worst month take the whole capital?
Exercise 1.8 ★★★
Find the flaw. “Our short-volatility fund has a Sharpe ratio of 2 over five years and its worst month was ; at 15% volatility the risk is modest.”
1.9 Problem: Picking Up Nickels
Problem 1.1
Weekend problem — short volatility, sized
The chapter’s synthetic option market, Cboe’s data and the public record.
Part I — The premium.
- Define a short-volatility strategy and option overwriting.
- What did Carr and Wu measure, and how?
- Give the VIX’s record against realised volatility, 1990–2026.
- Name the months when realised volatility exceeded the VIX by most.
Part II — Implementations.
- Describe the synthetic market and how its surface is set.
- Give the five implementations’ Sharpe ratios and skewness.
- Why is every skewness negative?
- What did the PutWrite and BuyWrite indices earn, and how did they fare in 2008 and 2020?
Part III — Hedged options.
- Define a delta-hedged option return.
- What did Bakshi and Kapadia find?
- What does the synthetic straddle earn, and why is its Sharpe ratio the highest?
- What would a hedge on bands change?
Part IV — The verdict.
- State the named result: the short-variance book’s Sharpe ratio before its worst month and its loss in that month, by leverage.
- Why does the record before the crash not measure the crash?
- How should a short-volatility book be sized?
- Why did inverse-strike sizing fail here?
- How would you backtest a short-volatility strategy honestly?
- Which strategy file wins most often, and which has the best Sharpe ratio?
- How does this chapter relate to Book 8, chapter 26’s volatility targeting?
- In one sentence: what does a short-volatility trader sell?
1.10 Interview questions
Interview question 1.1 ★ researcher
What is the variance risk premium, and why does it exist?
Interview question 1.2 ★★ trader
You are short a delta-hedged straddle and the index gaps down 5% overnight. What happened to your P&L, and what do you do?
Interview question 1.3 ★★ risk
How would you set limits on a short-volatility book?
Interview question 1.4 ★★ researcher
Compare selling variance swaps, straddles and out-of-the-money puts as ways to earn the premium.
Interview question 1.5 ★★ developer
What does a daily delta-hedging engine for an option book need?
Interview question 1.6 ★★★ researcher
A delta-hedged option with gamma on an underlying at is hedged continuously. Show that its P&L over a short interval is about , with realised and implied volatility, and explain what this implies for its sign.