Free lesson · Volatility
Strike convexity and a butterfly consistency check
Open interactive lessonPractice calculationsExplore labs
Start with the idea
A long butterfly has a nonnegative terminal payoff when strikes are equally spaced.
Symbols, units & horizon
- C(k): same-expiry European call price per unit at strike k
- K: middle strike
- h>0: equal strike spacing in currency per unit
- B: butterfly price per underlying unit
- inequality assumes frictionless comparable contracts
When and why to use this
Validate option data and model interpolations before computing Greeks or implied densities.
A long butterfly has a nonnegative terminal payoff when strikes are equally spaced.
Buy one lower-strike call, sell two middle-strike calls and buy one upper-strike call, all European with identical underlying, expiry, settlement and multiplier. Its terminal payoff forms a tent around the middle strike and never becomes negative.
Therefore a negative frictionless price is inconsistent with that payoff. In real quotes, evaluate lower and upper calls at asks and the two sold middle calls at bids. A smooth-looking implied-volatility curve can still produce inconsistent option prices.
Strike convexity and a butterfly consistency check
- Below the lowest strike every payoff is zero.
- Between low and middle strikes the first call increases payoff; between middle and high strikes the two shorts reduce it back to zero.
- Above the high strike the linear terms cancel exactly, so nonnegative payoff requires nonnegative price under no-arbitrage assumptions.
Call prices at strikes 90,100,110 are 13,8,4. Butterfly price=13−16+4=1. If middle price were 9, the price would be −1, requiring investigation of executable quotes.
Apply it in a strategy
- Freeze inputs at the stated decision time and record their units.
- Validate option data and model interpolations before computing Greeks or implied densities.
- Recompute the example, then change the material assumption and explain the difference.
Research deliverable
Strike convexity and a butterfly consistency check: produce the worked calculation, a timestamped input record and a written decision addressing this limitation: A three-strike check is necessary only locally; passing it does not prove a whole surface is arbitrage-free.
These are synthetic mechanics examples, not historical performance or paper replications. Module evidence and research boundaries record the 12 September 2026 review.
Python implementation
Self-contained teaching example. Python 3.10+; dependencies and input conventions are shown in the code and notation. Run in your own Python environment.
# Python 3.10+; standard library and NumPy only.
# Synthetic teaching inputs; conventions and units are defined in the notation above.
def butterfly_price(low_call,middle_call,high_call):
if min(low_call,middle_call,high_call)<0: raise ValueError('Nonnegative option prices required')
return low_call-2*middle_call+high_call
assert butterfly_price(13,8,4)==1
assert butterfly_price(13,9,4)==-1
print(butterfly_price(13,8,4))Continue learning
Volatility: Measurement, Surfaces & Variance Risk — all lessons- Realized variance starts with squared returns
- EWMA as a causal variance baseline
- A multi-horizon realized-variance forecast
- Implied volatility is a model inversion
- Term structure through total and forward variance
- Strike convexity and a butterfly consistency check
- Vega requires a volatility-unit convention
- Variance exposure and the difference from arbitrage
Quantitative finance and development glossary · Python resources and libraries · Research sources and limitations