DeskPrep
PYTHONadvanced~80 min

Vol Surface Analysis

Clean a quotes file, build an implied-vol surface and comment on skew and term structure.

The scenario

You're handed this morning's option chain for a single name — a grid of strikes and maturities with market prices. The vol desk wants the implied-volatility surface behind it: back out each option's implied vol, assemble the surface, show the smile and term structure, and flag anything that looks like static arbitrage.

Where this shows up

Building and sanity-checking an implied-vol surface from a chain is a classic vol-desk research take-home at firms of this type.

options market makersvolatility-arbitrage desksquant research

Firms such as Citadel, SIG, Optiver.

DeskPrep is not affiliated with, endorsed by, or sponsored by any named firm. Firm names are used for illustrative, educational purposes only and do not imply that these materials are official assessments of, or are connected with, those firms.

Task brief

README.md
# Implied Vol Surface Construction

**Role relevance:** A classic vol-desk research take-home.
**Estimated time:** 60-90 minutes
**Difficulty:** Advanced
**Format:** Jupyter notebook (.ipynb) + option-chain CSV; requires numpy, pandas, scipy, matplotlib

## What you are given
- `option_chain.csv` - strikes x maturities with market call prices
- `vol_surface_analysis_starter.ipynb` - `bs_call` provided; the implied-vol inversion is left to you

## What you must deliver
1. Implied vol for every option (robust root-finder)
2. The implied-vol surface across strike and maturity
3. Smile/skew plots per maturity and the ATM term structure
4. A static-arbitrage (calendar) check

## Constraints
- Use a bracketed root-finder; handle inversion failures gracefully.

## Submission note
Complete `implied_vol` in the notebook, run all cells, then check the mark scheme.

Your tasks

  1. 01Invert Black-Scholes to recover the implied volatility for every option in the chain (use a robust root-finder).
  2. 02Assemble the implied-vol surface across strike (or moneyness) and maturity.
  3. 03Plot the smile/skew per maturity and the at-the-money term structure.
  4. 04Check for obvious static-arbitrage violations (e.g. non-increasing ATM total variance across maturities).

How you're assessed

Correct implied-vol inversion3 pts
Surface assembled correctly2 pts
Smile and term-structure plots2 pts
Static-arbitrage checks2 pts
Clean, readable code1 pt
Total10 pts

The full points-based mark scheme is included with the pack.

What you'll learn

  • Why implied vol differs from a single Black-Scholes number — the smile and skew.
  • How to invert a pricing model robustly with a bracketed root-finder.
  • The basic no-arbitrage constraints a real vol surface must respect.

Study alongside