Markets: A Rigorous Course

9A.5 Max pain

Core about 15 min

Motivation

"Max pain" is the strike at which option holders, in aggregate, would receive the least at expiry. A popular claim is that the expiry settlement gravitates to it because option writers, said to be large and informed, push the price there. The definition is precise and its mathematics is simple; the claim is a hypothesis.

Definition

With call OI cKc_K and put OI pKp_K (units) at strikes K1<⋯<KnK_1<\dots<K_n, the aggregate payout to holders if the settlement is xx is

W(x)=∑j=1n[cKj(x−Kj)++pKj(Kj−x)+].(9A.4)W(x)=\sum_{j=1}^{n}\Big[c_{K_j}(x-K_j)^+ + p_{K_j}(K_j-x)^+\Big]. \tag{9A.4}

Max pain is x∗=arg⁡min⁡xW(x)x^\ast=\arg\min_x W(x). Since holders paid premium at trade time, the writers' aggregate P&L at expiry is (premium received, a constant) − W(x)-\,W(x), so x∗x^\ast also maximises writers' aggregate expiry P&L.

9A.5.1Max pain as an OI balance#

Proposition 9A.3max pain is an OI balance point

WW is convex and piecewise linear with kinks at the strikes. Its right and left derivatives are

W′(x+)=∑Kj≤xcKj−∑Kj>xpKj,W′(x−)=∑Kj<xcKj−∑Kj≥xpKj.(9A.5)W'(x^+)=\sum_{K_j\le x}c_{K_j}-\sum_{K_j>x}p_{K_j},\qquad W'(x^-)=\sum_{K_j<x}c_{K_j}-\sum_{K_j\ge x}p_{K_j}. \tag{9A.5}

Hence x∗x^\ast minimises WW iff W′(x∗−)≤0≤W′(x∗+)W'(x^{\ast-})\le0\le W'(x^{\ast+}): cumulative call OI strictly below x∗x^\ast does not exceed cumulative put OI at or above it, and cumulative call OI at or below x∗x^\ast is at least cumulative put OI above it. A minimiser can always be taken at a strike.

Proof

Each term (x−K)+(x-K)^+ and (K−x)+(K-x)^+ is convex and piecewise linear with one kink at KK; nonnegative combinations preserve both properties. The right derivative of (x−K)+(x-K)^+ is 1{x≥K}\mathbf 1\{x\ge K\} and of (K−x)+(K-x)^+ is −1{x<K}-\mathbf 1\{x<K\}; summing gives W′(x+)W'(x^+), and the left derivatives 1{x>K}\mathbf 1\{x>K\}, −1{x≤K}-\mathbf 1\{x\le K\} give W′(x−)W'(x^-). A convex function attains its minimum exactly where 0∈[W′(x−),W′(x+)]0\in[W'(x^-),W'(x^+)]. Between consecutive strikes WW is linear, so its minimum over [Kj,Kj+1][K_j,K_{j+1}] is at an endpoint; if the total call OI and put OI are positive, W→∞W\to\infty as ∣x∣→∞|x|\to\infty, so the global minimum is at some strike.∎

Corollarymax pain is a weighted median when OI is balanced

If cK=pK=mKc_K=p_K=m_K at every strike, the condition becomes ∑K≤x∗mK≥∑K>x∗mK\sum_{K\le x^\ast}m_K\ge\sum_{K>x^\ast}m_K and ∑K<x∗mK≤∑K≥x∗mK\sum_{K<x^\ast}m_K\le\sum_{K\ge x^\ast}m_K: x∗x^\ast is a median of the OI distribution across strikes.

9A.5.2A lagging summary of positions#

The corollary explains most of max pain's apparent accuracy. OI is written where the index has been trading, so its median sits near recent spot. Max pain is a lagging summary of where positions were opened. In the 31-expiry sample of 9A.16 the day-before max pain was on average 55 points (median 37) from the day-before close.

Two further consequences, both used in Problem 9A.2:

  • Put OI at the lowest listed strike and call OI at the highest never enter WW at any candidate strike inside the range, so max pain ignores far-OTM hedges entirely.
  • WW is flat near its minimum. On 26 Oct 2026, WW for the 27 Oct Nifty expiry was ₹2,351.9 crore at 22,750, ₹2,357.2 crore at 22,700 and ₹2,388.9 crore at 22,800 (NSE F&O bhavcopy, 26 Oct 2026). A 50-point move away from max pain changed holders' aggregate payout by 0.2–1.6%. The incentive argument (writers push the price) must explain why anyone would spend money to move an index for a gain that small relative to the cost of moving it (M05 · 5.5).

9A.5.3Testing the max-pain hypothesis#

The hypothesis and its test "Expiry settles near max pain" is testable: compare ∣XT−xT−1∗∣|X_T-x^\ast_{T-1}| with ∣XT−ST−1∣|X_T-S_{T-1}|, where XTX_T is the settlement and ST−1S_{T-1} the previous close. Max pain has predictive content only if it beats the previous close, which is the forecast of a martingale. 9A.16 runs this on 31 expiries.

See it live: F&O stock pages on OI Charts (https://oicharts.com/stocks/SYMBOL) show the current max-pain strike. Note it alongside the spot price the day before a monthly expiry and record both against the settlement: that is the test above, run by hand.

Create a free account

Reading is open to everyone. An account keeps your progress, answers, notes and code drafts, and gives you the study plan, the journals and the simulator. Running code needs an account approved for it.