Module 5 of 5 · SVI 304

No-Arbitrage in Practice: The Arb Scanner

19 min readAnchor: SVQ arbitrage detector (butterfly, calendar, put-call parity, box spreads)
Objectives
  • State the three static no-arbitrage constraints on an option surface — vertical (call) monotonicity and slope bounds, butterfly convexity, and calendar monotonicity in total variance — and explain what trade enforces each.
  • Use put-call parity and the box spread to detect a mispriced surface without any model of volatility, and identify which leg is rich or cheap.
  • Read a SVQ arb-scanner flag as either genuine evidence of edge or, more often, a microstructure artifact to be filtered.

Everything you have learned so far in this course assumed the option prices on your screen were reasonable. This chapter is about the moments when they are not — and, more importantly, about how you tell the difference between a price that is genuinely wrong and a price that merely looks wrong because you are reading it badly.

Here is the central idea, and it is one of the most powerful in all of derivatives. You do not need a model to know that some option prices are impossible. You do not need Black-Scholes, you do not need an estimate of volatility, you do not need a view on the underlying at all. You only need the principle that two portfolios with identical payoffs in every future state of the world must cost the same today. If they do not, you can buy the cheap one, sell the rich one, and lock in a profit with no risk and no forecast. That is static arbitrage: static, because you set the trade once and never adjust it, unlike the dynamic hedging that justifies an option's fair value. Static arbitrage is a far stronger statement. It says the surface is internally inconsistent, and it can be enforced by a portfolio you assemble and then walk away from.

So let us build the constraints from the ground up, because each one corresponds to a real structure you already know.

Start with vertical structure — options at different strikes, same expiry. A call option's price must fall as the strike rises: the right to buy at ninety is worth at least as much as the right to buy at one hundred, because the lower strike is better in every state. So the call price is monotonically decreasing in strike. More than that, the slope is bounded. If you go long the ninety call and short the one-hundred call — a call spread — you have paid for a payoff that is never negative and never exceeds the ten-point width. So that spread's cost must sit between zero and ten, discounted. Violate the lower bound and the ninety call is cheaper than the one-hundred call, which is free money; violate the upper bound and you have been paid more than the maximum possible payoff. Both are arbitrage.

Now the deeper one: convexity in strike, the butterfly condition. Take three equally spaced strikes — say ninety-five, one hundred, one hundred and five. Buy one call at each wing, sell two at the center. That is a butterfly, and its payoff is a small tent that is zero everywhere except a gentle peak at the middle strike, and crucially it is never negative. A portfolio that can never pay you less than zero cannot cost less than zero. Therefore the call price, viewed as a function of strike, must be convex — it must curve upward. The formal statement is that the second difference of call prices across strikes is non-negative. When the SVQ scanner flags a butterfly violation, it has found three strikes where that curvature went the wrong way: the middle option is too expensive relative to its neighbours, and the tent could be bought for a credit.

The same logic runs across time instead of strike. Hold the strike fixed and look at two expiries. A longer-dated option contains all the optionality of the shorter one and then some, so — once you correct for forwards and discounting — it cannot be worth less. The precise and model-free way to say this is in total variance: implied variance multiplied by time to expiry must be non-decreasing as you go further out. If the one-month and three-month options imply a total variance that falls with maturity, a calendar spread captures the inconsistency. That is the calendar condition.

These three — vertical, butterfly, calendar — are the constraints within the call surface. The fourth family ties calls to puts, and it needs no inequalities at all because it is an exact identity. Put-call parity says that a call minus a put at the same strike and expiry equals the discounted difference between the forward and the strike — equivalently, spot minus the discounted strike. Rearranged, it means a synthetic long position built from options must cost the same as the real forward. Break parity and you can trade the synthetic against the actual underlying for a riskless spread. The box spread is parity's tidiest expression: a bull call spread plus a bear put spread across the same two strikes produces a payoff that is always exactly the strike width, a guaranteed fixed amount. A box is therefore a synthetic zero-coupon bond. Its price is pinned. If the four legs together cost less than the discounted width, you buy the box and earn a riskless rate above the market; if more, you sell it. There is nothing probabilistic here — the payoff is a constant.

Now the part that separates a student from a practitioner. The scanner will flag violations constantly, and the overwhelming majority are not tradable. A butterfly that prints negative on stale mid prices, a parity break that vanishes the instant you cross the bid-ask spread on four legs, a calendar inversion driven by a dividend the feed has not adjusted for — these are artifacts, not evidence. The genuine arbitrage is the one that survives transaction costs, survives the spread on every leg simultaneously, and persists long enough to actually fill. So treat a raw flag exactly as you have learned to treat any number in this institute: not as a conclusion, but as a hypothesis demanding that you ask whether it is real signal or merely noise dressed up as a price.

In Saqrid

The SVQ arbitrage detector, run on a liquid index surface, applies all four checks at once: butterfly convexity strike-by-strike, calendar monotonicity in total variance, put-call parity per strike, and box-spread pricing across strike pairs. When a single far-out-of-the-money strike has a stale quote, it lights up a butterfly flag, because one bad print breaks the second-difference test against its two neighbours. The detector's bid-ask filter re-runs every check against executable prices rather than mids, and under it most flags evaporate. The handful that survive — typically a box mispriced against the funding curve — are the ones worth a human's attention. That collapse from dozens of mid-price flags to one or two executable ones is the lesson: the scanner finds inconsistencies, but only the cost-aware filter finds edge.