{
 "site": "options.wiki",
 "origin": "https://options.wiki",
 "description": "A complete, machine-readable reference for listed equity and index options: explicit payoff, maximum profit, maximum loss and breakeven formulas for every standard structure, Greeks in closed form with verified worked values, volatility and probability arithmetic, exercise and assignment mechanics, contract conventions, and Regulation T margin treatment.",
 "reviewed": "2026-08-27",
 "license": "CC BY 4.0",
 "changes": "https://options.wiki/changes.json",
 "feed": "https://options.wiki/feed.xml",
 "sections": [
  {
   "slug": "strategies",
   "title": "Strategies",
   "lede": "Every standard structure with exact maximum profit, maximum loss, and breakeven formulas.",
   "intro": "Formulas are stated per share. Multiply by the contract multiplier (100 for standard listed contracts) and the number of contracts for position-level figures. Breakevens are at expiration and ignore financing, dividends, and early assignment.",
   "tables": [
    {
     "title": "Single-leg positions",
     "intro": "The four primitives. Every multi-leg structure below decomposes into these.",
     "columns": [
      "Position",
      "Construction",
      "Max profit",
      "Max loss",
      "Breakeven at expiry"
     ],
     "rows": [
      [
       "Long call",
       "Buy 1 call at K for P",
       "Unlimited",
       "P",
       "K + P"
      ],
      [
       "Long put",
       "Buy 1 put at K for P",
       "K - P",
       "P",
       "K - P"
      ],
      [
       "Short call (naked)",
       "Sell 1 call at K for P",
       "P",
       "Unlimited",
       "K + P"
      ],
      [
       "Short put (naked)",
       "Sell 1 put at K for P",
       "P",
       "K - P",
       "K - P"
      ]
     ]
    },
    {
     "title": "Stock-plus-option overlays",
     "columns": [
      "Position",
      "Construction",
      "Max profit",
      "Max loss",
      "Breakeven at expiry"
     ],
     "rows": [
      [
       "Covered call",
       "Long stock at S0, sell 1 call at K for P",
       "K - S0 + P",
       "S0 - P",
       "S0 - P"
      ],
      [
       "Protective put",
       "Long stock at S0, buy 1 put at K for P",
       "Unlimited",
       "S0 - K + P",
       "S0 + P"
      ],
      [
       "Collar",
       "Long stock at S0, buy put K1, sell call K2 for net N (credit positive)",
       "K2 - S0 + N",
       "S0 - K1 - N",
       "S0 - N"
      ],
      [
       "Cash-secured put",
       "Sell put at K for P, hold K in cash",
       "P",
       "K - P",
       "K - P"
      ]
     ]
    },
    {
     "title": "Vertical spreads",
     "intro": "Two legs, same expiration, different strikes. K1 < K2 throughout. Every vertical has a maximum loss capped at the strike width net of the premium paid or received, which is why they are the standard defined-risk structure.",
     "columns": [
      "Spread",
      "Construction",
      "Max profit",
      "Max loss",
      "Breakeven at expiry"
     ],
     "rows": [
      [
       "Bull call (debit)",
       "Buy call K1, sell call K2, net debit D",
       "K2 - K1 - D",
       "D",
       "K1 + D"
      ],
      [
       "Bear call (credit)",
       "Sell call K1, buy call K2, net credit C",
       "C",
       "K2 - K1 - C",
       "K1 + C"
      ],
      [
       "Bull put (credit)",
       "Sell put K2, buy put K1, net credit C",
       "C",
       "K2 - K1 - C",
       "K2 - C"
      ],
      [
       "Bear put (debit)",
       "Buy put K2, sell put K1, net debit D",
       "K2 - K1 - D",
       "D",
       "K2 - D"
      ]
     ]
    },
    {
     "title": "Volatility structures",
     "intro": "Straddles and strangles are direction-neutral and volatility-directional. The long versions have defined risk and undefined reward; the short versions invert that.",
     "columns": [
      "Structure",
      "Construction",
      "Max profit",
      "Max loss",
      "Breakevens at expiry"
     ],
     "rows": [
      [
       "Long straddle",
       "Buy call K and put K, net debit D",
       "Unlimited above; K - D below",
       "D",
       "K + D and K - D"
      ],
      [
       "Short straddle",
       "Sell call K and put K, net credit C",
       "C",
       "Unlimited above; K - C below",
       "K + C and K - C"
      ],
      [
       "Long strangle",
       "Buy call K2 and put K1, net debit D",
       "Unlimited above; K1 - D below",
       "D",
       "K2 + D and K1 - D"
      ],
      [
       "Short strangle",
       "Sell call K2 and put K1, net credit C",
       "C",
       "Unlimited above; K1 - C below",
       "K2 + C and K1 - C"
      ]
     ]
    },
    {
     "title": "Four-leg defined-risk structures",
     "intro": "Wings converted into caps. All assume a single expiration.",
     "columns": [
      "Structure",
      "Construction",
      "Max profit",
      "Max loss",
      "Breakevens at expiry"
     ],
     "rows": [
      [
       "Iron condor",
       "Sell put K2, buy put K1, sell call K3, buy call K4 (K1&lt;K2&lt;K3&lt;K4), net credit C",
       "C",
       "max(K2 - K1, K4 - K3) - C",
       "K2 - C and K3 + C"
      ],
      [
       "Iron butterfly",
       "Sell put K2 and call K2, buy put K1 and call K3, net credit C",
       "C",
       "(K2 - K1) - C",
       "K2 - C and K2 + C"
      ],
      [
       "Long call butterfly",
       "Buy call K1, sell 2 calls K2, buy call K3, equidistant, net debit D",
       "K2 - K1 - D",
       "D",
       "K1 + D and K3 - D"
      ],
      [
       "Long put butterfly",
       "Buy put K3, sell 2 puts K2, buy put K1, equidistant, net debit D",
       "K2 - K1 - D",
       "D",
       "K1 + D and K3 - D"
      ],
      [
       "Long condor (calls)",
       "Buy K1, sell K2, sell K3, buy K4, net debit D",
       "K2 - K1 - D",
       "D",
       "K1 + D and K4 - D"
      ]
     ]
    },
    {
     "title": "Time and ratio structures",
     "intro": "These do not have closed-form expiration payoffs at the near leg because a longer-dated leg remains open. Maximum loss is stated where it is bounded.",
     "columns": [
      "Structure",
      "Construction",
      "Risk profile",
      "Note"
     ],
     "rows": [
      [
       "Calendar spread",
       "Sell near-dated option at K, buy longer-dated option at same K, net debit D",
       "Max loss D; max profit not closed-form",
       "Long vega, long theta on the spread. Value at near expiry depends on implied volatility of the remaining leg."
      ],
      [
       "Diagonal spread",
       "Sell near-dated K1, buy longer-dated K2",
       "Max loss bounded by net debit if long leg strike is favourable",
       "A calendar with a directional tilt."
      ],
      [
       "Call ratio spread",
       "Buy 1 call K1, sell 2 calls K2 (K2 &gt; K1), net N",
       "Unlimited loss above K2",
       "Undefined risk despite the long leg. One short call is uncovered."
      ],
      [
       "Put ratio spread",
       "Buy 1 put K2, sell 2 puts K1 (K1 &lt; K2), net N",
       "Loss to zero below K1",
       "Maximum loss = 2K1 - K2 - N at S = 0."
      ],
      [
       "Jade lizard",
       "Sell put K1, sell call K2, buy call K3 (K1 &lt; K2 &lt; K3), net credit C",
       "No upside risk if C &gt; K3 - K2",
       "Downside risk equals a short put: max loss K1 - C."
      ]
     ]
    },
    {
     "title": "Payoff expressions",
     "intro": "The expiration payoff of every structure above as an explicit function of S, stated per share. D is a net debit, C a net credit, N a net credit that may be negative. Every maximum, minimum, and breakeven elsewhere on this page is derived from these expressions and nothing else.",
     "columns": [
      "Structure",
      "Payoff(S)"
     ],
     "rows": [
      [
       "Long call",
       "max(S - K, 0) - P"
      ],
      [
       "Short call",
       "P - max(S - K, 0)"
      ],
      [
       "Long put",
       "max(K - S, 0) - P"
      ],
      [
       "Short put",
       "P - max(K - S, 0)"
      ],
      [
       "Covered call",
       "min(S, K) - S0 + P"
      ],
      [
       "Protective put",
       "max(S, K) - S0 - P"
      ],
      [
       "Cash-secured put",
       "P - max(K - S, 0)"
      ],
      [
       "Collar",
       "min(max(S, K1), K2) - S0 + N"
      ],
      [
       "Bull call spread",
       "max(S-K1,0) - max(S-K2,0) - D"
      ],
      [
       "Bear call spread",
       "C - max(S-K1,0) + max(S-K2,0)"
      ],
      [
       "Bull put spread",
       "C - max(K2-S,0) + max(K1-S,0)"
      ],
      [
       "Bear put spread",
       "max(K2-S,0) - max(K1-S,0) - D"
      ],
      [
       "Long straddle",
       "|S - K| - D"
      ],
      [
       "Short straddle",
       "C - |S - K|"
      ],
      [
       "Long strangle",
       "max(S-K2,0) + max(K1-S,0) - D"
      ],
      [
       "Short strangle",
       "C - max(S-K2,0) - max(K1-S,0)"
      ],
      [
       "Long call butterfly",
       "max(S-K1,0) - 2*max(S-K2,0) + max(S-K3,0) - D"
      ],
      [
       "Long put butterfly",
       "max(K3-S,0) - 2*max(K2-S,0) + max(K1-S,0) - D"
      ],
      [
       "Long condor (calls)",
       "max(S-K1,0) - max(S-K2,0) - max(S-K3,0) + max(S-K4,0) - D"
      ],
      [
       "Iron condor",
       "C - [max(K2-S,0) - max(K1-S,0)] - [max(S-K3,0) - max(S-K4,0)]"
      ],
      [
       "Iron butterfly",
       "C - min(|S - K2|, K2 - K1)"
      ],
      [
       "Call ratio 1x2",
       "max(S-K1,0) - 2*max(S-K2,0) + N"
      ],
      [
       "Put ratio 1x2",
       "max(K2-S,0) - 2*max(K1-S,0) + N"
      ],
      [
       "Synthetic long stock",
       "S - K - D"
      ],
      [
       "Synthetic short stock",
       "K + C - S"
      ],
      [
       "Box spread",
       "(K2 - K1) - D, constant in S"
      ],
      [
       "Jade lizard",
       "C - max(K1-S,0) - [max(S-K2,0) - max(S-K3,0)]"
      ]
     ]
    },
    {
     "title": "Worked examples, verified",
     "intro": "Every figure below is computed from the payoff expression above at 0.0001 price granularity from S = 0 to S = 400. Premiums are stated inputs, not quotes. Dollar figures assume a 100 multiplier and one contract per leg unless the ratio says otherwise.",
     "columns": [
      "Structure",
      "Inputs",
      "Net D/C",
      "Max profit",
      "Max loss",
      "Breakeven(s)"
     ],
     "rows": [
      [
       "Long call",
       "K 100 at 3.20",
       "D 3.20",
       "Unbounded",
       "320.00",
       "103.20"
      ],
      [
       "Long put",
       "K 100 at 2.80",
       "D 2.80",
       "9,720.00 at S=0",
       "280.00",
       "97.20"
      ],
      [
       "Short put",
       "K 100 at 2.80",
       "C 2.80",
       "280.00",
       "9,720.00 at S=0",
       "97.20"
      ],
      [
       "Covered call",
       "S0 98, K 105 at 2.10",
       "C 2.10",
       "910.00",
       "9,590.00",
       "95.90"
      ],
      [
       "Cash-secured put",
       "K 95 at 2.40",
       "C 2.40",
       "240.00",
       "9,260.00",
       "92.60"
      ],
      [
       "Bull call spread",
       "100 at 3.20 / 110 at 1.10",
       "D 2.10",
       "790.00",
       "210.00",
       "102.10"
      ],
      [
       "Bear call spread",
       "100 at 3.20 / 110 at 1.10",
       "C 2.10",
       "210.00",
       "790.00",
       "102.10"
      ],
      [
       "Bull put spread",
       "95 at 2.05 / 90 at 0.90",
       "C 1.15",
       "115.00",
       "385.00",
       "93.85"
      ],
      [
       "Bear put spread",
       "95 at 4.75 / 90 at 0.90",
       "D 3.85",
       "115.00",
       "385.00",
       "91.15"
      ],
      [
       "Long straddle",
       "K 100, 3.20 + 2.80",
       "D 6.00",
       "Unbounded",
       "600.00",
       "94.00 and 106.00"
      ],
      [
       "Long strangle",
       "95p 1.40 / 105c 1.60",
       "D 3.00",
       "Unbounded",
       "300.00",
       "92.00 and 108.00"
      ],
      [
       "Long call butterfly",
       "95 at 6.40 / 2x100 at 3.40 / 105 at 1.60",
       "D 1.20",
       "380.00",
       "120.00",
       "96.20 and 103.80"
      ],
      [
       "Long put butterfly",
       "105 at 6.40 / 2x100 at 3.40 / 95 at 1.60",
       "D 1.20",
       "380.00",
       "120.00",
       "96.20 and 103.80"
      ],
      [
       "Iron condor",
       "90/95/105/110 at 0.55/1.30/1.45/0.60",
       "C 1.60",
       "160.00",
       "340.00",
       "93.40 and 106.60"
      ],
      [
       "Iron butterfly",
       "95/100/100/105 at 1.30/2.80/3.20/1.60",
       "C 3.10",
       "310.00",
       "190.00",
       "96.90 and 103.10"
      ],
      [
       "Long call condor",
       "90/95/105/110 at 9.75/6.40/1.85/0.40",
       "D 1.90",
       "310.00",
       "190.00",
       "91.90 and 108.10"
      ],
      [
       "Call ratio 1x2",
       "100 at 3.20 / 2x105 at 1.90",
       "C 0.60",
       "560.00",
       "Unbounded",
       "110.60"
      ],
      [
       "Put ratio 1x2",
       "100 at 2.80 / 2x95 at 1.60",
       "C 0.40",
       "540.00",
       "8,960.00 at S=0",
       "89.60"
      ],
      [
       "Collar",
       "S0 98, 95p 1.50, 105c 2.10",
       "C 0.60",
       "760.00",
       "240.00",
       "97.40"
      ],
      [
       "Synthetic long",
       "100c 3.20 / 100p 2.80",
       "D 0.40",
       "Unbounded",
       "10,040.00 at S=0",
       "100.40"
      ],
      [
       "Box spread 100/110",
       "3.20 / 1.10 / 10.50 / 2.80",
       "D 9.80",
       "20.00 fixed",
       "None",
       "No breakeven; payoff constant"
      ],
      [
       "Jade lizard",
       "90p 2.20, 105c 1.90, 107.5c 1.10",
       "C 3.00",
       "300.00",
       "8,700.00 at S=0",
       "87.00"
      ]
     ]
    },
    {
     "title": "Synthetic equivalences",
     "intro": "Each row is an identity at expiration, following from put-call parity. Strikes are shared within a row unless stated.",
     "columns": [
      "Target exposure",
      "Equivalent construction",
      "Residual difference"
     ],
     "rows": [
      [
       "Long stock",
       "Long call K + short put K",
       "Financing embedded in K + net debit; no dividend entitlement"
      ],
      [
       "Short stock",
       "Short call K + long put K",
       "No borrow required; no dividend obligation"
      ],
      [
       "Long call",
       "Long stock + long put K",
       "Requires full stock capital"
      ],
      [
       "Long put",
       "Short stock + long call K",
       "Requires a borrow"
      ],
      [
       "Short call",
       "Short stock + short put K",
       "Requires a borrow"
      ],
      [
       "Short put",
       "Long stock + short call K (covered call)",
       "Requires full stock capital; carries the dividend"
      ],
      [
       "Bull call spread K1/K2",
       "Bull put spread K1/K2",
       "Debit versus credit; short leg is ITM when losing in the credit version"
      ],
      [
       "Iron condor K1..K4",
       "Long condor K1..K4 in one option type",
       "Credit versus debit; C + D equals the wing width when fairly priced"
      ],
      [
       "Iron butterfly K1/K2/K3",
       "Long butterfly K1/K2/K3",
       "Credit versus debit"
      ],
      [
       "Riskless bond maturing at K2 - K1",
       "Box spread K1/K2",
       "Early-assignment risk on American-style legs"
      ]
     ]
    },
    {
     "title": "Broken-wing and backspread payoff arithmetic, verified",
     "intro": "Both rows were evaluated by brute force from the payoff expression at 0.0001 price granularity from S = 0 to S = 400, the same engine used for the worked examples above. Premiums are stated inputs, not quotes. Figures are per share; multiply by 100 for one contract per leg.",
     "columns": [
      "Structure",
      "Construction",
      "Net",
      "Max profit",
      "Max loss",
      "Breakeven(s)"
     ],
     "rows": [
      [
       "Broken-wing call butterfly",
       "Buy call 95 at 6.40, sell 2 calls 100 at 3.40, buy call 110 at 1.10",
       "D 0.70",
       "4.30 at S = 100",
       "5.70 for all S at or above 110",
       "95.70 and 104.30"
      ],
      [
       "Call backspread 1x2",
       "Sell 1 call 100 at 3.20, buy 2 calls 105 at 1.90",
       "D 0.60",
       "Unbounded above",
       "5.60 at S = 105",
       "110.60"
      ]
     ]
    }
   ],
   "entries": [
    {
     "id": "defined-vs-undefined-risk",
     "term": "Defined risk versus undefined risk",
     "definition": "A position is defined-risk when maximum loss is a finite number computable at entry. Every long option, every vertical spread, and every structure whose short legs are fully covered by long legs at equal or better strikes is defined-risk.",
     "notes": [
      "Naked short calls carry theoretically unlimited loss because the underlying has no upper bound.",
      "Naked short puts carry maximum loss of K - P per share, realised at S = 0. This is bounded but often large.",
      "A ratio spread with more short than long contracts is undefined-risk on the side with the naked excess, regardless of the long leg."
     ]
    },
    {
     "id": "credit-debit-equivalence",
     "term": "Credit and debit vertical equivalence",
     "definition": "A bull call spread and a bull put spread at the same strikes and expiration have identical expiration payoff profiles. The same holds for the bear pair. They differ only in cash flow at entry and in assignment exposure.",
     "formula": "BullCall(K1,K2) payoff == BullPut(K1,K2) payoff, for all S at expiry",
     "notes": [
      "The credit version holds short options that are in the money when the trade is losing, creating early-assignment exposure on the short leg.",
      "The debit version holds long options that are in the money when the trade is winning.",
      "Choice between them is usually driven by assignment risk, financing, and which strikes carry better bid-ask liquidity - not by expected payoff."
     ],
     "fields": [
      {
       "label": "Worked",
       "value": "The profiles coincide when C = (K2 - K1) - D, which is the no-arbitrage condition. K1 = 100, K2 = 110. Bull call for D = 2.10: max profit 7.90, max loss 2.10, breakeven 102.10. Bull put at the same strikes for C = 10 - 2.10 = 7.90: max profit 7.90, max loss 10 - 7.90 = 2.10, breakeven 110 - 7.90 = 102.10. Both verified by brute-force evaluation of the payoff expressions at 0.0001 granularity",
       "mono": true
      }
     ]
    },
    {
     "id": "put-call-parity",
     "term": "Put-call parity",
     "definition": "The no-arbitrage relationship linking a European call and put of the same strike and expiration to the underlying and a zero-coupon bond. Violations imply a riskless arbitrage net of costs.",
     "formula": "C - P = S*exp(-q*T) - K*exp(-r*T)",
     "fields": [
      {
       "label": "Rearranged for synthetic long stock",
       "value": "S = C - P + K*exp(-r*T), with dividends adjusted",
       "mono": true
      },
      {
       "label": "Conversion",
       "value": "Long stock + long put + short call, locking a rate",
       "mono": false
      },
      {
       "label": "Reversal",
       "value": "Short stock + short put + long call",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20. Call = 4.485236 and put = 3.490220, so C - P = 0.995017. Independently S*exp(-q*T) - K*exp(-r*T) = 100 - 100*exp(-0.01) = 0.995017. The identity holds at any sigma, since sigma cancels",
       "mono": true
      }
     ],
     "notes": [
      "Holds exactly only for European exercise. American options may deviate because early exercise has value.",
      "Apparent parity violations on listed American equity options are usually explained by borrow cost, hard-to-borrow rates, or pending dividends rather than by genuine arbitrage."
     ]
    },
    {
     "id": "payoff-long-call",
     "term": "Long call payoff algebra",
     "definition": "Buying one call at strike K for premium P. The only structure with an unbounded profit and a loss capped at the premium.",
     "formula": "Payoff(S) = max(S - K, 0) - P",
     "fields": [
      {
       "label": "Max profit",
       "value": "Unbounded. Payoff grows 1:1 with S above K",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "P, realised for all S <= K",
       "mono": true
      },
      {
       "label": "Breakeven",
       "value": "K + P",
       "mono": true
      },
      {
       "label": "Delta at entry",
       "value": "exp(-q*T)*N(d1), between 0 and 1",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "K = 100, P = 3.20. Breakeven 103.20. At S = 110 payoff = 10.00 - 3.20 = 6.80 per share, 680.00 per contract. At S = 98 payoff = -3.20, loss 320.00",
       "mono": true
      }
     ],
     "notes": [
      "Loss is capped in dollars but is 100 percent of capital at any S at or below K. The capped-loss property does not make it a small loss.",
      "The breakeven moves with the premium, not with delta. Two calls at the same strike bought at different prices have different breakevens and identical payoff slopes above K.",
      "Time value is the entire gap between the breakeven and the strike. A long call held to expiry must clear K + P, not merely K, to return anything."
     ]
    },
    {
     "id": "payoff-short-call",
     "term": "Short call payoff algebra",
     "definition": "Selling one call at strike K for premium P without owning the underlying. Profit is capped at the premium received; loss is unbounded because the underlying has no upper bound.",
     "formula": "Payoff(S) = P - max(S - K, 0)",
     "fields": [
      {
       "label": "Max profit",
       "value": "P, realised for all S <= K",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "Unbounded",
       "mono": true
      },
      {
       "label": "Breakeven",
       "value": "K + P",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "K = 100, P = 3.20. Breakeven 103.20. At S = 110 payoff = 3.20 - 10.00 = -6.80 per share, loss 680.00. At S = 150 loss = 46.80 per share, 4,680.00",
       "mono": true
      }
     ],
     "notes": [
      "The short call and long call at the same strike and price share one breakeven and are exact mirror images. Their payoffs sum to zero at every S.",
      "Loss is unbounded in theory and, in a takeover or a gap, unbounded enough in practice to exceed the account. This is the structure margin rules treat most severely.",
      "Assignment risk concentrates before an ex-dividend date once extrinsic value approaches zero. See the dividend early-exercise test."
     ]
    },
    {
     "id": "payoff-long-put",
     "term": "Long put payoff algebra",
     "definition": "Buying one put at strike K for premium P. Profit is bounded because the underlying cannot fall below zero.",
     "formula": "Payoff(S) = max(K - S, 0) - P",
     "fields": [
      {
       "label": "Max profit",
       "value": "K - P, realised only at S = 0",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "P, realised for all S >= K",
       "mono": true
      },
      {
       "label": "Breakeven",
       "value": "K - P",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "K = 100, P = 2.80. Breakeven 97.20. Max profit 97.20 per share at S = 0. At S = 90 payoff = 10.00 - 2.80 = 7.20 per share, 720.00",
       "mono": true
      }
     ],
     "notes": [
      "Max profit is finite, which is why a long put is never a mirror of a long call despite the symmetry of the formulas.",
      "A long put carries positive rho of the wrong sign for the holder: higher rates reduce put value, all else equal.",
      "Deep in-the-money long puts can be worth exercising early once the interest on the strike proceeds exceeds remaining time value."
     ]
    },
    {
     "id": "payoff-short-put",
     "term": "Short put payoff algebra",
     "definition": "Selling one put at strike K for premium P. Loss is bounded but large, realised at S = 0.",
     "formula": "Payoff(S) = P - max(K - S, 0)",
     "fields": [
      {
       "label": "Max profit",
       "value": "P, realised for all S >= K",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "K - P, realised at S = 0",
       "mono": true
      },
      {
       "label": "Breakeven",
       "value": "K - P",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "K = 100, P = 2.80. Breakeven 97.20. Max loss 97.20 per share, 9,720.00 per contract at S = 0",
       "mono": true
      }
     ],
     "notes": [
      "Bounded is not small. The maximum loss on one uncovered put at a 100 strike is 9,720.00 against a 280.00 credit in the worked case.",
      "Payoff is identical to a covered call struck at the same strike, net of the difference in carry. The two are the same risk expressed two ways.",
      "A short put is the leg most often assigned early in a rising-rate environment on a deep in-the-money strike."
     ]
    },
    {
     "id": "payoff-covered-call",
     "term": "Covered call payoff algebra",
     "definition": "Long the underlying at S0 with one call written at strike K for premium P. The written call converts unlimited upside into a fixed cap in exchange for the premium.",
     "formula": "Payoff(S) = min(S, K) - S0 + P",
     "fields": [
      {
       "label": "Max profit",
       "value": "K - S0 + P, realised for all S >= K",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "S0 - P, realised at S = 0",
       "mono": true
      },
      {
       "label": "Breakeven",
       "value": "S0 - P",
       "mono": true
      },
      {
       "label": "Position delta",
       "value": "1 - exp(-q*T)*N(d1) per share held",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "S0 = 98, K = 105, P = 2.10. Max profit 105 - 98 + 2.10 = 9.10 per share (910.00). Max loss 95.90 (9,590.00). Breakeven 95.90. At S = 120 payoff is still 9.10, capped",
       "mono": true
      }
     ],
     "notes": [
      "Downside is reduced by exactly P and by nothing else. The written call is not a hedge; it is a partial rebate against a full-size long stock position.",
      "If K < S0 the structure is written in the money and the maximum profit can be negative, locking a loss on the stock if the call is assigned.",
      "The dividend early-exercise test governs the short leg. Assignment the day before ex-dividend removes both the stock and the dividend."
     ]
    },
    {
     "id": "payoff-cash-secured-put",
     "term": "Cash-secured put payoff algebra",
     "definition": "One put written at strike K for premium P with K multiplied by the multiplier held in cash against assignment. The payoff is identical to a naked short put; only the capital treatment differs.",
     "formula": "Payoff(S) = P - max(K - S, 0); capital committed = K * multiplier",
     "fields": [
      {
       "label": "Max profit",
       "value": "P",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "K - P at S = 0",
       "mono": true
      },
      {
       "label": "Breakeven",
       "value": "K - P",
       "mono": true
      },
      {
       "label": "Effective purchase price if assigned",
       "value": "K - P",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "K = 95, P = 2.40. Capital 9,500.00. Max profit 240.00, which is 2.5263 percent of committed capital. Breakeven and effective purchase price both 92.60",
       "mono": true
      }
     ],
     "notes": [
      "Securing the put with cash changes nothing about the payoff. It changes the leverage, and therefore the probability of a forced exit.",
      "Return on committed capital, not return on premium, is the comparable figure across strikes: 240.00 on 9,500.00 is not the same trade as 240.00 on 1,740.00 of naked-put requirement.",
      "If assigned, the resulting stock position is worth K - P per share against the original cash, so the assignment is economically neutral at the breakeven price."
     ]
    },
    {
     "id": "payoff-bull-call-spread",
     "term": "Bull call spread payoff algebra",
     "definition": "Long one call at K1 and short one call at K2 with K1 < K2, same expiration, for a net debit D. Maximum loss and maximum profit are both fixed at entry.",
     "formula": "Payoff(S) = max(S - K1, 0) - max(S - K2, 0) - D",
     "fields": [
      {
       "label": "Max profit",
       "value": "K2 - K1 - D, realised for all S >= K2",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "D, realised for all S <= K1",
       "mono": true
      },
      {
       "label": "Breakeven",
       "value": "K1 + D",
       "mono": true
      },
      {
       "label": "Risk/reward ratio",
       "value": "D : (K2 - K1 - D)",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "K1 = 100 at 3.20, K2 = 110 at 1.10, D = 2.10. Max profit 10 - 2.10 = 7.90 (790.00). Max loss 2.10 (210.00). Breakeven 102.10. At S = 105 payoff = 5.00 - 2.10 = 2.90",
       "mono": true
      }
     ],
     "notes": [
      "The width K2 - K1 is the entire opportunity set. Paying more than the width for a vertical guarantees a loss at every S, and quoted mid prices occasionally imply exactly that in wide markets.",
      "Both legs are long calls, so neither carries early-assignment exposure. That is the structural difference from the equivalent bull put spread.",
      "Maximum profit requires S at or above K2 at expiration, not merely a move in the right direction."
     ]
    },
    {
     "id": "payoff-bear-call-spread",
     "term": "Bear call spread payoff algebra",
     "definition": "Short one call at K1 and long one call at K2 with K1 < K2, same expiration, for a net credit C. The long call converts an unbounded short-call loss into the strike width less the credit.",
     "formula": "Payoff(S) = C - [max(S - K1, 0) - max(S - K2, 0)]",
     "fields": [
      {
       "label": "Max profit",
       "value": "C, realised for all S <= K1",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "K2 - K1 - C, realised for all S >= K2",
       "mono": true
      },
      {
       "label": "Breakeven",
       "value": "K1 + C",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "K1 = 100 at 3.20, K2 = 110 at 1.10, C = 2.10. Max profit 2.10 (210.00). Max loss 10 - 2.10 = 7.90 (790.00). Breakeven 102.10. Identical to the 100/110 bull call spread reflected about zero",
       "mono": true
      }
     ],
     "notes": [
      "A credit greater than the strike width is impossible without mispricing; if a quote shows one, the strikes or the multiplier have been misread.",
      "The short K1 call is in the money exactly when the position is losing, which is when early assignment is most likely and least convenient.",
      "Buying-power reduction equals the maximum loss: (K2 - K1 - C) times the multiplier."
     ]
    },
    {
     "id": "payoff-bull-put-spread",
     "term": "Bull put spread payoff algebra",
     "definition": "Short one put at K2 and long one put at K1 with K1 < K2, same expiration, for a net credit C. Defined risk equal to the strike width less the credit.",
     "formula": "Payoff(S) = C - [max(K2 - S, 0) - max(K1 - S, 0)]",
     "fields": [
      {
       "label": "Max profit",
       "value": "C, realised for all S >= K2",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "K2 - K1 - C, realised for all S <= K1",
       "mono": true
      },
      {
       "label": "Breakeven",
       "value": "K2 - C",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "K1 = 90 at 0.90, K2 = 95 at 2.05, C = 1.15. Max profit 1.15 (115.00). Max loss 5 - 1.15 = 3.85 (385.00). Breakeven 93.85",
       "mono": true
      }
     ],
     "notes": [
      "Payoff is identical to the 90/95 bull call spread at every S. The difference is that the short put here is in the money when losing, so early assignment produces a long stock position.",
      "If the short leg is assigned and the long put is retained, the account holds stock plus a put, which is a protective put at a known worst case, not a new risk. The problem is the margin, not the payoff.",
      "The credit is collected at entry, so the maximum loss is the width less that credit, and buying power is reduced by exactly that amount."
     ]
    },
    {
     "id": "payoff-bear-put-spread",
     "term": "Bear put spread payoff algebra",
     "definition": "Long one put at K2 and short one put at K1 with K1 < K2, same expiration, for a net debit D.",
     "formula": "Payoff(S) = max(K2 - S, 0) - max(K1 - S, 0) - D",
     "fields": [
      {
       "label": "Max profit",
       "value": "K2 - K1 - D, realised for all S <= K1",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "D, realised for all S >= K2",
       "mono": true
      },
      {
       "label": "Breakeven",
       "value": "K2 - D",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "K1 = 90 at 0.90, K2 = 95 at 4.75, D = 3.85. Max profit 5 - 3.85 = 1.15 (115.00). Max loss 3.85 (385.00). Breakeven 91.15",
       "mono": true
      }
     ],
     "notes": [
      "Both legs are puts held long and short at fixed strikes, so the debit version has no assignment exposure on the long leg and only a bounded one on the short.",
      "The paired bull put spread at the same strikes has breakeven 93.85 while this has 91.15. That is not an inconsistency: they are opposite positions, and each breakeven sits on the losing side of the other."
     ]
    },
    {
     "id": "payoff-straddle",
     "term": "Straddle payoff algebra",
     "definition": "A call and a put at the same strike K and expiration. Long for a net debit D, short for a net credit C. Direction-neutral at entry, volatility-directional throughout.",
     "formula": "Long payoff(S) = max(S - K, 0) + max(K - S, 0) - D = |S - K| - D",
     "fields": [
      {
       "label": "Long max profit",
       "value": "Unbounded above; K - D at S = 0",
       "mono": true
      },
      {
       "label": "Long max loss",
       "value": "D, realised only at S = K exactly",
       "mono": true
      },
      {
       "label": "Long breakevens",
       "value": "K + D and K - D",
       "mono": true
      },
      {
       "label": "Short max profit",
       "value": "C at S = K",
       "mono": true
      },
      {
       "label": "Short max loss",
       "value": "Unbounded above; K - C at S = 0",
       "mono": true
      },
      {
       "label": "Required move to break even",
       "value": "D / K expressed as a fraction of the strike",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "K = 100, call 3.20 and put 2.80, D = 6.00. Breakevens 106.00 and 94.00, a required move of 6.00 percent of the strike in either direction. At S = 112 payoff = 12.00 - 6.00 = 6.00. Short straddle at C = 6.00 has the same two breakevens and max profit 600.00",
       "mono": true
      }
     ],
     "notes": [
      "The two breakevens are symmetric about K only because the strike is shared. That symmetry disappears the moment strikes differ, which is why a strangle has an asymmetric profile.",
      "The straddle debit divided by the strike is a direct read of the move the market is charging for. Comparing it to the move the position needs is the whole trade.",
      "A long straddle carries roughly double the gamma and vega of either leg and near-zero delta at the money, because gamma and vega are identical for a call and a put at the same strike."
     ]
    },
    {
     "id": "payoff-strangle",
     "term": "Strangle payoff algebra",
     "definition": "An out-of-the-money call at K2 and an out-of-the-money put at K1 with K1 < K2, same expiration. Long for a net debit D, short for a net credit C.",
     "formula": "Long payoff(S) = max(S - K2, 0) + max(K1 - S, 0) - D",
     "fields": [
      {
       "label": "Long max profit",
       "value": "Unbounded above; K1 - D at S = 0",
       "mono": true
      },
      {
       "label": "Long max loss",
       "value": "D, realised for all K1 <= S <= K2",
       "mono": true
      },
      {
       "label": "Long breakevens",
       "value": "K2 + D and K1 - D",
       "mono": true
      },
      {
       "label": "Short max profit",
       "value": "C, realised for all K1 <= S <= K2",
       "mono": true
      },
      {
       "label": "Short max loss",
       "value": "Unbounded above; K1 - C at S = 0",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "K1 = 95 put at 1.40, K2 = 105 call at 1.60, D = 3.00. Breakevens 108.00 and 92.00. Max loss 3.00 (300.00) across the entire 95 to 105 band. Short version at C = 3.00 keeps the full 300.00 anywhere in that band",
       "mono": true
      }
     ],
     "notes": [
      "The maximum loss on a long strangle is realised across a range, not at a point. That makes it more likely to be realised in full than a straddle maximum loss.",
      "A short strangle collects its maximum credit across a band, which is why its distribution of outcomes is heavily weighted to small wins and rare large losses.",
      "Widening the strikes lowers the debit and widens the breakevens simultaneously. The two effects work against each other and neither is free."
     ]
    },
    {
     "id": "payoff-butterfly",
     "term": "Butterfly payoff algebra",
     "definition": "Three strikes, equidistant, in a 1-2-1 ratio. Long call butterfly: buy K1, sell two K2, buy K3 with K3 - K2 = K2 - K1. Long put butterfly uses the mirrored puts and has the same expiration payoff.",
     "formula": "Payoff(S) = max(S - K1, 0) - 2*max(S - K2, 0) + max(S - K3, 0) - D",
     "fields": [
      {
       "label": "Max profit",
       "value": "K2 - K1 - D, realised only at S = K2",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "D, realised for S <= K1 and for S >= K3",
       "mono": true
      },
      {
       "label": "Breakevens",
       "value": "K1 + D and K3 - D",
       "mono": true
      },
      {
       "label": "Width invariant",
       "value": "K3 - K2 = K2 - K1 = W, so max profit = W - D",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "K1 = 95 at 6.40, K2 = 100 at 3.40 (two sold), K3 = 105 at 1.60. D = 6.40 - 6.80 + 1.60 = 1.20. Max profit 5 - 1.20 = 3.80 (380.00) at S = 100 exactly. Max loss 1.20 (120.00). Breakevens 96.20 and 103.80",
       "mono": true
      }
     ],
     "notes": [
      "Maximum profit is a single point, not a range. The expected value of a butterfly is dominated by the probability of the band between the breakevens, not by the headline reward ratio.",
      "The long call butterfly and long put butterfly at identical strikes have identical expiration payoffs, so the choice between them is an assignment and liquidity decision.",
      "Broken-wing versions, where the wings are unequal, are no longer symmetric and no longer have max profit W - D. Recompute both breakevens from the payoff expression rather than reusing the symmetric formulas."
     ]
    },
    {
     "id": "payoff-iron-condor",
     "term": "Iron condor payoff algebra",
     "definition": "Four strikes K1 < K2 < K3 < K4, same expiration: long put K1, short put K2, short call K3, long call K4, for a net credit C. A short put spread and a short call spread sharing one credit.",
     "formula": "Payoff(S) = C - [max(K2 - S, 0) - max(K1 - S, 0)] - [max(S - K3, 0) - max(S - K4, 0)]",
     "fields": [
      {
       "label": "Max profit",
       "value": "C, realised for all K2 <= S <= K3",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "max(K2 - K1, K4 - K3) - C",
       "mono": true
      },
      {
       "label": "Breakevens",
       "value": "K2 - C and K3 + C",
       "mono": true
      },
      {
       "label": "Profit band width",
       "value": "K3 - K2",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "90/95/105/110 with long put 0.55, short put 1.30, short call 1.45, long call 0.60. C = 1.30 + 1.45 - 0.55 - 0.60 = 1.60. Max profit 160.00 anywhere from 95 to 105. Max loss 5 - 1.60 = 3.40 (340.00). Breakevens 93.40 and 106.60",
       "mono": true
      }
     ],
     "notes": [
      "Only one side can lose at expiration, so the maximum loss is the wider wing less the credit, not the sum of both wings.",
      "Unequal wings mean the two sides carry different maximum losses while sharing one credit. State which wing is wider before quoting a risk figure.",
      "Buying-power reduction equals the maximum loss, so a symmetric condor consumes the same capital as a single credit vertical of the same width while collecting two credits."
     ]
    },
    {
     "id": "payoff-iron-butterfly",
     "term": "Iron butterfly payoff algebra",
     "definition": "Three strikes K1 < K2 < K3, equidistant, same expiration: long put K1, short put K2, short call K2, long call K3, for a net credit C. The zero-width-band limit of an iron condor.",
     "formula": "Payoff(S) = C - |S - K2| bounded by the wings, i.e. C - min(|S - K2|, W) where W = K2 - K1 = K3 - K2",
     "fields": [
      {
       "label": "Max profit",
       "value": "C, realised only at S = K2",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "W - C, where W = K2 - K1",
       "mono": true
      },
      {
       "label": "Breakevens",
       "value": "K2 - C and K2 + C",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "95/100/105 with long put 1.30, short put 2.80, short call 3.20, long call 1.60. C = 2.80 + 3.20 - 1.30 - 1.60 = 3.10. Max profit 310.00 at S = 100. Max loss 5 - 3.10 = 1.90 (190.00). Breakevens 96.90 and 103.10",
       "mono": true
      }
     ],
     "notes": [
      "The iron butterfly and the long call butterfly at the same three strikes have the same payoff shape. The iron version is entered for a credit and the call version for a debit, and C plus D equals the wing width when both are fairly priced.",
      "Both short legs sit at the same strike, which concentrates pin risk at a single price on expiration day.",
      "Breakevens are symmetric about K2 at plus and minus the credit, which makes the credit a direct read of the tolerated move."
     ]
    },
    {
     "id": "payoff-condor",
     "term": "Condor payoff algebra",
     "definition": "Four strikes K1 < K2 < K3 < K4 in a single option type, 1-1-1-1: buy K1, sell K2, sell K3, buy K4 for a net debit D. A butterfly with the peak stretched into a plateau.",
     "formula": "Payoff(S) = max(S-K1,0) - max(S-K2,0) - max(S-K3,0) + max(S-K4,0) - D",
     "fields": [
      {
       "label": "Max profit",
       "value": "K2 - K1 - D, realised for all K2 <= S <= K3",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "D, realised for S <= K1 and S >= K4",
       "mono": true
      },
      {
       "label": "Breakevens",
       "value": "K1 + D and K4 - D",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Calls 90/95/105/110 at 9.75, 6.40, 1.85, 0.40. D = 9.75 - 6.40 - 1.85 + 0.40 = 1.90. Max profit 5 - 1.90 = 3.10 (310.00) across 95 to 105. Max loss 1.90 (190.00). Breakevens 91.90 and 108.10",
       "mono": true
      }
     ],
     "notes": [
      "Max profit assumes the inner strikes are the same distance apart as the outer pairs on each side. If K2 - K1 does not equal K4 - K3 the formula K2 - K1 - D is wrong on one side.",
      "The all-calls condor and the iron condor at the same four strikes carry the same expiration shape; one is a debit and one a credit."
     ]
    },
    {
     "id": "payoff-calendar",
     "term": "Calendar spread arithmetic",
     "definition": "Short a near-dated option at K and long a longer-dated option at the same K, for a net debit D. There is no closed-form expiration payoff because the long leg is still alive when the short leg expires.",
     "formula": "Value at near expiry = BS(S, K, T2 - T1, r, q, sigma2) - max(intrinsic of the near leg) - D",
     "fields": [
      {
       "label": "Max loss",
       "value": "D, realised when S moves far enough that both legs converge to the same intrinsic value",
       "mono": true
      },
      {
       "label": "Max profit",
       "value": "Not closed-form; depends on sigma2 at near expiry",
       "mono": true
      },
      {
       "label": "Position vega",
       "value": "Positive, since the longer leg has the larger vega",
       "mono": true
      },
      {
       "label": "Position theta",
       "value": "Positive at the money, since the near leg decays faster",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Sell the 30-day 100 call at 2.10, buy the 90-day 100 call at 4.00. D = 1.90 (190.00), which is the maximum loss. Profit at near expiry equals the residual value of the 60-day call less 1.90, so it cannot be stated without a volatility input",
       "mono": true
      }
     ],
     "notes": [
      "A calendar is a position on the term structure, not on direction. The two legs can carry different implied volatilities and usually do.",
      "Maximum loss is bounded by the debit only if the two legs share a strike. Diagonals break that guarantee.",
      "Any figure quoted as a calendar max profit carries a hidden volatility assumption. Ask which sigma it used before comparing two quotes."
     ]
    },
    {
     "id": "payoff-diagonal",
     "term": "Diagonal spread arithmetic",
     "definition": "Short a near-dated option at K1 and long a longer-dated option at K2 with K1 not equal to K2. A calendar with a strike offset, so it carries directional exposure as well as term exposure.",
     "formula": "Value at near expiry = BS(S, K2, T2 - T1, r, q, sigma2) - max(near-leg intrinsic at K1) - D",
     "fields": [
      {
       "label": "Max loss",
       "value": "Bounded by D only when the long leg strike is at least as favourable as the short leg strike for the option type held",
       "mono": true
      },
      {
       "label": "Unbounded case",
       "value": "A short near-dated call at K1 against a long later call at K2 > K1 has unbounded loss above K1 until the long leg is in the money, and even then the loss is capped only at expiry of the long leg",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Sell the 30-day 105 call at 1.10, buy the 90-day 100 call at 4.00. D = 2.90 (290.00). The long strike is lower than the short strike, so at near expiry the long leg intrinsic exceeds the short leg intrinsic by at least 5.00 for large S, and loss is bounded by the debit",
       "mono": true
      }
     ],
     "notes": [
      "Whether a diagonal is defined-risk depends entirely on the strike order relative to the option type. Determine that before sizing.",
      "A diagonal where the short strike is more favourable than the long strike is not a defined-risk position, regardless of the debit paid."
     ]
    },
    {
     "id": "payoff-ratio-spread",
     "term": "Ratio spread payoff algebra",
     "definition": "Unequal quantities of long and short options in the same expiration. A 1x2 call ratio is long one call at K1 and short two at K2 with K1 < K2. The excess short contract is uncovered.",
     "formula": "Call 1x2 payoff(S) = max(S-K1,0) - 2*max(S-K2,0) + N, where N is the net credit (negative for a debit)",
     "fields": [
      {
       "label": "Max profit",
       "value": "K2 - K1 + N at S = K2",
       "mono": true
      },
      {
       "label": "Upper breakeven",
       "value": "2*K2 - K1 + N",
       "mono": true
      },
      {
       "label": "Max loss (call ratio)",
       "value": "Unbounded above the upper breakeven",
       "mono": true
      },
      {
       "label": "Put 1x2 payoff",
       "value": "max(K2-S,0) - 2*max(K1-S,0) + N",
       "mono": true
      },
      {
       "label": "Put ratio max loss",
       "value": "2*K1 - K2 - N at S = 0",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Call 1x2: buy 100 call at 3.20, sell two 105 calls at 1.90 each, N = +0.60 credit. Max profit 5 + 0.60 = 5.60 (560.00) at S = 105. Upper breakeven 210 - 100 + 0.60 = 110.60. Put 1x2: buy 100 put at 2.80, sell two 95 puts at 1.60 each, N = +0.40. Max profit 5.40 (540.00) at S = 95, max loss 190 - 100 - 0.40 = 89.60 (8,960.00) at S = 0, breakeven 89.60",
       "mono": true
      }
     ],
     "notes": [
      "A net credit removes the loss on the far side but does nothing about the uncovered short. A credit ratio spread is still an undefined-risk position.",
      "The upper breakeven of a 1x2 call ratio is twice the short strike less the long strike, plus the credit. It is not the short strike plus the credit, and that error understates the risk band badly.",
      "Margin treats the excess short contract as naked, so buying-power reduction is far larger than the debit or credit suggests."
     ]
    },
    {
     "id": "payoff-collar",
     "term": "Collar payoff algebra",
     "definition": "Long the underlying at S0, long a put at K1 and short a call at K2 with K1 < K2, for a net credit or debit N (credit positive). Both tails are removed.",
     "formula": "Payoff(S) = min(max(S, K1), K2) - S0 + N",
     "fields": [
      {
       "label": "Max profit",
       "value": "K2 - S0 + N, for all S >= K2",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "S0 - K1 - N, for all S <= K1",
       "mono": true
      },
      {
       "label": "Breakeven",
       "value": "S0 - N",
       "mono": true
      },
      {
       "label": "Zero-cost condition",
       "value": "N = 0, i.e. the put and call premiums are equal",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "S0 = 98, long 95 put at 1.50, short 105 call at 2.10, N = +0.60 credit. Max profit 105 - 98 + 0.60 = 7.60 (760.00). Max loss 98 - 95 - 0.60 = 2.40 (240.00). Breakeven 97.40",
       "mono": true
      }
     ],
     "notes": [
      "A collar with a credit has a breakeven below the entry price, which is the only sense in which the credit protects anything.",
      "The payoff between K1 and K2 is exactly the stock payoff shifted by N. The structure changes only the tails.",
      "Assignment on the short call before an ex-dividend date leaves the account holding a long put against no stock, which is a directionally opposite position to the one intended."
     ]
    },
    {
     "id": "payoff-synthetics",
     "term": "Synthetic positions and their algebra",
     "definition": "Combinations that replicate another instrument exactly at expiration. Each follows from put-call parity rather than from any separate rule.",
     "formula": "Synthetic long stock = long call K + short put K; payoff(S) = S - K - D",
     "fields": [
      {
       "label": "Synthetic long stock",
       "value": "Long call K, short put K, net debit D. Payoff = S - K - D. Breakeven K + D",
       "mono": true
      },
      {
       "label": "Synthetic short stock",
       "value": "Short call K, long put K, net credit C. Payoff = K + C - S. Breakeven K + C",
       "mono": true
      },
      {
       "label": "Synthetic long call",
       "value": "Long stock at S0 + long put K",
       "mono": true
      },
      {
       "label": "Synthetic long put",
       "value": "Short stock at S0 + long call K",
       "mono": true
      },
      {
       "label": "Synthetic short call",
       "value": "Short stock at S0 + short put K",
       "mono": true
      },
      {
       "label": "Synthetic short put",
       "value": "Long stock at S0 + short call K, i.e. the covered call",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "K = 100, call 3.20, put 2.80. Synthetic long: net debit 0.40, payoff S - 100.40, breakeven 100.40, so the effective purchase price is 100.40. Synthetic short at the same strikes: net credit 0.40, payoff 100.40 - S, breakeven 100.40",
       "mono": true
      }
     ],
     "notes": [
      "The effective purchase price of a synthetic long is K plus the net debit, and it embeds the financing rate. Comparing it to spot is the cheapest available read on the implied borrow and carry.",
      "A synthetic carries no dividend entitlement. Any dividend the underlying pays over the life of the position is already in the option prices, not in the position.",
      "Synthetic stock positions are marked as options for margin, which can produce a very different requirement from the equivalent stock position."
     ]
    },
    {
     "id": "payoff-box-spread",
     "term": "Box spread payoff algebra",
     "definition": "A bull call spread and a bear put spread at the same two strikes and expiration: long call K1, short call K2, long put K2, short put K1. The expiration value is the strike width regardless of S.",
     "formula": "Payoff at expiry = (K2 - K1) - D, for every S",
     "fields": [
      {
       "label": "Value at expiry",
       "value": "K2 - K1, deterministic",
       "mono": true
      },
      {
       "label": "Profit",
       "value": "K2 - K1 - D",
       "mono": true
      },
      {
       "label": "Implied financing rate",
       "value": "r_implied = ln((K2 - K1) / D) / T",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "K1 = 100, K2 = 110. Long 100 call 3.20, short 110 call 1.10, long 110 put 10.50, short 100 put 2.80. D = 9.80. Expiry value 10.00 for every S, so profit 0.20 (20.00) fixed. With T = 0.5, implied rate = ln(10 / 9.80) / 0.5 = 0.0404, i.e. 4.04 percent",
       "mono": true
      }
     ],
     "notes": [
      "A box is a financing instrument, not a directional one. Its only variables are the rate implied by the price and the risk that the American short legs are exercised early.",
      "On American-style options a short box carries genuine early-assignment risk, and an assigned leg converts a deterministic payoff into an open stock position. Boxes on European-style index options do not have this exposure.",
      "A box quoted above the strike width implies a negative financing rate and is almost always a stale or crossed quote rather than an opportunity."
     ]
    },
    {
     "id": "payoff-jade-lizard",
     "term": "Jade lizard payoff algebra",
     "definition": "A short put at K1 and a short call spread at K2 and K3 with K1 < K2 < K3, one expiration, for a net credit C. The upside risk is removed entirely when the credit exceeds the call spread width.",
     "formula": "Payoff(S) = C - max(K1 - S, 0) - [max(S - K2, 0) - max(S - K3, 0)]",
     "fields": [
      {
       "label": "Max profit",
       "value": "C, realised for all K1 <= S <= K2",
       "mono": true
      },
      {
       "label": "Upside outcome",
       "value": "C - (K3 - K2) for all S >= K3, which is a profit when C > K3 - K2",
       "mono": true
      },
      {
       "label": "No-upside-risk condition",
       "value": "C > K3 - K2",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "K1 - C at S = 0",
       "mono": true
      },
      {
       "label": "Downside breakeven",
       "value": "K1 - C",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Short 90 put at 2.20, short 105 call at 1.90, long 107.5 call at 1.10. C = 3.00, K3 - K2 = 2.50, so C exceeds the call spread width. Max profit 300.00 between 90 and 105. Above 107.5 the payoff is 3.00 - 2.50 = 0.50 (50.00), still a profit. Max loss 90 - 3.00 = 87.00 (8,700.00) at S = 0. Only breakeven 87.00",
       "mono": true
      }
     ],
     "notes": [
      "The single-breakeven property is the defining feature. Verify C > K3 - K2 arithmetically at entry; the name does not guarantee it.",
      "All of the risk sits in the short put, so the position is a short put with a funded upside cap, and it should be sized as a short put.",
      "If the credit falls below the call spread width after a roll or an adjustment, upside risk reappears and the structure has a second breakeven at K2 + C."
     ]
    },
    {
     "id": "broken-wing-butterfly",
     "term": "Broken-wing butterfly payoff algebra",
     "definition": "A butterfly with unequal wings. The symmetric formulas no longer apply: the maximum loss differs on the two sides, and on the wide side it is the wing imbalance less the net paid rather than the net paid alone. Every figure has to be recomputed from the payoff expression.",
     "formula": "Payoff(S) = max(S - K1, 0) - 2*max(S - K2, 0) + max(S - K3, 0) - D, with K3 - K2 not equal to K2 - K1",
     "fields": [
      {
       "label": "Max profit",
       "value": "(K2 - K1) - D, at S = K2 exactly, unchanged from the symmetric case",
       "mono": true
      },
      {
       "label": "Loss on the narrow side",
       "value": "D, for all S at or below K1",
       "mono": true
      },
      {
       "label": "Loss on the wide side",
       "value": "(K3 - K2) - (K2 - K1) + D, for all S at or above K3",
       "mono": true
      },
      {
       "label": "Breakevens",
       "value": "K1 + D and K2 + (K2 - K1) - D. The upper breakeven is no longer K3 - D",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Buy the 95 call at 6.40, sell two 100 calls at 3.40, buy the 110 call at 1.10. Net debit D = 6.40 minus 6.80 plus 1.10 = 0.70. Brute-force scan: maximum profit 4.30 at S = 100.0000, which matches (100 minus 95) minus 0.70 = 4.30. Loss below 95 is 0.70 (70.00 per contract). Loss at and above 110 is 5.70, confirmed by evaluating the payoff at S = 120, 200 and 400, all of which return minus 5.70; the closed form gives (110 minus 100) minus (100 minus 95) plus 0.70 = 5.70. Breakevens 95.7000 and 104.3000. Note the upper breakeven is not 110 minus 0.70 = 109.30, which is what the symmetric formula would give - it is wrong by 5.00",
       "mono": true
      }
     ],
     "notes": [
      "The maximum loss is eight times larger on the wide side than on the narrow side in the worked case, 5.70 against 0.70, on a structure whose name implies a defined and small risk. It is defined; it is not small.",
      "Applying the symmetric upper-breakeven formula K3 minus D gives 109.30 against the true 104.30, an error of 5.00 on a structure whose entire maximum profit is 4.30. This is the single most common error in the family.",
      "Widening one wing lowers the net cost and moves the loss, it does not remove it. The credit-versus-risk trade-off is visible only if both sides are computed separately."
     ]
    },
    {
     "id": "call-backspread-algebra",
     "term": "Call backspread payoff algebra",
     "definition": "One short call at a lower strike against two long calls at a higher strike, same expiration. The reverse of a call ratio spread: loss is defined and unbounded profit sits above the upper breakeven, with the worst point at the long strike.",
     "formula": "Payoff(S) = 2*max(S - K2, 0) - max(S - K1, 0) + N, with K1 below K2 and N the net credit, negative for a debit",
     "fields": [
      {
       "label": "Max profit",
       "value": "Unbounded above, with slope plus 1 per share above K2 net of the short leg, i.e. plus 1 in total",
       "mono": true
      },
      {
       "label": "Max loss",
       "value": "(K2 - K1) - N, realised at S = K2 exactly",
       "mono": true
      },
      {
       "label": "Payoff below K1",
       "value": "N, the net credit, retained for all S at or below K1",
       "mono": true
      },
      {
       "label": "Upper breakeven",
       "value": "K2 + (K2 - K1) - N",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Sell one 100 call at 3.20, buy two 105 calls at 1.90. Net = minus 3.20 plus 3.80 = 0.60 debit, so N = minus 0.60. Brute-force scan at 0.0001 granularity from 0 to 400: payoff below 100 is minus 0.60 (a 60.00 loss per contract, the debit). Trough at S = 105.0000 of minus 5.60, matching (105 minus 100) plus 0.60 = 5.60. Payoff at 110 is minus 0.60, at 120 is plus 9.40. Single breakeven at 110.6000, matching 105 plus 5.00 minus (minus 0.60) = 110.60. This is the exact mirror of the 1x2 call ratio spread priced elsewhere on this site, whose maximum profit is 5.60 at S = 105 and whose breakeven is also 110.60",
       "mono": true
      }
     ],
     "notes": [
      "The maximum loss sits at the long strike, not at either extreme. A position that finishes exactly where the long legs are struck is the worst outcome, which inverts the usual intuition that being near the long strike is good.",
      "Because the structure can be entered for a credit if the strikes are close enough, it is sometimes described as free. The 5.60 loss at S = 105 is unaffected by whether the entry was a credit or a debit; only its size changes.",
      "The backspread and the 1x2 ratio spread at the same strikes are exact mirrors, so their payoffs sum to zero at every price and they share one breakeven. Any table that shows them with different breakevens has an arithmetic error."
     ]
    }
   ],
   "reviewed": "2026-08-27"
  },
  {
   "slug": "models",
   "title": "Pricing models",
   "lede": "Closed forms, lattices and numerical schemes, with measured convergence and stability arithmetic.",
   "intro": "Every value in this section was recomputed from the stated formulas in double precision. The standard normal cumulative distribution is evaluated as N(x) = 0.5*(1 + erf(x/sqrt(2))), which is exact to machine precision; the Abramowitz and Stegun 26.2.17 rational approximation was run alongside it as a cross-check and agrees to within 7.5e-8 over the range -5 to +5, which is its published error bound. The reference scenario is S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25 unless an entry states otherwise, and the Black-Scholes-Merton call at K = 100 on those inputs is 4.485236409 - every convergence figure below is an error against that number. Numeric inputs are chosen so the arithmetic is checkable; they are not observations of any market.",
   "tables": [
    {
     "title": "Model families and what each one prices",
     "intro": "A closed form exists only where the payoff depends on the terminal price alone and exercise is European. Everything else is a numerical problem, and the choice of method is a choice about which error you are willing to measure.",
     "columns": [
      "Model",
      "Underlying process assumed",
      "European closed form",
      "American exercise",
      "Path dependence",
      "Error measured as"
     ],
     "rows": [
      [
       "Black-Scholes-Merton 1973",
       "Geometric Brownian motion, constant sigma, continuous dividend yield q",
       "Yes",
       "No",
       "No",
       "None; exact within the model"
      ],
      [
       "Black-76",
       "Lognormal forward, constant sigma",
       "Yes",
       "No",
       "No",
       "None; exact within the model"
      ],
      [
       "Binomial, Cox-Ross-Rubinstein 1979",
       "Two-state discrete approximation to the same diffusion",
       "Converges",
       "Yes",
       "Only through the lattice state",
       "Value error against the closed form"
      ],
      [
       "Trinomial",
       "Three-state discrete approximation",
       "Converges",
       "Yes",
       "Only through the lattice state",
       "Value error against the closed form"
      ],
      [
       "Bjerksund-Stensland 1993 and 2002",
       "Same diffusion, flat exercise boundary approximated",
       "n/a",
       "Approximated",
       "No",
       "Gap to a converged lattice"
      ],
      [
       "Monte Carlo",
       "Simulated paths under the risk-neutral measure",
       "Converges",
       "Only with a regression or duality method",
       "Yes",
       "Standard error of the estimate"
      ],
      [
       "Finite difference",
       "The Black-Scholes partial differential equation discretised",
       "Converges",
       "Yes, by projecting the payoff each step",
       "Only with an added state variable",
       "Truncation error in space and time"
      ]
     ]
    },
    {
     "title": "Binomial and trinomial convergence to Black-Scholes-Merton, verified",
     "intro": "European call, S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20. The closed-form value is 4.485236409. CRR uses u = exp(sigma*sqrt(dt)), d = 1/u, p = (exp((r-q)*dt) - d)/(u - d). The trinomial uses dx = sigma*sqrt(2*dt) with the Kamrad-Ritchken probabilities. Every value below was recomputed; the trinomial column at n steps is numerically identical to the CRR column at 2n steps, to every printed digit.",
     "columns": [
      "Steps n",
      "CRR u",
      "CRR p",
      "CRR value",
      "CRR error",
      "Trinomial value at n steps",
      "Trinomial error"
     ],
     "rows": [
      [
       "1",
       "1.10517092",
       "0.52518799",
       "5.46849110",
       "plus 0.98325469",
       "4.03156245",
       "minus 0.45367395"
      ],
      [
       "2",
       "1.07327066",
       "0.51774405",
       "4.03156245",
       "minus 0.45367395",
       "4.24592704",
       "minus 0.23930937"
      ],
      [
       "4",
       "1.05127110",
       "0.51252345",
       "4.24592704",
       "minus 0.23930937",
       "4.36286187",
       "minus 0.12237454"
      ],
      [
       "8",
       "1.03598777",
       "0.50884712",
       "4.36286187",
       "minus 0.12237454",
       "4.42345524",
       "minus 0.06178117"
      ],
      [
       "16",
       "1.02531512",
       "0.50625293",
       "4.42345524",
       "minus 0.06178117",
       "4.45421023",
       "minus 0.03102617"
      ],
      [
       "32",
       "1.01783484",
       "0.50442045",
       "4.45421023",
       "minus 0.03102617",
       "4.46969114",
       "minus 0.01554527"
      ],
      [
       "64",
       "1.01257845",
       "0.50312537",
       "4.46969114",
       "minus 0.01554527",
       "4.47745595",
       "minus 0.00778046"
      ],
      [
       "128",
       "1.00887801",
       "0.50220984",
       "4.47745595",
       "minus 0.00778046",
       "4.48134425",
       "minus 0.00389216"
      ],
      [
       "256",
       "1.00626957",
       "0.50156255",
       "4.48134425",
       "minus 0.00389216",
       "4.48328985",
       "minus 0.00194656"
      ],
      [
       "512",
       "1.00442920",
       "0.50110487",
       "4.48328985",
       "minus 0.00194656",
       "4.48426301",
       "minus 0.00097340"
      ],
      [
       "1024",
       "1.00312989",
       "0.50078126",
       "4.48426301",
       "minus 0.00097340",
       "4.48474968",
       "minus 0.00048673"
      ],
      [
       "2048",
       "1.00221215",
       "0.50055243",
       "4.48474968",
       "minus 0.00048673",
       "n/a",
       "n/a"
      ]
     ]
    },
    {
     "title": "Finite-difference schemes: measured error and the stability boundary",
     "intro": "Same call and same closed-form target. The grid is uniform in x = ln(S) with Dirichlet boundaries at plus and minus five standard deviations, M space steps and Nt time steps. The stability quantity is sigma^2 * dt / dx^2. Every value was recomputed; the two explicit rows above the boundary are the actual output, not a description of what would happen.",
     "columns": [
      "Scheme",
      "M",
      "Nt",
      "sigma^2 dt/dx^2",
      "Value",
      "Error vs closed form"
     ],
     "rows": [
      [
       "Explicit",
       "200",
       "400",
       "0.9803",
       "4.48524380",
       "plus 7.40e-06"
      ],
      [
       "Explicit",
       "400",
       "1600",
       "0.9803",
       "4.48523847",
       "plus 2.06e-06"
      ],
      [
       "Explicit",
       "200",
       "100",
       "3.9212",
       "minus 2.2e+81",
       "Diverged"
      ],
      [
       "Explicit",
       "200",
       "20",
       "19.6059",
       "minus 7.1e+29",
       "Diverged"
      ],
      [
       "Implicit",
       "200",
       "100",
       "3.9212",
       "4.47896828",
       "minus 6.27e-03"
      ],
      [
       "Implicit",
       "200",
       "400",
       "0.9803",
       "4.48273241",
       "minus 2.50e-03"
      ],
      [
       "Implicit",
       "400",
       "1600",
       "0.9803",
       "4.48461107",
       "minus 6.25e-04"
      ],
      [
       "Crank-Nicolson",
       "200",
       "100",
       "3.9212",
       "4.48400038",
       "minus 1.24e-03"
      ],
      [
       "Crank-Nicolson",
       "200",
       "400",
       "0.9803",
       "4.48398869",
       "minus 1.25e-03"
      ],
      [
       "Crank-Nicolson",
       "400",
       "1600",
       "0.9803",
       "4.48492481",
       "minus 3.12e-04"
      ]
     ]
    },
    {
     "title": "Monte Carlo estimates and their standard errors, verified",
     "intro": "Same call and same closed-form target of 4.485236409. The stratified rows are fully deterministic: draw z_i = Phi-inverse((i - 0.5)/n) for i = 1..n, so any reader reproduces them exactly. The pseudo-random rows depend on the generator and are stated with the seed used, 20260827, and Python's Mersenne Twister via random.gauss. The antithetic rows use the same total number of normal draws arranged as n/2 sign-paired pairs.",
     "columns": [
      "Method",
      "Draws n",
      "Estimate",
      "Sample s.d.",
      "Standard error",
      "Error vs closed form"
     ],
     "rows": [
      [
       "Stratified midpoint",
       "10",
       "4.32466075",
       "n/a, deterministic",
       "n/a",
       "minus 0.16057566"
      ],
      [
       "Stratified midpoint",
       "100",
       "4.47126008",
       "n/a, deterministic",
       "n/a",
       "minus 0.01397633"
      ],
      [
       "Stratified midpoint",
       "1,000",
       "4.48396632",
       "n/a, deterministic",
       "n/a",
       "minus 0.00127009"
      ],
      [
       "Stratified midpoint",
       "10,000",
       "4.48511797",
       "n/a, deterministic",
       "n/a",
       "minus 0.00011844"
      ],
      [
       "Stratified midpoint",
       "100,000",
       "4.48522517",
       "n/a, deterministic",
       "n/a",
       "minus 0.00001124"
      ],
      [
       "Pseudo-random, plain",
       "10,000",
       "4.449312",
       "6.486307",
       "0.064863",
       "minus 0.035925"
      ],
      [
       "Pseudo-random, antithetic",
       "10,000",
       "4.550518",
       "3.347707",
       "0.047344",
       "plus 0.065282"
      ],
      [
       "Pseudo-random, plain",
       "100,000",
       "4.486298",
       "6.551935",
       "0.020719",
       "plus 0.001062"
      ],
      [
       "Pseudo-random, antithetic",
       "100,000",
       "4.491230",
       "3.363438",
       "0.015042",
       "plus 0.005994"
      ],
      [
       "Pseudo-random, plain",
       "1,000,000",
       "4.490235",
       "6.536779",
       "0.006537",
       "plus 0.004999"
      ],
      [
       "Pseudo-random, antithetic",
       "1,000,000",
       "4.487653",
       "3.354441",
       "0.004744",
       "plus 0.002417"
      ]
     ]
    }
   ],
   "entries": [
    {
     "id": "bsm-inputs-and-where-each-enters",
     "term": "Black-Scholes-Merton: the six inputs and where each one enters",
     "definition": "The closed form takes six inputs and nothing else. Five are observable or contractual and one, sigma, is not. Every quoted implied volatility is the residual of that asymmetry: it is whatever number makes the other five reproduce the observed price.",
     "formula": "d1 = [ln(S/K) + (r - q + sigma^2/2)*T] / (sigma*sqrt(T));  d2 = d1 - sigma*sqrt(T)",
     "fields": [
      {
       "label": "S, underlying price",
       "value": "Enters only through ln(S/K), so the model is homogeneous of degree one in S and K together",
       "mono": false
      },
      {
       "label": "K, strike",
       "value": "Contractual. Enters through ln(S/K) and through the discounted term K*exp(-r*T)",
       "mono": false
      },
      {
       "label": "T, time to expiration in years",
       "value": "Enters as sqrt(T) inside the volatility scaling and as T inside the discounting and drift",
       "mono": false
      },
      {
       "label": "r, risk-free rate",
       "value": "Discounts the strike and sets the forward drift. Continuously compounded",
       "mono": false
      },
      {
       "label": "q, continuous dividend yield",
       "value": "Discounts the spot to a forward. Setting q = 0 recovers the 1973 Black-Scholes form",
       "mono": false
      },
      {
       "label": "sigma, volatility",
       "value": "The only input with no observable value. Everything called implied volatility is an inversion of this one number",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this site: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20. These are inputs chosen to make the arithmetic checkable, not observations of any market. At those inputs the call is 4.485236 and the put is 3.490220. d1 = [ln(1) + (0.04 - 0 + 0.02)*0.25] / (0.20*0.5) = 0.015 / 0.1 = 0.150000. d2 = 0.150000 - 0.100000 = 0.050000. N(d1) = 0.559617692, N(d2) = 0.519938810, exp(-r*T) = 0.990049834. Call = 100*0.559617692 - 100*0.990049834*0.519938810 = 55.9617692 - 51.4765328 = 4.485236409",
       "mono": true
      }
     ],
     "notes": [
      "Homogeneity in S and K is why a per-unit price computed at S = 1, K = 1 can be multiplied by S to price any at-the-money option of the same tenor. Forward-starting structures are priced entirely on that property.",
      "The drift term carries plus sigma-squared-over-two, which is why at-the-money d1 is positive and at-the-money call delta exceeds 0.50 even with zero rates.",
      "There is no volatility of volatility, no jump term and no skew anywhere in these six inputs. Everything the market does that the model cannot represent gets pushed into sigma, one strike at a time.",
      "The formula is the same at every strike. The reason a single sigma cannot reprice a whole expiration is not a defect in the arithmetic; it is that the process assumption is false and the arithmetic is faithfully reporting that."
     ],
     "source": "Black and Scholes 1973; Merton 1973"
    },
    {
     "id": "bsm-closed-form-with-yield",
     "term": "Black-Scholes-Merton closed forms with continuous dividend yield",
     "definition": "The European call and put values under geometric Brownian motion with a continuous proportional dividend yield q. Both are combinations of two digital-style terms and reduce to the 1973 Black-Scholes form at q = 0.",
     "formula": "C = S*exp(-q*T)*N(d1) - K*exp(-r*T)*N(d2);  P = K*exp(-r*T)*N(-d2) - S*exp(-q*T)*N(-d1)",
     "fields": [
      {
       "label": "Decomposition",
       "value": "C = AssetOrNothing(K) - K*CashOrNothing(K), where AssetOrNothing = S*exp(-q*T)*N(d1) and CashOrNothing = exp(-r*T)*N(d2)",
       "mono": true
      },
      {
       "label": "No-arbitrage bounds",
       "value": "max(S*exp(-q*T) - K*exp(-r*T), 0) is at most C, and C is at most S*exp(-q*T)",
       "mono": true
      },
      {
       "label": "Monotone in sigma",
       "value": "dC/dsigma = Vega is strictly positive, so the inversion for implied volatility has at most one solution",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this site: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20. These are inputs chosen to make the arithmetic checkable, not observations of any market. At those inputs the call is 4.485236 and the put is 3.490220. Call = 4.485236409, put = 3.490220. Cross-checks that hold at every sigma: C - P = 0.995017 = S*exp(-q*T) - K*exp(-r*T) to eight decimals. The digital decomposition: asset-or-nothing call = 55.961769, cash-or-nothing call = 0.514765, and 55.961769 - 100*0.514765 = 4.485236, recovering the call exactly. Lower bound at these inputs is 0.995017 and the upper bound is 100.000000, so 4.485236 sits inside them",
       "mono": true
      }
     ],
     "notes": [
      "The two terms are not the two halves of a probability. N(d2) is the risk-neutral probability of finishing in the money; N(d1) is a delta and a probability under a different measure. Reading either as a real-world chance is the single most common misuse of the formula.",
      "Every arbitrage bound above is checkable from a quote screen in one subtraction. A price outside them is a stale or crossed quote, not an opportunity.",
      "Put value is not monotone in r. The put term -K*T*exp(-r*T)*N(-d2) is negative, which is why a rate rise cheapens puts and is the mechanism behind interest-driven early exercise."
     ],
     "source": "Black and Scholes 1973; Merton 1973"
    },
    {
     "id": "bsm-assumptions-stated",
     "term": "The assumptions the closed form requires, and what each one being false costs",
     "definition": "The derivation requires continuous frictionless hedging in a market with a constant rate, a constant volatility, a lognormal price with no jumps, and no transaction costs or position limits. Each assumption maps to a specific, identifiable pricing error rather than to a general caveat.",
     "fields": [
      {
       "label": "Constant sigma",
       "value": "False by observation: implied volatility differs across strikes and expirations. Consequence is the surface, and the need for a local- or stochastic-volatility model to reprice it consistently",
       "mono": false
      },
      {
       "label": "No jumps",
       "value": "A jump breaks the delta hedge over the gap. Consequence is that a delta-hedged short option loses more than gamma predicts, because the loss is 0.5*Gamma*dS^2 with dS realised all at once",
       "mono": false
      },
      {
       "label": "Continuous hedging",
       "value": "Discrete rehedging leaves a residual whose variance grows with the rehedge interval. Consequence is hedging error that is zero-mean under the model and non-zero in cost once spreads are paid",
       "mono": false
      },
      {
       "label": "Constant r",
       "value": "Material only through rho, which grows roughly linearly in T. Consequence concentrates in long-dated contracts",
       "mono": false
      },
      {
       "label": "European exercise",
       "value": "American exercise adds a premium the closed form cannot express. Consequence is that put-call parity becomes an inequality",
       "mono": false
      },
      {
       "label": "Frictionless",
       "value": "Consequence is that the model produces one price and the market produces two, and the distance between them is measured in volatility points rather than in cents",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Discrete-hedging cost of the constant-sigma and continuous-hedging assumptions taken together, at Reference inputs used throughout this site: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20. These are inputs chosen to make the arithmetic checkable, not observations of any market. At those inputs the call is 4.485236 and the put is 3.490220. A one-point move rehedged once realises 0.5*Gamma*dS^2 = 0.5*0.039448*1 = 0.019724 per share, 1.97 per contract, against daily theta of 0.027257 per share, 2.73 per contract. The position needs 1.18 of movement per day to recover theta, since 0.5*0.039448*1.18^2 = 0.027464",
       "mono": true
      }
     ],
     "notes": [
      "The model is used as a quoting convention, not as a belief. A trader who says a strike is at 28 volatility is naming a price in a unit that removes S, K, T and r from the comparison.",
      "The assumption that is violated most and matters least is the constant rate. The assumption that is violated least and matters most is the absence of jumps.",
      "None of these are reasons to reject the arithmetic. They are the reasons the same arithmetic returns a different sigma at every strike."
     ],
     "source": "Black and Scholes 1973; Merton 1973"
    },
    {
     "id": "black76-futures",
     "term": "Black-76 for options on futures and forwards",
     "definition": "The forward-measure version of the same formula. It prices an option on a forward or futures price F directly, with no dividend yield and no spot, and discounts the whole payoff at the risk-free rate.",
     "formula": "C = exp(-r*T)*[F*N(d1) - K*N(d2)];  P = exp(-r*T)*[K*N(-d2) - F*N(-d1)];  d1 = [ln(F/K) + sigma^2*T/2]/(sigma*sqrt(T))",
     "fields": [
      {
       "label": "Equivalence to Black-Scholes-Merton",
       "value": "Setting F = S*exp((r - q)*T) makes Black-76 and the spot form identical at every strike",
       "mono": true
      },
      {
       "label": "Parity",
       "value": "C - P = exp(-r*T)*(F - K), with no spot and no dividend term",
       "mono": true
      },
      {
       "label": "Delta with respect to F",
       "value": "exp(-r*T)*N(d1), which is smaller than the spot delta by the discount factor",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "At Reference inputs used throughout this site: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20. These are inputs chosen to make the arithmetic checkable, not observations of any market. At those inputs the call is 4.485236 and the put is 3.490220. the forward is F = 100*exp(0.04*0.25) = 101.005017. Black-76 at K = 100 returns 4.485236409 for the call and 3.490220 for the put, matching the spot-form values to 1e-14. Black-76 parity: C - P = 0.995017 = exp(-0.01)*(101.005017 - 100). Forward-delta is exp(-0.01)*N(0.150000 adjusted for the forward) = 0.554049, and multiplying by dF/dS = exp(0.01) recovers the spot delta 0.559618 exactly. At K = 105 both forms return 2.390877",
       "mono": true
      }
     ],
     "notes": [
      "A futures option quoted at a given volatility and an equity option quoted at the same volatility are not the same exposure, because one has forward-delta and the other spot-delta. The difference is the discount factor and it is not negligible on a long-dated contract.",
      "Because there is no q, Black-76 is the natural form whenever the carry is already embedded in a traded forward. Trying to back a dividend yield out of a futures price and then use the spot form reintroduces an estimate that Black-76 never needed.",
      "The forward-delta is bounded by exp(-r*T), not by 1. A deep in-the-money futures call cannot have a delta of one."
     ],
     "source": "Black 1976"
    },
    {
     "id": "binomial-crr-parameterisation",
     "term": "Cox-Ross-Rubinstein binomial parameterisation",
     "definition": "A lattice in which the underlying multiplies by u or by d each step, with the risk-neutral probability chosen so that the one-step expected growth equals the carry. The parameterisation is not unique; this is the one that matches the first two moments of the log return.",
     "formula": "u = exp(sigma*sqrt(dt));  d = 1/u;  p = (exp((r - q)*dt) - d)/(u - d);  V = exp(-r*dt)*[p*V_up + (1 - p)*V_down]",
     "fields": [
      {
       "label": "Step size",
       "value": "dt = T/n for n steps",
       "mono": true
      },
      {
       "label": "Recombining property",
       "value": "u*d = 1, so the tree has n+1 terminal nodes rather than 2^n",
       "mono": true
      },
      {
       "label": "Terminal node j of n",
       "value": "S*u^j*d^(n-j) for j = 0..n",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "At Reference inputs used throughout this site: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20. These are inputs chosen to make the arithmetic checkable, not observations of any market. At those inputs the call is 4.485236 and the put is 3.490220. with n = 4: dt = 0.0625, u = exp(0.20*0.25) = 1.05127110, d = 0.95122942, p = (exp(0.0025) - 0.95122942)/(1.05127110 - 0.95122942) = 0.51252345. Rolling back gives 4.24592704 against the closed form 4.48523641, an error of minus 0.23930937. At n = 1024 the value is 4.48426301, an error of minus 0.00097340, and at n = 2048 it is 4.48474968, error minus 0.00048673 - the error halves as n doubles, which is first-order convergence",
       "mono": true
      }
     ],
     "notes": [
      "Error halves when n doubles, so the scheme is first-order in the number of steps. Getting one more correct decimal costs ten times the work, which is why lattices are used for early exercise and almost never for European values that have a closed form.",
      "The value oscillates as well as converging: at these inputs n = 1 overshoots by 0.98 and n = 2 undershoots by 0.45. Averaging n and n+1 is a cheap and standard way to kill most of the oscillation.",
      "p is a risk-neutral probability, not a forecast. It contains the carry and nothing about the direction anyone expects."
     ],
     "source": "Cox, Ross and Rubinstein 1979"
    },
    {
     "id": "binomial-trinomial-identity",
     "term": "The trinomial lattice and its exact relation to the binomial",
     "definition": "A lattice with three branches per step, up, middle and down, with the space step widened to sigma*sqrt(2*dt) so the probabilities remain admissible. Under the standard parameterisation it is not an independent method: it reproduces the binomial value at twice the number of steps, digit for digit.",
     "formula": "dx = sigma*sqrt(2*dt);  pu = [(exp((r-q)*dt/2) - exp(-sigma*sqrt(dt/2))) / (exp(sigma*sqrt(dt/2)) - exp(-sigma*sqrt(dt/2)))]^2;  pd = [(exp(sigma*sqrt(dt/2)) - exp((r-q)*dt/2)) / (exp(sigma*sqrt(dt/2)) - exp(-sigma*sqrt(dt/2)))]^2;  pm = 1 - pu - pd",
     "fields": [
      {
       "label": "Node count",
       "value": "2n+1 terminal nodes for n steps, against n+1 for the binomial",
       "mono": true
      },
      {
       "label": "Probabilities at the reference inputs, n = 32",
       "value": "pu = 0.25313513, pm = 0.49998046, pd = 0.24688440",
       "mono": true
      },
      {
       "label": "Measured identity",
       "value": "Trinomial(n) equals CRR(2n) at every n tested from 1 to 512, to all printed digits",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "At Reference inputs used throughout this site: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20. These are inputs chosen to make the arithmetic checkable, not observations of any market. At those inputs the call is 4.485236 and the put is 3.490220. the trinomial at n = 8 returns 4.42345524 and CRR at n = 16 returns 4.42345524. At n = 32 the trinomial returns 4.46969114 and CRR at n = 64 returns 4.46969114. The pattern held at every n checked. The practical consequence is that the trinomial buys accuracy per time step, not accuracy per unit of work, since 2n+1 nodes per level is roughly the same arithmetic as two binomial levels",
       "mono": true
      }
     ],
     "notes": [
      "The middle branch is what makes a trinomial useful in practice: a barrier or a strike can be placed exactly on a node layer, which removes the largest single source of lattice error for path-dependent payoffs.",
      "The identity with the binomial at 2n steps is specific to this parameterisation. Other choices of dx break it and are genuinely different schemes.",
      "Because pm is close to one half at small dt, most of the probability mass sits on the middle branch and the tree is doing less exploring per step than the node count suggests."
     ],
     "source": "Cox, Ross and Rubinstein 1979; Boyle 1986"
    },
    {
     "id": "binomial-probability-admissibility",
     "term": "The step-size bound that keeps the risk-neutral probability admissible",
     "definition": "The CRR probability p is not automatically between zero and one. It exceeds one when the carry over a step is larger than the up-move the volatility allows, which makes the lattice produce arbitrary values rather than a slightly wrong one.",
     "formula": "0 is less than p and p is less than 1 requires dt to be less than (sigma/(r - q))^2",
     "fields": [
      {
       "label": "Failure mode",
       "value": "p above 1 gives negative weight to the down node and the rolled-back value is not a discounted expectation of anything",
       "mono": false
      },
      {
       "label": "Bound at sigma = 0.20",
       "value": "r - q = 0.04 allows dt up to 25 years; r - q = 0.50 allows 0.160000 years, 58.40 days; r - q = 1.00 allows 0.040000 years, 14.60 days",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "At sigma = 0.20 and r - q = 0.50 with T = 0.25: n = 1 gives dt = 0.25 and p = 1.139655, outside the range. n = 2 gives dt = 0.125 and p = 0.937995, admissible. At r - q = 1.00, n = 1, 2 and 4 all give p above one, at 1.892784, 1.423047 and 1.132179 respectively, and only n at 7 or more brings dt below the 0.040000 bound",
       "mono": true
      }
     ],
     "notes": [
      "The bound is almost never binding at ordinary equity rates and volatilities, and is routinely binding on a low-volatility name in a high-carry currency or on a heavily shorted stock where the effective carry is large and negative.",
      "A lattice that silently returns a value with p outside zero and one is the worst kind of numerical failure: the answer looks like a price. Check p once at construction rather than trusting the value.",
      "Widening the tree, as the trinomial does, is one fix. Reducing dt is the other. Both cost work."
     ],
     "source": "Cox, Ross and Rubinstein 1979"
    },
    {
     "id": "american-in-a-lattice",
     "term": "American exercise in a binomial lattice",
     "definition": "At each node the value is the larger of the discounted continuation value and the immediate exercise value. That single comparison is the entire American feature; nothing else in the roll-back changes.",
     "formula": "V_node = max( exp(-r*dt)*[p*V_up + (1-p)*V_down], Intrinsic(S_node) )",
     "fields": [
      {
       "label": "American premium",
       "value": "Value with the comparison minus value without it, at the same n",
       "mono": true
      },
      {
       "label": "Convergence of the premium",
       "value": "Slower than the European value, because the exercise boundary is itself resolved only to the lattice grid",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "American put at Reference inputs used throughout this site: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20. These are inputs chosen to make the arithmetic checkable, not observations of any market. At those inputs the call is 4.485236 and the put is 3.490220. European value 3.490220. CRR with the exercise comparison: n = 50 gives 3.56022411, n = 200 gives 3.56895928, n = 1000 gives 3.57125335, n = 4000 gives 3.57167665. The premium therefore converges to about 0.0815 per share, 8.15 per contract, or 2.33 percent of the European value. American call at q = 0 returns 4.48498720 against a European 4.48523641 at n = 4000, a difference of 0.00025 which is lattice error and not an early-exercise premium: with no dividend there is none",
       "mono": true
      }
     ],
     "notes": [
      "With q = 0 an American call has no early-exercise premium, so any positive number a lattice reports for one is discretisation error. Reporting it as a premium is a common and avoidable mistake.",
      "The American put premium is driven entirely by the interest on the strike proceeds. It grows with r, with T and with how far in the money the strike sits.",
      "Because the boundary sits on the lattice, the premium converges more slowly than the value. Doubling n to sharpen an American premium is often necessary where it would be wasteful for a European value."
     ],
     "source": "Cox, Ross and Rubinstein 1979"
    },
    {
     "id": "exercise-boundary-from-a-lattice",
     "term": "The early-exercise boundary read off a lattice",
     "definition": "The critical underlying price at each date below which an American put is exercised immediately. It is not an input to the lattice; it is recovered by recording, at each time step, the highest node price at which exercise beat continuation.",
     "formula": "S*(t) = max{ S_node at time t : Intrinsic(S_node) is at least the continuation value }",
     "fields": [
      {
       "label": "Shape",
       "value": "Monotonically rising in t toward the strike, meeting K exactly at expiration",
       "mono": false
      },
      {
       "label": "At expiration",
       "value": "S*(T) = K, since continuation value is zero",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "American put at Reference inputs used throughout this site: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20. These are inputs chosen to make the arithmetic checkable, not observations of any market. At those inputs the call is 4.485236 and the put is 3.490220. CRR with n = 1000 steps, dt = 0.000250. Critical price at t = 0.025 is 86.4620; at t = 0.0625 it is 87.0106; at t = 0.125 it is 88.6773; at t = 0.1875 it is 90.9493; at t = 0.225 it is 93.8713; at t = 0.2475 it is 97.5019; at t = 0.24975 it is 99.6843. The boundary rises 13.2 points over the life and covers the last 6 of that in the final three trading days",
       "mono": true
      }
     ],
     "notes": [
      "The boundary is steepest at the very end. Most of the early-exercise decision compresses into the final days, which is also when the lattice resolves it worst.",
      "A position that sits above the boundary at 87 with the underlying at 100 is nowhere near exercise, and the same position with the underlying at 92 two days before expiry is on it. The distance to the boundary, not the distance to the strike, is the relevant number.",
      "For an American call on a dividend-paying underlying the boundary exists only in the interval immediately before an ex-dividend date, and is a single-date test rather than a continuous curve."
     ],
     "source": "Cox, Ross and Rubinstein 1979"
    },
    {
     "id": "bjerksund-stensland-approximation",
     "term": "Bjerksund-Stensland approximation for an American option",
     "definition": "A closed-form approximation that replaces the true curved exercise boundary with a flat trigger level X, chosen from the model inputs, and prices the option as a combination of six power-and-normal terms. It is an approximation with a measurable gap to a converged lattice, not an exact value.",
     "formula": "beta = (0.5 - b/sigma^2) + sqrt((b/sigma^2 - 0.5)^2 + 2*r/sigma^2), with b = r - q;  Binf = beta/(beta - 1)*K;  B0 = max(K, r/(r - b)*K);  X = B0 + (Binf - B0)*(1 - exp(h)),  h = -(b*T + 2*sigma*sqrt(T))*B0/(Binf - B0)",
     "fields": [
      {
       "label": "Applies to",
       "value": "An American call with b = r - q below r. American puts are priced by the transformation P(S,K,r,b) = C(K,S,r-b,-b)",
       "mono": true
      },
      {
       "label": "Degenerate case",
       "value": "At q = 0 there is no early-exercise premium on a call and the formula returns the European value exactly",
       "mono": true
      },
      {
       "label": "Published benchmark reproduced",
       "value": "S = 42, K = 40, T = 0.75, r = 0.04, q = 0.08, sigma = 0.35 returns 5.270404, matching the value published for this case to six figures",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "American call at S = 100, K = 100, T = 0.25, r = 0.04, sigma = 0.20, q = 0.06 so b = minus 0.02. European value 3.696260. The approximation returns 3.719873. A CRR lattice with the exercise comparison returns 3.739858 at n = 500 and 3.741151 at n = 8000, so the approximation understates the converged lattice by 0.021278, which is 0.57 percent of the value and 47 percent of the early-exercise premium. At q = 0.10 the approximation returns 3.317712 against a lattice value of 3.370388, a gap of 0.052676. At q = 0 it returns 4.485236409, exactly the European value",
       "mono": true
      }
     ],
     "notes": [
      "The gap to the lattice grows with the size of the early-exercise premium, which is the case the approximation exists to handle. Quoting it to four decimals implies an accuracy it does not have.",
      "The 2002 two-step version splits the boundary into two flat segments and is materially more accurate than the 1993 single-boundary form worked above. If the premium matters, that is the version to use.",
      "Its real advantage is that it is a formula, so it differentiates analytically and evaluates in constant time. A lattice cannot do either, which is why the approximation survives despite the error shown here."
     ],
     "source": "Bjerksund and Stensland 1993; Bjerksund and Stensland 2002"
    },
    {
     "id": "monte-carlo-estimator-and-error",
     "term": "Monte Carlo estimator and the standard error of the estimate",
     "definition": "Simulate terminal prices under the risk-neutral measure, discount the payoff of each, and average. The estimate is unbiased and its uncertainty is a computable standard error that falls with the square root of the sample size, so a further correct decimal costs one hundred times the paths.",
     "formula": "S_T = S*exp((r - q - sigma^2/2)*T + sigma*sqrt(T)*z);  Estimate = (1/n)*sum of exp(-r*T)*Payoff(S_T^i);  SE = s_hat/sqrt(n), s_hat the sample standard deviation of the discounted payoffs",
     "fields": [
      {
       "label": "Convergence rate",
       "value": "SE proportional to n^(-1/2), independent of the payoff and of the number of dimensions",
       "mono": true
      },
      {
       "label": "Paths for a target SE",
       "value": "n = (s_hat/SE_target)^2",
       "mono": true
      },
      {
       "label": "Confidence interval",
       "value": "Estimate plus or minus 1.96*SE for a nominal 95 percent interval, valid by the central limit theorem, not by any property of the option",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "European call at Reference inputs used throughout this site: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20. These are inputs chosen to make the arithmetic checkable, not observations of any market. At those inputs the call is 4.485236 and the put is 3.490220. Plain pseudo-random sampling, seed 20260827: at n = 10,000 the estimate is 4.449312 with sample s.d. 6.486307, so SE = 6.486307/100 = 0.064863 and the true value sits 0.55 standard errors away. At n = 100,000 the estimate is 4.486298 with SE 0.020719. At n = 1,000,000 it is 4.490235 with SE 0.006537. To reach an SE of 0.001 at this sample s.d. requires n = (6.54/0.001)^2, about 42.8 million paths",
       "mono": true
      }
     ],
     "notes": [
      "The standard error is a statement about the simulation, not about the option. A tight standard error on a mis-specified process is a precise wrong answer.",
      "Sample standard deviation of a call payoff is dominated by the right tail, so it is roughly 1.5 times the option value at the money and far larger for a wing. Budgeting paths from the value rather than from s_hat understates the requirement badly.",
      "Never quote a Monte Carlo price without its standard error. A price of 4.45 and a price of 4.49 are the same number when the standard error is 0.065."
     ]
    },
    {
     "id": "antithetic-variates",
     "term": "Antithetic variates and the measured variance reduction",
     "definition": "Pair every normal draw z with its negation and average the two payoffs before averaging across pairs. The estimator stays unbiased, the number of normal draws is unchanged, and the variance falls because the paired payoffs are negatively correlated.",
     "formula": "Estimate = (2/n)*sum over n/2 pairs of 0.5*[Payoff(z_i) + Payoff(-z_i)]",
     "fields": [
      {
       "label": "Why it works",
       "value": "Var of the average of two negatively correlated variables is below the variance of either, and the payoff is monotone in z, which guarantees the correlation is negative",
       "mono": false
      },
      {
       "label": "Measured effect",
       "value": "Standard error ratio 0.7257 and variance ratio 0.2633 at one million draws, so about a 27 percent reduction in standard error for no extra draws",
       "mono": true
      },
      {
       "label": "Equivalent path saving",
       "value": "A 27 percent standard-error reduction is worth a factor of 1/0.7257^2, about 1.9 times the paths",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Same call and seed 20260827. At 10,000 draws: plain sample s.d. 6.486307 and SE 0.064863; antithetic sample s.d. 3.347707 over 5,000 pairs and SE 0.047344, a ratio of 0.7299. At 100,000 draws the SE ratio is 0.7260. At 1,000,000 draws it is 0.7257 with a variance ratio of 0.2633. The ratio is stable, which is what a variance-reduction technique should look like",
       "mono": true
      }
     ],
     "notes": [
      "The reduction is real but modest, and it is not free on a path-dependent payoff, where the antithetic path must be regenerated rather than reused.",
      "Antithetic variates help most where the payoff is close to linear in z and least where it is close to a digital, because a digital payoff is nearly uncorrelated with its own reflection.",
      "A control variate on the same underlying, using the closed-form European value as the control, usually beats antithetics by a wide margin on a European-style payoff. Antithetics are the cheapest thing to add, not the strongest."
     ]
    },
    {
     "id": "stratified-deterministic-sampling",
     "term": "Deterministic stratified sampling, and why a published Monte Carlo figure should use it",
     "definition": "Replace pseudo-random draws with the inverse normal evaluated at the midpoints of n equal-probability strata. The result is fully deterministic, so it is reproducible by any reader without agreeing on a random number generator, and it converges far faster than pseudo-random sampling on a one-dimensional payoff.",
     "formula": "z_i = Phi_inverse((i - 0.5)/n) for i = 1..n;  Estimate = (1/n)*sum of exp(-r*T)*Payoff(S*exp((r - q - sigma^2/2)*T + sigma*sqrt(T)*z_i))",
     "fields": [
      {
       "label": "Reproducibility",
       "value": "No seed, no generator, no library dependence. The same n gives the same number on any machine",
       "mono": false
      },
      {
       "label": "Measured convergence",
       "value": "Error falls by roughly a factor of ten per factor of ten in n at these inputs, against a factor of about three for pseudo-random sampling",
       "mono": true
      },
      {
       "label": "Limitation",
       "value": "The advantage is a one-dimensional effect. It degrades as the number of independent normal draws per path grows",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "European call at Reference inputs used throughout this site: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20. These are inputs chosen to make the arithmetic checkable, not observations of any market. At those inputs the call is 4.485236 and the put is 3.490220. Stratified midpoint estimates: n = 10 gives 4.32466075, error minus 0.16057566; n = 100 gives 4.47126008, error minus 0.01397633; n = 1,000 gives 4.48396632, error minus 0.00127009; n = 10,000 gives 4.48511797, error minus 0.00011844; n = 100,000 gives 4.48522517, error minus 0.00001124. The pseudo-random estimator at 100,000 draws has a standard error of 0.020719, so the stratified estimate at the same n is about 1,800 times more accurate on this payoff",
       "mono": true
      }
     ],
     "notes": [
      "The inverse normal used here is the Acklam rational approximation, verified to within 2.7e-10 by round-tripping N(Phi_inverse(u)) against u across a ten-thousand-point grid.",
      "Any Monte Carlo number published as a reference figure and not reproducible without a seed is not a reference figure. Stratification removes the excuse.",
      "On a genuinely high-dimensional payoff, a low-discrepancy sequence with a Brownian bridge construction is the equivalent move, and it keeps the reproducibility."
     ]
    },
    {
     "id": "finite-difference-schemes",
     "term": "Finite-difference schemes: explicit, implicit and Crank-Nicolson",
     "definition": "Discretise the Black-Scholes partial differential equation on a grid in log-price and time and step backwards from the payoff. The three standard schemes differ in where the space derivatives are evaluated in time, and that single choice determines both stability and accuracy order.",
     "formula": "In x = ln(S): dV/dt + 0.5*sigma^2*d2V/dx2 + (r - q - sigma^2/2)*dV/dx - r*V = 0. Discretised: (I - theta*dt*L)*V_new = (I + (1 - theta)*dt*L)*V_old, with theta = 0 explicit, theta = 1 implicit, theta = 0.5 Crank-Nicolson",
     "fields": [
      {
       "label": "Explicit, theta = 0",
       "value": "No linear solve. Conditionally stable. Accuracy first order in dt",
       "mono": false
      },
      {
       "label": "Implicit, theta = 1",
       "value": "One tridiagonal solve per step. Unconditionally stable. Accuracy first order in dt",
       "mono": false
      },
      {
       "label": "Crank-Nicolson, theta = 0.5",
       "value": "One tridiagonal solve per step. Unconditionally stable. Accuracy second order in dt",
       "mono": false
      },
      {
       "label": "American exercise",
       "value": "Project the value onto the payoff after each step, which turns the scheme into a linear complementarity solver",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "European call at Reference inputs used throughout this site: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20. These are inputs chosen to make the arithmetic checkable, not observations of any market. At those inputs the call is 4.485236 and the put is 3.490220. closed form 4.485236409, grid to plus and minus five standard deviations. At M = 400 space steps and Nt = 1600 time steps: explicit 4.48523847, error plus 2.06e-06; implicit 4.48461107, error minus 6.25e-04; Crank-Nicolson 4.48492481, error minus 3.12e-04. At M = 200, Nt = 100 the explicit scheme diverges to minus 2.2e+81 while implicit returns 4.47896828 and Crank-Nicolson 4.48400038. Independent check on a barrier payoff: Crank-Nicolson with an absorbing boundary reproduces the closed-form down-and-out call at H = 90 to within 2.3e-06 at M = Nt = 3200",
       "mono": true
      }
     ],
     "notes": [
      "Crank-Nicolson is second order in time but oscillates near a kink in the payoff, which at expiry is exactly at the strike. Two fully implicit steps at the start, the Rannacher smoothing, is the standard fix and costs almost nothing.",
      "Grid truncation is a separate error from discretisation. A boundary placed at three standard deviations rather than five will dominate the error no matter how fine the grid.",
      "The implicit scheme is the only one of the three that never blows up, which is why it is what you reach for when the inputs are unknown at build time."
     ]
    },
    {
     "id": "explicit-scheme-stability",
     "term": "The explicit-scheme stability condition, and what violating it actually does",
     "definition": "The explicit scheme is stable only while the dimensionless quantity sigma-squared times dt over dx-squared stays at or below one. Above that the scheme does not become inaccurate; it amplifies rounding error geometrically and returns a number with no relation to a price.",
     "formula": "Stability requires sigma^2*dt/dx^2 to be at most 1, equivalently dt at most dx^2/sigma^2",
     "fields": [
      {
       "label": "Equivalent probability reading",
       "value": "The explicit step is a three-point weighted average; the condition is exactly the condition that all three weights stay non-negative",
       "mono": false
      },
      {
       "label": "Consequence of violation",
       "value": "Error grows by a factor of order the ratio each step, so it is not a small mistake at any grid size",
       "mono": false
      },
      {
       "label": "Cost of compliance",
       "value": "Halving dx forces dt to fall by four, so total work grows with the cube of the space refinement",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Same call and grid. dx = 0.005050 at M = 200. The bound gives dt at most 0.005050^2/0.04 = 0.000638 years, so Nt must be at least T/0.000638 = 392 steps. Measured: Nt = 400 gives ratio 0.9803 and a value of 4.48524380, error plus 7.40e-06. Nt = 100 gives ratio 3.9212 and a value of minus 2.2e+81. Nt = 20 gives ratio 19.6059 and minus 7.1e+29. The implicit and Crank-Nicolson schemes on the identical grids return 4.47896828 and 4.48400038 at Nt = 100, both usable",
       "mono": true
      }
     ],
     "notes": [
      "A divergent explicit run is easy to spot because the answer is absurd. The dangerous case is a ratio slightly above one on a coarse grid, where the answer is merely wrong by a plausible-looking amount.",
      "Check the ratio at construction and refuse to run rather than checking the output for reasonableness. The condition is one line of arithmetic and it is a hard boundary, not a guideline.",
      "This is the reason the explicit scheme is rare in production despite being the simplest to write: its accuracy is competitive only on grids where the time-step count is already dictated by stability rather than by accuracy."
     ]
    },
    {
     "id": "american-parity-inequality",
     "term": "Put-call parity for American options is an inequality",
     "definition": "European parity is an identity because neither side can be exercised early. With American exercise the relationship becomes a two-sided bound, and the width of that band is the combined early-exercise value. Any claim of an arbitrage from an American call-put difference has to clear the band, not the identity.",
     "formula": "S - K is at most C_A - P_A, and C_A - P_A is at most S - K*exp(-r*T), for a non-dividend-paying underlying",
     "fields": [
      {
       "label": "Band width",
       "value": "K - K*exp(-r*T) = K*(1 - exp(-r*T)), the interest on the strike over the remaining life",
       "mono": true
      },
      {
       "label": "With a dividend yield",
       "value": "The lower bound becomes S*exp(-q*T) - K and the band widens by the dividend term",
       "mono": true
      },
      {
       "label": "European limit",
       "value": "C - P equals the upper bound exactly, which is the identity",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "At Reference inputs used throughout this site: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20. These are inputs chosen to make the arithmetic checkable, not observations of any market. At those inputs the call is 4.485236 and the put is 3.490220. the band is 100 - 100 = 0.000000 at the bottom and 100 - 100*exp(-0.01) = 0.995017 at the top, so it is 0.995017 wide. A CRR lattice at n = 4000 gives C_A = 4.484987 and P_A = 3.571677, so C_A - P_A = 0.913311, which sits inside the band at 91.8 percent of the way up it. The European difference is 0.995017, exactly the upper bound. The gap between the American difference and the upper bound, 0.081706, is the American put premium computed independently as 0.081457 at n = 4000 - the residual 0.000249 is lattice error on the call",
       "mono": true
      }
     ],
     "notes": [
      "The band is narrow at short tenors and low rates and wide at long tenors and high rates. On a one-week contract it is close enough to an identity to use as a data check; on a two-year contract it is not.",
      "Observed American call-put differences on listed equity options sit inside this band almost always, and when they do not the explanation is normally borrow cost or an unmodelled dividend rather than a tradable arbitrage.",
      "The lower bound is the interesting one. It says the American difference can never fall below immediate intrinsic, which is a statement about the put being exercisable, not about the call."
     ]
    }
   ]
  },
  {
   "slug": "greeks",
   "title": "Greeks",
   "lede": "First and second-order sensitivities, with closed-form Black-Scholes-Merton expressions.",
   "intro": "N() is the standard normal cumulative distribution function and phi() its density. Definitions below assume the Black-Scholes-Merton framework with continuous dividend yield q. Quoting conventions differ from mathematical definitions and are stated separately for each measure, because that mismatch is a common source of error.",
   "tables": [
    {
     "title": "Black-Scholes-Merton inputs",
     "columns": [
      "Term",
      "Expression"
     ],
     "rows": [
      [
       "d1",
       "[ln(S/K) + (r - q + sigma^2/2)*T] / (sigma*sqrt(T))"
      ],
      [
       "d2",
       "d1 - sigma*sqrt(T)"
      ],
      [
       "Call value",
       "S*exp(-q*T)*N(d1) - K*exp(-r*T)*N(d2)"
      ],
      [
       "Put value",
       "K*exp(-r*T)*N(-d2) - S*exp(-q*T)*N(-d1)"
      ]
     ]
    },
    {
     "title": "Sensitivities",
     "columns": [
      "Greek",
      "Definition",
      "Call",
      "Put",
      "Quoted as"
     ],
     "rows": [
      [
       "Delta",
       "dV/dS",
       "exp(-q*T)*N(d1)",
       "exp(-q*T)*(N(d1) - 1)",
       "Per 1.00 move in S. Range 0 to 1 for calls, -1 to 0 for puts."
      ],
      [
       "Gamma",
       "d2V/dS2",
       "exp(-q*T)*phi(d1) / (S*sigma*sqrt(T))",
       "Identical to call",
       "Change in delta per 1.00 move in S."
      ],
      [
       "Vega",
       "dV/dsigma",
       "S*exp(-q*T)*phi(d1)*sqrt(T)",
       "Identical to call",
       "Usually divided by 100 and quoted per 1 volatility point."
      ],
      [
       "Theta",
       "dV/dt",
       "Negative for long options, largest near ATM at expiry",
       "Same sign convention",
       "Usually divided by 365 and quoted per calendar day."
      ],
      [
       "Rho",
       "dV/dr",
       "K*T*exp(-r*T)*N(d2)",
       "-K*T*exp(-r*T)*N(-d2)",
       "Usually divided by 100 and quoted per 1 percentage point."
      ]
     ]
    },
    {
     "title": "Reference Greeks at fixed inputs, verified",
     "intro": "Computed at S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25 from the closed forms above. Per-share figures; multiply by 100 for one standard contract. Vega is stated per one volatility point and theta per calendar day, matching quoting convention rather than the raw derivative. These are chosen inputs, not market observations.",
     "columns": [
      "Strike",
      "d1",
      "d2",
      "Call",
      "Put",
      "Delta call",
      "Delta put",
      "Gamma",
      "Vega/pt",
      "Theta call/day",
      "Theta put/day",
      "Rho call/pt"
     ],
     "rows": [
      [
       "95",
       "0.662933",
       "0.562933",
       "7.5459",
       "1.6006",
       "0.746313",
       "-0.253687",
       "0.032024",
       "0.160121",
       "-0.024899",
       "-0.014592",
       "0.167714"
      ],
      [
       "100",
       "0.150000",
       "0.050000",
       "4.4852",
       "3.4902",
       "0.559618",
       "-0.440382",
       "0.039448",
       "0.197240",
       "-0.027257",
       "-0.016407",
       "0.128691"
      ],
      [
       "105",
       "-0.337902",
       "-0.437902",
       "2.3909",
       "6.3461",
       "0.367719",
       "-0.632281",
       "0.037681",
       "0.188403",
       "-0.024415",
       "-0.013022",
       "0.085952"
      ]
     ]
    },
    {
     "title": "Position Greeks worked across multi-leg structures",
     "intro": "Same inputs. One contract per leg, multiplier 100. Delta in share-equivalents, gamma in delta per 1.00 move, vega in dollars per volatility point, theta in dollars per calendar day. Each row is the signed sum of its legs and nothing else.",
     "columns": [
      "Position",
      "Value",
      "Position delta",
      "Position gamma",
      "Position vega",
      "Position theta"
     ],
     "rows": [
      [
       "Long 100 call",
       "+448.52",
       "+55.96",
       "+3.945",
       "+19.72",
       "-2.726"
      ],
      [
       "Short 100 call",
       "-448.52",
       "-55.96",
       "-3.945",
       "-19.72",
       "+2.726"
      ],
      [
       "Long 100 straddle",
       "+797.55",
       "+11.92",
       "+7.890",
       "+39.45",
       "-4.366"
      ],
      [
       "Bull call spread 100/105",
       "+209.44",
       "+19.19",
       "+0.177",
       "+0.884",
       "-0.284"
      ],
      [
       "Iron condor 90/95/105/110",
       "n/a, credit position",
       "-1.74",
       "-2.147",
       "-10.74",
       "+1.171"
      ],
      [
       "10 short 100 calls, delta-hedged with 560 shares",
       "n/a",
       "+0.38",
       "-39.45",
       "-197.24",
       "+27.26"
      ]
     ]
    },
    {
     "title": "Second- and third-order Greeks in closed form",
     "intro": "Every expression below was verified against a central finite difference of the corresponding first-order Greek at the reference inputs; the largest disagreement across all of them was 1.2e-07, on ultima, which is third order and therefore the noisiest to difference numerically. Charm, veta and colour are stated as derivatives with respect to calendar time t, so a positive number means the quantity increases as time passes. Vega and its derivatives are raw, not divided by 100.",
     "columns": [
      "Greek",
      "Definition",
      "Closed form",
      "Identical for a call and a put"
     ],
     "rows": [
      [
       "Vanna",
       "d2V / (dS dsigma)",
       "minus exp(-q*T)*phi(d1)*d2/sigma",
       "Yes"
      ],
      [
       "Volga, also vomma",
       "d2V / dsigma^2",
       "Vega*d1*d2/sigma",
       "Yes"
      ],
      [
       "Charm",
       "d2V / (dS dt), the drift of delta with time",
       "Call: q*exp(-q*T)*N(d1) minus exp(-q*T)*phi(d1)*[2*(r-q)*T minus d2*sigma*sqrt(T)] / (2*T*sigma*sqrt(T)). Put: same second term, with minus q*exp(-q*T)*N(-d1) in place of the first",
       "Only when q = 0"
      ],
      [
       "Veta",
       "dVega / dt, the drift of vega with time",
       "S*exp(-q*T)*phi(d1)*sqrt(T)*[q + (r-q)*d1/(sigma*sqrt(T)) minus (1 + d1*d2)/(2*T)]",
       "Yes"
      ],
      [
       "Speed",
       "d3V / dS^3",
       "minus (Gamma/S)*(1 + d1/(sigma*sqrt(T)))",
       "Yes"
      ],
      [
       "Zomma",
       "dGamma / dsigma",
       "Gamma*(d1*d2 minus 1)/sigma",
       "Yes"
      ],
      [
       "Colour, also color",
       "dGamma / dt",
       "Gamma*[q + (r-q)*d1/(sigma*sqrt(T)) + (1 minus d1*d2)/(2*T)]",
       "Yes"
      ],
      [
       "Ultima",
       "d3V / dsigma^3",
       "minus (Vega/sigma^2)*[d1*d2*(1 minus d1*d2) + d1^2 + d2^2]",
       "Yes"
      ],
      [
       "Dual delta",
       "dV / dK",
       "Call: minus exp(-r*T)*N(d2). Put: exp(-r*T)*N(-d2)",
       "No"
      ],
      [
       "Dual gamma",
       "d2V / dK^2",
       "exp(-r*T)*phi(d2)/(K*sigma*sqrt(T))",
       "Yes"
      ]
     ]
    },
    {
     "title": "Second- and third-order Greeks at the reference inputs, verified",
     "intro": "S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. Per-share figures, raw units, computed from the closed forms above and cross-checked against finite differences. Charm is the call figure; at q = 0 the put figure is identical, because the difference between call and put delta is the constant exp(-q*T) and its time derivative is zero.",
     "columns": [
      "Strike",
      "Vanna",
      "Volga",
      "Charm",
      "Veta",
      "Speed",
      "Zomma",
      "Colour",
      "Ultima",
      "Dual delta, call",
      "Dual gamma"
     ],
     "rows": [
      [
       "95",
       "minus 0.901374",
       "29.877514",
       "plus 0.232453",
       "minus 39.729219",
       "minus 0.002443",
       "minus 0.100366",
       "plus 0.048638",
       "minus 396.416260",
       "minus 0.706163",
       "0.035484"
      ],
      [
       "100",
       "minus 0.098620",
       "0.739649",
       "minus 0.118344",
       "minus 38.560355",
       "minus 0.000986",
       "minus 0.195760",
       "plus 0.080671",
       "minus 15.997986",
       "minus 0.514765",
       "0.039448"
      ],
      [
       "105",
       "plus 0.825018",
       "13.938743",
       "minus 0.480729",
       "minus 45.802465",
       "plus 0.000896",
       "minus 0.160525",
       "plus 0.059117",
       "minus 203.478793",
       "minus 0.327438",
       "0.034177"
      ]
     ]
    },
    {
     "title": "Position Greeks by structure at the reference inputs, verified",
     "intro": "Every leg valued from Black-Scholes-Merton at S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25, one contract per leg, multiplier 100. These are model values at chosen inputs, not the stated premiums used in the payoff worked examples elsewhere on this site, so the value column will not match those dollar figures. Delta is in share-equivalents, gamma in delta per 1.00 move, vega in dollars per volatility point, theta in dollars per calendar day. Each row is the signed sum of its legs and nothing else.",
     "columns": [
      "Structure",
      "Value",
      "Position delta",
      "Position gamma",
      "Position vega per point",
      "Position theta per day"
     ],
     "rows": [
      [
       "Long 100 call",
       "plus 448.52",
       "plus 55.96",
       "plus 3.9448",
       "plus 19.7240",
       "minus 2.7257"
      ],
      [
       "Long 100 put",
       "plus 349.02",
       "minus 44.04",
       "plus 3.9448",
       "plus 19.7240",
       "minus 1.6407"
      ],
      [
       "Long 100 straddle",
       "plus 797.55",
       "plus 11.92",
       "plus 7.8896",
       "plus 39.4479",
       "minus 4.3663"
      ],
      [
       "Short 95/105 strangle",
       "minus 399.15",
       "minus 11.40",
       "minus 6.9705",
       "minus 34.8523",
       "plus 3.9007"
      ],
      [
       "Bull call spread 100/105",
       "plus 209.44",
       "plus 19.19",
       "plus 0.1767",
       "plus 0.8837",
       "minus 0.2842"
      ],
      [
       "Bear call spread 100/105",
       "minus 209.44",
       "minus 19.19",
       "minus 0.1767",
       "minus 0.8837",
       "plus 0.2842"
      ],
      [
       "Bull put spread 95/100",
       "minus 188.96",
       "plus 18.67",
       "minus 0.7424",
       "minus 3.7119",
       "plus 0.1815"
      ],
      [
       "Long 95/100/105 call butterfly",
       "plus 96.63",
       "minus 0.52",
       "minus 0.9191",
       "minus 4.5956",
       "plus 0.5199"
      ],
      [
       "Iron butterfly 95/100/105",
       "minus 398.40",
       "minus 0.52",
       "minus 0.9191",
       "minus 4.5956",
       "plus 0.4657"
      ],
      [
       "Iron condor 90/95/105/110",
       "minus 226.96",
       "minus 1.74",
       "minus 2.1473",
       "minus 10.7364",
       "plus 1.1708"
      ],
      [
       "Long call condor 90/95/105/110",
       "plus 268.07",
       "minus 1.74",
       "minus 2.1473",
       "minus 10.7364",
       "plus 1.2251"
      ],
      [
       "Call ratio 1x2 100/105",
       "minus 29.65",
       "minus 17.58",
       "minus 3.5913",
       "minus 17.9565",
       "plus 2.1573"
      ],
      [
       "Collar, long 100 shares plus 95 put minus 105 call",
       "minus 79.03 on the options",
       "plus 37.86",
       "minus 0.5656",
       "minus 2.8282",
       "plus 0.9823"
      ],
      [
       "Box spread 100/110",
       "plus 990.05",
       "0.00",
       "0.0000",
       "0.0000",
       "plus 0.1085"
      ],
      [
       "Jade lizard 90p/105c/110c",
       "minus 183.20",
       "minus 4.24",
       "minus 2.8118",
       "minus 14.0590",
       "plus 1.5671"
      ]
     ]
    },
    {
     "title": "Profit and loss attribution on one reprice, term by term",
     "intro": "Long one K = 100 call. The move: S from 100 to 102, sigma from 0.20 to 0.22, and 7 calendar days elapse, so T goes from 0.25 to 0.230822. Value moves from 4.485236409 to 5.855752, an actual change of plus 1.370515 per share, plus 137.05 per contract. Terms are added in the order shown and the residual column is what is still unexplained after each one. Every figure recomputed.",
     "columns": [
      "Term",
      "Expression",
      "Contribution per share",
      "Cumulative",
      "Residual"
     ],
     "rows": [
      [
       "Delta",
       "Delta*dS = 0.559618*2.00",
       "plus 1.11923538",
       "plus 1.11923538",
       "plus 0.25127974"
      ],
      [
       "Gamma",
       "0.5*Gamma*dS^2 = 0.5*0.039448*4.00",
       "plus 0.07889587",
       "plus 1.19813125",
       "plus 0.17238388"
      ],
      [
       "Speed",
       "Speed*dS^3/6",
       "minus 0.00131493",
       "plus 1.19681632",
       "plus 0.17369881"
      ],
      [
       "Vega",
       "Vega*dsigma = 19.723967*0.02",
       "plus 0.39447933",
       "plus 1.59129565",
       "minus 0.22078052"
      ],
      [
       "Volga",
       "0.5*Volga*dsigma^2",
       "plus 0.00014793",
       "plus 1.59144358",
       "minus 0.22092845"
      ],
      [
       "Theta",
       "Theta*dt = minus 9.948648*0.019178",
       "minus 0.19079599",
       "plus 1.40064759",
       "minus 0.03013246"
      ],
      [
       "Vanna",
       "Vanna*dS*dsigma",
       "minus 0.00394479",
       "plus 1.39670280",
       "minus 0.02618767"
      ],
      [
       "Charm",
       "Charm*dS*dt",
       "minus 0.00453921",
       "plus 1.39216359",
       "minus 0.02164846"
      ],
      [
       "Veta",
       "Veta*dsigma*dt",
       "minus 0.01479027",
       "plus 1.37737331",
       "minus 0.00685818"
      ]
     ]
    }
   ],
   "entries": [
    {
     "id": "gamma-put-call-identity",
     "term": "Gamma and vega are identical for calls and puts",
     "definition": "For the same strike, expiration, and underlying, a call and a put have identical gamma and identical vega. Only delta, theta, and rho differ. This follows directly from put-call parity, in which the difference between call and put value is linear in S and therefore has zero second derivative and no volatility sensitivity.",
     "notes": [
      "Practical consequence: a long straddle has roughly double the gamma and vega of either leg alone, and near-zero delta at the money.",
      "It also means there is no gamma or vega reason to prefer a call over a put at the same strike. The choice is about delta, financing, and assignment."
     ]
    },
    {
     "id": "charm-vanna-volga",
     "term": "Second-order Greeks",
     "definition": "Cross-derivatives that matter for hedged books held over time.",
     "fields": [
      {
       "label": "Vanna",
       "value": "d2V/(dS dsigma) - how delta moves as volatility moves",
       "mono": false
      },
      {
       "label": "Charm (delta decay)",
       "value": "d2V/(dS dt) - how delta moves as time passes",
       "mono": false
      },
      {
       "label": "Volga (vomma)",
       "value": "d2V/dsigma2 - how vega moves as volatility moves",
       "mono": false
      },
      {
       "label": "Speed",
       "value": "d3V/dS3 - how gamma moves as S moves",
       "mono": false
      }
     ],
     "notes": [
      "Charm is why a delta-hedged book drifts out of hedge over a weekend with no price movement at all.",
      "Volga is positive for long options, which is why long vega positions gain disproportionately in a volatility spike."
     ]
    },
    {
     "id": "theta-gamma-tradeoff",
     "term": "The theta-gamma relationship",
     "definition": "In a delta-hedged Black-Scholes book, theta and gamma are two sides of one quantity. A long-gamma position pays theta; a short-gamma position collects it.",
     "formula": "Theta + 0.5*sigma^2*S^2*Gamma + (r-q)*S*Delta - r*V = 0",
     "notes": [
      "This is the Black-Scholes PDE rearranged. It states that the time decay you pay is the fair price of the convexity you own.",
      "A long-gamma book profits when realised volatility exceeds the implied volatility paid, and loses otherwise. That comparison, not direction, is the actual position."
     ],
     "fields": [
      {
       "label": "Worked",
       "value": "S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20. Theta = -9.948648, 0.5*sigma^2*S^2*Gamma = 0.5*0.04*10000*0.039448 = 7.889587, (r-q)*S*Delta = 0.04*100*0.559618 = 2.238471, r*V = 0.04*4.485236 = 0.179409. Sum = -9.948648 + 7.889587 + 2.238471 - 0.179409 = 0.000000 to ten decimal places",
       "mono": true
      }
     ]
    },
    {
     "id": "greeks-delta",
     "term": "Delta",
     "definition": "The first derivative of option value with respect to the underlying price. It is both a hedge ratio and, for d2 rather than d1, a bridge to the risk-neutral probability of finishing in the money.",
     "formula": "Delta_call = exp(-q*T)*N(d1);  Delta_put = exp(-q*T)*(N(d1) - 1) = Delta_call - exp(-q*T)",
     "fields": [
      {
       "label": "Quoted as",
       "value": "Change in option value per 1.00 change in S, per share",
       "mono": true
      },
      {
       "label": "Range",
       "value": "0 to exp(-q*T) for calls, -exp(-q*T) to 0 for puts",
       "mono": true
      },
      {
       "label": "Put-call relation",
       "value": "Delta_call - Delta_put = exp(-q*T)",
       "mono": true
      },
      {
       "label": "Position delta",
       "value": "sum over legs of qty * multiplier * Delta_leg",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: d1 = 0.150000, d2 = 0.050000, call = 4.4852, put = 3.4902. Delta_call = N(0.15) = 0.559618, Delta_put = -0.440382. Their difference is 1.000000, which equals exp(-0) as required. At K = 105: Delta_call = 0.367719. At K = 95: Delta_call = 0.746313",
       "mono": true
      }
     ],
     "notes": [
      "At-the-money delta is above 0.50 for a call, not equal to it, because d1 carries the plus sigma-squared-over-two drift term. In the worked case it is 0.5596.",
      "Delta is a local slope. Using it to project a large move ignores gamma and will understate a long option and overstate a short one.",
      "Delta is not the probability of finishing in the money. N(d2) is the risk-neutral probability; N(d1) is delta. In the worked case they are 0.5199 and 0.5596, a gap of nearly four points at the money."
     ]
    },
    {
     "id": "greeks-gamma",
     "term": "Gamma",
     "definition": "The second derivative of option value with respect to the underlying price, equivalently the first derivative of delta. It measures how fast a hedge goes stale.",
     "formula": "Gamma = exp(-q*T)*phi(d1) / (S*sigma*sqrt(T))",
     "fields": [
      {
       "label": "Quoted as",
       "value": "Change in delta per 1.00 change in S",
       "mono": true
      },
      {
       "label": "Sign",
       "value": "Positive for long options of either type, negative for short",
       "mono": true
      },
      {
       "label": "Put-call relation",
       "value": "Identical for a call and a put at the same strike and expiry",
       "mono": true
      },
      {
       "label": "Convexity value",
       "value": "Value change from a move dS is approximately Delta*dS + 0.5*Gamma*dS^2",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: phi(0.15) = 0.394479, Gamma = 0.394479 / (100 * 0.20 * 0.5) = 0.039448 per share. Position gamma for one long contract = 3.9448. A 1.00 move contributes 0.5 * 0.039448 * 1 = 0.019724 per share, 1.97 per contract. A 2.00 move contributes 7.89 per contract, four times as much for twice the move",
       "mono": true
      }
     ],
     "notes": [
      "Gamma scales with the square of the move, so the convexity term is negligible for small moves and dominant for large ones. That asymmetry is the entire economics of a long-gamma book.",
      "Gamma is highest at the money and rises as expiry approaches, so an at-the-money short option is at its most dangerous on its last day.",
      "Gamma falls as sigma rises: a higher volatility input spreads the density and flattens the peak. Short-gamma positions therefore look calmer in high-volatility inputs than they behave."
     ]
    },
    {
     "id": "greeks-theta",
     "term": "Theta",
     "definition": "The derivative of option value with respect to the passage of time, holding S and sigma fixed. Long options have negative theta because extrinsic value must reach zero at expiry.",
     "formula": "Theta_call = -S*exp(-q*T)*phi(d1)*sigma/(2*sqrt(T)) - r*K*exp(-r*T)*N(d2) + q*S*exp(-q*T)*N(d1)",
     "fields": [
      {
       "label": "Theta_put",
       "value": "-S*exp(-q*T)*phi(d1)*sigma/(2*sqrt(T)) + r*K*exp(-r*T)*N(-d2) - q*S*exp(-q*T)*N(-d1)",
       "mono": true
      },
      {
       "label": "Quoted as",
       "value": "Usually divided by 365 and stated per calendar day",
       "mono": true
      },
      {
       "label": "Decay over n days",
       "value": "Approximately n * Theta / 365, valid only while gamma is small over the interval",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: annual Theta_call = -9.9486, so the quoted per-day figure is -9.9486 / 365 = -0.027257 per share, -2.73 per contract. Theta_put annual = -5.9884, per day -0.016407. Over 25 days the linear estimate is 25 * 0.027257 = 0.6814. Repricing the call at T = 0.25 - 25/365 gives 3.7599 against 4.4852, an actual drop of 0.7253. The linear estimate understates the true decay by 0.0439, about 6 percent",
       "mono": true
      }
     ],
     "notes": [
      "Theta is not linear. Quoting a per-day figure and multiplying by the holding period understates decay for an at-the-money option, because theta itself grows as expiry approaches.",
      "Call theta and put theta differ at the same strike because the interest terms carry opposite signs. In the worked case the call decays 66 percent faster than the put.",
      "A deep in-the-money put can have positive theta once the interest term dominates, which is the same condition that makes early exercise rational."
     ]
    },
    {
     "id": "greeks-vega",
     "term": "Vega",
     "definition": "The derivative of option value with respect to implied volatility. Not a Greek letter, and not a true partial derivative in any model where sigma is a constant, but the standard measure of volatility exposure.",
     "formula": "Vega = S*exp(-q*T)*phi(d1)*sqrt(T)",
     "fields": [
      {
       "label": "Quoted as",
       "value": "Divided by 100 and stated per one volatility point",
       "mono": true
      },
      {
       "label": "Put-call relation",
       "value": "Identical for a call and a put at the same strike and expiry",
       "mono": true
      },
      {
       "label": "Scaling in time",
       "value": "Proportional to sqrt(T), so a four-times-longer option has twice the vega",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: Vega = 100 * 0.394479 * 0.5 = 19.7240 in raw units, quoted as 0.197240 per volatility point per share, 19.72 per contract. Repricing the call at sigma = 0.21 gives 4.682511 against 4.485236, an actual change of 0.197274. The linear vega estimate is accurate to within 0.000034 for a one-point move",
       "mono": true
      }
     ],
     "notes": [
      "Vega is nearly exact for a one-point move and increasingly wrong for a large one, because volga makes vega itself a function of sigma.",
      "Vega peaks slightly above the at-the-money strike and falls away on both wings, but the wings carry far more vega per dollar of premium.",
      "A vega figure is meaningless without a term attached. One point of vega on a one-week option and one point on a one-year option are different exposures to the same headline number."
     ]
    },
    {
     "id": "greeks-rho",
     "term": "Rho",
     "definition": "The derivative of option value with respect to the risk-free rate. Usually the smallest of the first-order Greeks for short-dated options and material for long-dated ones.",
     "formula": "Rho_call = K*T*exp(-r*T)*N(d2);  Rho_put = -K*T*exp(-r*T)*N(-d2)",
     "fields": [
      {
       "label": "Quoted as",
       "value": "Divided by 100 and stated per one percentage point of rate",
       "mono": true
      },
      {
       "label": "Sign",
       "value": "Positive for calls, negative for puts",
       "mono": true
      },
      {
       "label": "Scaling in time",
       "value": "Roughly proportional to T, so it grows faster with maturity than vega does",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: Rho_call = 100 * 0.25 * exp(-0.01) * 0.519939 = 12.8691 raw, quoted 0.128691 per percentage point per share, 12.87 per contract",
       "mono": true
      }
     ],
     "notes": [
      "Rho is the reason put-call parity implies a call is worth more than a put at the same at-the-money strike: in the worked case 4.4852 against 3.4902, a difference of 0.9950 which equals S - K*exp(-r*T) exactly.",
      "For LEAPS-length options rho can exceed vega in dollar terms, so a rate move repricing a long-dated book is not a volatility event."
     ]
    },
    {
     "id": "greeks-hedge-ratio",
     "term": "Delta-neutral hedge ratio",
     "definition": "The quantity of the underlying required to bring net position delta to zero. It is a point-in-time figure that decays with charm and moves with gamma.",
     "formula": "Shares to hedge = -(sum over legs of qty * multiplier * Delta_leg)",
     "fields": [
      {
       "label": "For a short option position",
       "value": "Buy shares equal to multiplier * |Delta| * contracts",
       "mono": true
      },
      {
       "label": "Rehedge trigger by move",
       "value": "dS = dDelta_tolerance / Gamma",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. Ten short at-the-money 100 calls carry position delta = -10 * 100 * 0.559618 = -559.62, so a delta-neutral hedge is long 560 shares. Position gamma is -10 * 100 * 0.039448 = -39.45, so a 1.00 rise in S changes position delta by -39.45 and the hedge is 39 shares short of neutral",
       "mono": true
      }
     ],
     "notes": [
      "A hedge computed from delta alone is neutral at one price and one instant. Gamma tells you how fast that stops being true, and it is the only figure that sets a sensible rehedge band.",
      "Rounding to whole shares leaves a residual delta. On a small position that residual can exceed the gamma exposure being managed.",
      "Hedging with the underlying neutralises delta and leaves gamma, vega, and theta untouched. Only another option can hedge those."
     ]
    },
    {
     "id": "greeks-gamma-scalping",
     "term": "Gamma scalping arithmetic",
     "definition": "The mechanical result of rehedging a delta-neutral position as the underlying moves. Each rehedge realises the convexity term of the value change, and the sum of those realisations is set against theta paid.",
     "formula": "Realised convexity per rehedge = 0.5 * Gamma * dS^2 per share",
     "fields": [
      {
       "label": "Over n independent moves",
       "value": "0.5 * Gamma * sum(dS_i^2)",
       "mono": true
      },
      {
       "label": "Breakeven condition",
       "value": "0.5 * Gamma * sum(dS_i^2) = |Theta| * elapsed days / 365",
       "mono": true
      },
      {
       "label": "Equivalent condition",
       "value": "realised variance over the period exceeds the implied variance paid",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. Gamma = 0.039448 per share. A 1.00 round trip realises 0.5 * 0.039448 * 1 = 0.019724 per share, 1.97 per contract. Daily theta is 0.027257 per share, 2.73 per contract. So one 1.00 round trip per day recovers 72 percent of the day theta; the position needs about 1.18 of movement per day to break even, since 0.5 * 0.039448 * 1.18^2 = 0.027464",
       "mono": true
      }
     ],
     "notes": [
      "The breakeven move per day is proportional to the square root of theta over gamma, which is another statement of the implied-versus-realised comparison rather than a separate rule.",
      "Realised convexity depends on the path, not the endpoint. A position can be flat on the day and have scalped a substantial amount, or move a long way in one gap and scalp almost nothing.",
      "Every rehedge crosses a spread. The bid-ask cost of the rehedging programme is subtracted from the convexity, and at a tight rehedge band it can exceed it."
     ]
    },
    {
     "id": "greeks-position-aggregation",
     "term": "Aggregating Greeks across a multi-leg position",
     "definition": "Greeks are additive across legs when each is expressed in the same units. Sum signed quantity times multiplier times the per-share Greek for every leg; there is no interaction term at first order.",
     "formula": "Position Greek = sum over legs of (signed qty) * multiplier * (per-share Greek)",
     "fields": [
      {
       "label": "Delta units",
       "value": "Share-equivalents of the underlying",
       "mono": true
      },
      {
       "label": "Gamma units",
       "value": "Change in position delta per 1.00 move in S",
       "mono": true
      },
      {
       "label": "Vega units",
       "value": "Dollars per volatility point",
       "mono": true
      },
      {
       "label": "Theta units",
       "value": "Dollars per calendar day",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. One 100/105 bull call spread: value 4.4852 - 2.3909 = 2.0944 (209.44 debit). Position delta = 100 * (0.559618 - 0.367719) = 19.19. Gamma = 100 * (0.039448 - 0.037681) = 0.1767. Vega = 19.7240 - 18.8403 = 0.8837 dollars per point. Theta = 100 * (-9.9486 + 8.9113) / 365 = -0.2842 dollars per day. One 90/95/105/110 iron condor at the same inputs: delta -1.74, gamma -2.147, vega -10.74 dollars per point, theta +1.171 dollars per day",
       "mono": true
      }
     ],
     "notes": [
      "A spread cancels most of the gamma and vega of its legs while retaining most of the delta. In the worked case the vertical keeps 34 percent of the long leg delta and 4 percent of its gamma.",
      "Legs in different expirations cannot be summed for vega without weighting. One point of vega in a one-week leg and one point in a six-month leg do not offset, because implied volatilities in different tenors do not move one for one.",
      "Position theta on the iron condor is positive and position vega negative, which is the same trade viewed twice, not two separate exposures."
     ]
    },
    {
     "id": "greeks-behaviour",
     "term": "How each Greek behaves as spot, time and volatility move",
     "definition": "The sign of each cross-effect, stated for a long option. Reverse every sign for a short position. These are the relationships that make a hedge decay without any trade being placed.",
     "fields": [
      {
       "label": "Delta vs S",
       "value": "Rises with S for a call, rises toward zero for a put; the rate is gamma",
       "mono": true
      },
      {
       "label": "Delta vs T",
       "value": "Moves toward 0.5 for an out-of-the-money call as T grows; the rate is charm",
       "mono": true
      },
      {
       "label": "Delta vs sigma",
       "value": "OTM delta rises and ITM delta falls as sigma rises; the rate is vanna",
       "mono": true
      },
      {
       "label": "Gamma vs S",
       "value": "Peaks at the money and falls on both wings",
       "mono": true
      },
      {
       "label": "Gamma vs T",
       "value": "Rises sharply as T falls for an at-the-money option; falls as T falls for a wing",
       "mono": true
      },
      {
       "label": "Gamma vs sigma",
       "value": "Falls as sigma rises at the money",
       "mono": true
      },
      {
       "label": "Vega vs T",
       "value": "Rises with sqrt(T)",
       "mono": true
      },
      {
       "label": "Vega vs S",
       "value": "Peaks near the money, falls on both wings",
       "mono": true
      },
      {
       "label": "Vega vs sigma",
       "value": "Rises for wings and falls at the money; the rate is volga",
       "mono": true
      },
      {
       "label": "Theta vs T",
       "value": "Magnitude rises as T falls for an at-the-money option",
       "mono": true
      },
      {
       "label": "Theta vs sigma",
       "value": "Magnitude rises with sigma",
       "mono": true
      },
      {
       "label": "Rho vs T",
       "value": "Magnitude rises roughly linearly with T",
       "mono": true
      }
     ],
     "notes": [
      "The at-the-money and wing cases move in opposite directions for gamma and vega as expiry approaches. Any statement that begins \"gamma rises into expiry\" is true only at the money.",
      "A position can lose money with S, sigma and the calendar all unchanged if the strike has moved relative to the money because the underlying moved earlier. The Greeks are recomputed, not carried forward."
     ]
    },
    {
     "id": "greeks-charm-vanna-volga-arithmetic",
     "term": "Charm, vanna and volga in closed form",
     "definition": "The three second-order cross-derivatives most often quoted on a hedged book, given for completeness alongside their definitions.",
     "formula": "Vanna = -exp(-q*T)*phi(d1)*d2/sigma;  Volga = Vega*d1*d2/sigma",
     "fields": [
      {
       "label": "Vanna",
       "value": "d2V/(dS dsigma). Same for a call and a put at the same strike",
       "mono": true
      },
      {
       "label": "Volga (vomma)",
       "value": "d2V/dsigma^2. Same for a call and a put; positive when d1 and d2 share a sign",
       "mono": true
      },
      {
       "label": "Charm (call)",
       "value": "d2V/(dS dt), the drift of delta with time",
       "mono": true
      },
      {
       "label": "Speed",
       "value": "d3V/dS^3, the drift of gamma with S",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: d1 = 0.150000, d2 = 0.050000, phi(d1) = 0.394479, Vega = 19.7240 raw. Vanna = -0.394479 * 0.050000 / 0.20 = -0.098620 per share. Volga = 19.7240 * 0.150000 * 0.050000 / 0.20 = 0.739650 raw",
       "mono": true
      }
     ],
     "notes": [
      "Volga is zero where d1 and d2 straddle zero, which happens just below the at-the-money strike. Vega is locally flat in sigma there and a vega hedge is at its most stable.",
      "Vanna is what makes a delta hedge on a skewed book directional in volatility rather than in price. A vanna-heavy position can be delta-flat and still lose on a pure volatility move.",
      "Charm is why a delta-hedged book drifts out of hedge over a weekend with no price movement at all."
     ]
    },
    {
     "id": "greeks-third-order-closed-forms",
     "term": "Speed, zomma, colour and ultima in closed form",
     "definition": "The third-order sensitivities, given for completeness and because they are what a hedged book's Greeks do when the book is left alone. Each is the derivative of a second-order Greek with respect to one of the three moving inputs.",
     "formula": "Speed = minus (Gamma/S)*(1 + d1/(sigma*sqrt(T)));  Zomma = Gamma*(d1*d2 - 1)/sigma;  Colour = Gamma*[q + (r-q)*d1/(sigma*sqrt(T)) + (1 - d1*d2)/(2*T)];  Ultima = minus (Vega/sigma^2)*[d1*d2*(1 - d1*d2) + d1^2 + d2^2]",
     "fields": [
      {
       "label": "Speed",
       "value": "d3V/dS^3, how gamma changes as S moves. Identical for a call and a put",
       "mono": true
      },
      {
       "label": "Zomma",
       "value": "dGamma/dsigma, how gamma changes as volatility moves",
       "mono": true
      },
      {
       "label": "Colour",
       "value": "dGamma/dt, how gamma changes as time passes",
       "mono": true
      },
      {
       "label": "Ultima",
       "value": "d3V/dsigma^3, how volga changes as volatility moves",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: Gamma = 0.039448, Vega = 19.723967 raw, d1 = 0.150000, d2 = 0.050000. Speed = minus (0.039448/100)*(1 + 0.150000/0.100000) = minus 0.00098620. Zomma = 0.039448*(0.0075 - 1)/0.20 = minus 0.19576037. Colour = 0.039448*(0 + 0.04*0.150000/0.100000 + (1 - 0.0075)/0.50) = 0.039448*2.045 = plus 0.08067102. Ultima = minus (19.723967/0.04)*[0.0075*0.9925 + 0.0225 + 0.0025] = minus 15.99798599. Each was checked against a central finite difference of the corresponding second-order Greek; the largest deviation was 1.2e-07, on ultima",
       "mono": true
      }
     ],
     "notes": [
      "Colour is positive at the money, which is the arithmetic behind the statement that gamma rises into expiry. It is negative on a far wing, where gamma falls into expiry, so the statement is strike-specific and not general.",
      "Speed is negative for a call struck at or below spot and positive above it. It changes sign near the strike where d1 crosses minus sigma*sqrt(T), which is why a gamma hedge behaves asymmetrically for equal moves up and down.",
      "Zomma is negative at the money and positive on the wings, so raising the volatility input flattens the gamma profile. A short-gamma book therefore looks least dangerous in exactly the volatility regime where it is most dangerous.",
      "Ultima is large and negative on a wing, minus 396 at the 95 strike against minus 16 at the money in the worked case. Vega hedging a wing with a linear vega estimate is unreliable for anything but a small volatility move."
     ]
    },
    {
     "id": "greeks-charm-and-veta",
     "term": "Charm and veta: the Greeks of the calendar",
     "definition": "Charm is the rate at which delta changes with the passage of time and veta the rate at which vega does. Both are the reason a book that traded nothing over a weekend comes back with different exposures than it left with.",
     "formula": "Charm_call = q*exp(-q*T)*N(d1) - exp(-q*T)*phi(d1)*[2*(r-q)*T - d2*sigma*sqrt(T)] / (2*T*sigma*sqrt(T));  Veta = S*exp(-q*T)*phi(d1)*sqrt(T)*[q + (r-q)*d1/(sigma*sqrt(T)) - (1 + d1*d2)/(2*T)]",
     "fields": [
      {
       "label": "Sign convention",
       "value": "Both stated per unit of calendar time t, so a negative figure means the quantity falls as time passes",
       "mono": false
      },
      {
       "label": "Call versus put charm",
       "value": "Identical whenever q = 0, because Delta_call minus Delta_put equals exp(-q*T), a constant in time when q = 0",
       "mono": false
      },
      {
       "label": "Quoting",
       "value": "Usually divided by 365 and stated per calendar day, like theta",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: Charm = minus 0.118344 per year, so minus 0.00032423 of delta per calendar day, or minus 0.032423 share-equivalents per contract per day. Over a three-day weekend a delta-neutral hedge on 100 contracts drifts by 100*100*3*0.00032423 = 9.73 share-equivalents with no price movement at all. At K = 95 charm is plus 0.232453 and at K = 105 it is minus 0.480729, so the drift changes sign across the strike. Veta at K = 100 is minus 38.560355 per year in raw units, which is minus 0.10564481 per calendar day raw, or minus 0.00105645 per volatility point per day per share. Against a quoted vega of 0.197240 per point that is 0.5356 percent of the vega exposure lost per day at this tenor",
       "mono": true
      }
     ],
     "notes": [
      "Charm is why a wing hedge goes stale faster than an at-the-money hedge. At K = 105 the worked charm is four times the at-the-money figure.",
      "Charm changes sign across the strike, so a symmetric strangle hedge drifts in one direction on one side and the other direction on the other. A single rehedge band applied to both sides is not symmetric in practice.",
      "Veta is negative at the money for a long option, which means the vega you are paying for shrinks while you hold it. Comparing vega across two tenors without accounting for that overstates the longer-dated exposure over any holding period."
     ]
    },
    {
     "id": "greeks-dual-delta-dual-gamma",
     "term": "Dual delta and dual gamma: sensitivity to the strike",
     "definition": "The derivatives with respect to K rather than S. They are not hedging quantities, because K is contractual, but they are the exact tool for pricing a strike-shift, for interpolating a value between two listed strikes, and for reading the implied terminal density off a strike curve.",
     "formula": "DualDelta_call = minus exp(-r*T)*N(d2);  DualDelta_put = exp(-r*T)*N(-d2);  DualGamma = exp(-r*T)*phi(d2)/(K*sigma*sqrt(T))",
     "fields": [
      {
       "label": "Relation to the digital",
       "value": "minus DualDelta_call is exactly the value of a cash-or-nothing call paying 1.00 at the same strike",
       "mono": true
      },
      {
       "label": "Relation to the implied density",
       "value": "DualGamma equals exp(-r*T) times the risk-neutral probability density of the terminal price at K, which is the Breeden-Litzenberger result",
       "mono": true
      },
      {
       "label": "Butterfly arbitrage test",
       "value": "DualGamma must be non-negative at every strike; a negative value implies a negative implied density and a butterfly arbitrage",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100: DualDelta_call = minus exp(-0.01)*0.519939 = minus 0.514765, and the cash-or-nothing call at the same strike is 0.514765, matching exactly. DualDelta_put = plus 0.475285, and the two sum to minus 0.039480 which equals minus exp(-r*T)*(2*N(d2) - 1). DualGamma = exp(-0.01)*phi(0.050000)/(100*0.100000) = 0.039448. Note that dual gamma at K = 100 happens to equal gamma at K = 100 here to six decimals, which is a coincidence of S = K and not an identity. At K = 95 dual gamma is 0.035484 against a gamma of 0.032024, and at K = 105 it is 0.034177 against 0.037681. All four were checked against central finite differences in K, agreeing to within 2e-10",
       "mono": true
      }
     ],
     "notes": [
      "Dual gamma is the cleanest data-quality check on an option chain there is. Compute the second difference of mid prices across three adjacent strikes; a negative result means the chain cannot be arbitrage-free as quoted.",
      "Interpolating a value between two listed strikes with dual delta is a first-order estimate and it understates a convex curve. Add half of dual gamma times the strike gap squared and the estimate is usually within a cent.",
      "The identity between minus dual delta and the digital is why a tight vertical replicates a digital: differencing the call price in K is literally taking the derivative."
     ],
     "source": "Breeden and Litzenberger 1978"
    },
    {
     "id": "greeks-vega-gamma-proportionality",
     "term": "Vega is gamma times S squared times sigma times T",
     "definition": "For any two options on the same underlying with the same expiration and the same volatility input, vega and gamma are the same number scaled by a strike-independent constant. That makes them the same exposure at one expiration, and it is why they cannot be hedged separately with same-expiry instruments.",
     "formula": "Vega = Gamma * S^2 * sigma * T, identically, for every strike at a given S, sigma and T",
     "fields": [
      {
       "label": "Derivation",
       "value": "Gamma = exp(-q*T)*phi(d1)/(S*sigma*sqrt(T)) and Vega = S*exp(-q*T)*phi(d1)*sqrt(T). Dividing gives Vega/Gamma = S^2*sigma*T, with phi(d1) cancelling",
       "mono": true
      },
      {
       "label": "Consequence for hedging",
       "value": "A hedge matrix whose gamma row and vega row are built from one expiration is singular: the two rows are the same equation scaled by S^2*sigma*T",
       "mono": false
      },
      {
       "label": "How to break it",
       "value": "Use instruments in at least two expirations. The ratio is 500 at T = 0.25 and 1500 at T = 0.75 on the worked inputs",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. S^2*sigma*T = 10000*0.20*0.25 = 500.0000. At K = 95: Gamma 0.032024 and Vega 16.012096, ratio 500.00000000. At K = 100: 0.039448 and 19.723967, ratio 500.00000000. At K = 105: 0.037681 and 18.840253, ratio 500.00000000. Attempting to solve a three-by-three delta-gamma-vega hedge using two same-expiry options and shares fails with a zero pivot, which is the numerical signature of the same-equation-twice problem",
       "mono": true
      }
     ],
     "notes": [
      "This is the reason a calendar spread exists as a structure. Term is the only dimension along which gamma and vega separate.",
      "A risk report that shows a large vega and a small gamma at a single expiration is showing a unit-conversion artefact, not two independent exposures. Divide vega by S-squared-sigma-T and check.",
      "The proportionality holds under the model, at one volatility input. Once the surface has a term structure, the two exposures do separate economically even though they remain proportional strike by strike, because a one-point move in a near tenor and a one-point move in a far tenor are not the same event."
     ]
    },
    {
     "id": "greeks-pnl-attribution-identity",
     "term": "The profit and loss attribution identity, worked on a real reprice",
     "definition": "A value change over a finite move is exactly reproduced by the Taylor expansion in the three moving inputs, and the residual after each term is what quantifies whether the next order matters. The identity is arithmetic, not an approximation to be trusted on faith, and it either closes or names the term that is missing.",
     "formula": "dV = Delta*dS + 0.5*Gamma*dS^2 + Speed*dS^3/6 + Vega*dsigma + 0.5*Volga*dsigma^2 + Theta*dt + Vanna*dS*dsigma + Charm*dS*dt + Veta*dsigma*dt + residual",
     "fields": [
      {
       "label": "Order of inclusion matters for reading",
       "value": "The residual after each term is the honest measure of that term's necessity. Adding terms out of order hides which one was doing the work",
       "mono": false
      },
      {
       "label": "Where the residual goes",
       "value": "Remaining terms are third order and higher in the mixed moves, plus the curvature of theta over the interval",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Long one K = 100 call. S 100 to 102, sigma 0.20 to 0.22, 7 calendar days elapse so T goes 0.25 to 0.230822. Value 4.485236409 to 5.855752, actual change plus 1.370515. Delta term plus 1.11923538, residual plus 0.25127974. Add gamma plus 0.07889587, residual plus 0.17238388. Add speed minus 0.00131493, residual plus 0.17369881. Add vega plus 0.39447933, residual minus 0.22078052. Add volga plus 0.00014793, residual minus 0.22092845. Add theta minus 0.19079599, residual minus 0.03013246. Add vanna minus 0.00394479, residual minus 0.02618767. Add charm minus 0.00453921, residual minus 0.02164846. Add veta minus 0.01479027, residual minus 0.00685818, which is 0.50 percent of the move and 0.69 in dollars per contract",
       "mono": true
      }
     ],
     "notes": [
      "Delta and gamma together explain 87 percent of this move and leave 0.17 unexplained, which is larger than the entire theta term. Stopping at second order in S is the most common attribution error and it is not small.",
      "The three calendar cross-terms, charm and veta, together account for 0.019 of the 0.030 residual left after the first-order terms. On a book held over a weekend they are not optional.",
      "A residual that will not close is diagnostic. If it exceeds a percent of the move on a single vanilla option with no missing inputs, the inputs used for the two repricings differ in something other than what you think moved."
     ]
    },
    {
     "id": "greeks-dgv-hedge-linear-system",
     "term": "Delta, gamma and vega hedging as a linear system",
     "definition": "Neutralising three exposures with three instruments is a three-by-three linear solve. Writing it that way makes two things visible that a leg-by-leg hedge hides: whether the system is solvable at all, and how much of the neutrality is destroyed by rounding to whole contracts.",
     "formula": "A*x = minus g, where row i of A holds the per-contract delta, gamma and vega of each hedge instrument, x is the contract count of each, and g is the book's current delta, gamma and vega",
     "fields": [
      {
       "label": "Solvability",
       "value": "A is singular whenever all option instruments share one expiration, because Vega = Gamma*S^2*sigma*T makes two rows proportional",
       "mono": false
      },
      {
       "label": "Shares as an instrument",
       "value": "Contribute delta 1 and nothing else, so the share column is (1, 0, 0) and shares can only ever close the delta row",
       "mono": true
      },
      {
       "label": "Rounding cost",
       "value": "Residual exposure after rounding equals A times the rounding vector, and it is not small on a small position",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Book: short 10 K = 100 T = 0.25 calls and short 5 K = 105 T = 0.50 calls at Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. Net exposures to neutralise: delta minus 783.192428, gamma minus 53.428721, vega minus 33704.7549 raw. Hedge instruments: K = 95 T = 0.25 call, per-contract delta 74.6313, gamma 3.202419, vega 1601.2096, vega-to-gamma ratio 500; K = 100 T = 0.75 call, per-contract delta 60.2494, gamma 2.226923, vega 3340.2830, ratio 1500; and shares. Solution: 14.501015 contracts of the first, 3.139133 of the second, and short 488.1683 shares. Residuals from the exact solve: delta 1.7e-13, gamma 4.4e-15, vega 0.0. Rounded to whole lots of 15, 3 and minus 488, the residuals become delta plus 29.0256, gamma plus 1.2881 and vega plus 334.2378 - so rounding leaves 3.7 percent of the original delta and 2.4 percent of the original gamma unhedged",
       "mono": true
      }
     ],
     "notes": [
      "The singularity is the whole reason a hedge needs two expirations. A trader who reaches for a second strike in the same expiration to fix a vega problem has not fixed anything, and the solver will say so with a zero pivot rather than a bad answer.",
      "Rounding residual scales with the size of the hedge instruments, not with the size of the book. Hedging a small book with high-delta contracts leaves a proportionally larger residual than hedging a large one.",
      "The solve is instantaneous and valid only at the current inputs. Every Greek in A is itself a function of S, sigma and t, so the system has to be re-formed, not re-used, after any material move."
     ]
    },
    {
     "id": "greeks-theta-decomposition",
     "term": "Theta decomposed into its three terms",
     "definition": "Call theta is the sum of three separately interpretable pieces: the decay of convexity, the interest on the discounted strike, and the dividend on the deferred stock. Splitting them explains why call and put theta differ at the same strike, and why a deep in-the-money put can have positive theta.",
     "formula": "Theta_call = minus S*exp(-q*T)*phi(d1)*sigma/(2*sqrt(T))  minus  r*K*exp(-r*T)*N(d2)  plus  q*S*exp(-q*T)*N(d1)",
     "fields": [
      {
       "label": "Term 1, the volatility term",
       "value": "minus S*exp(-q*T)*phi(d1)*sigma/(2*sqrt(T)). Always negative for a long option, identical for a call and a put, and equal to minus 0.5*sigma^2*S^2*Gamma",
       "mono": true
      },
      {
       "label": "Term 2, the rate term",
       "value": "minus r*K*exp(-r*T)*N(d2) for a call, plus r*K*exp(-r*T)*N(-d2) for a put. Opposite signs, which is the entire call-put theta difference at q = 0",
       "mono": true
      },
      {
       "label": "Term 3, the dividend term",
       "value": "plus q*S*exp(-q*T)*N(d1) for a call, minus q*S*exp(-q*T)*N(-d1) for a put",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100. Term 1 = minus 100*0.394479*0.20/(2*0.5) = minus 7.889587, and independently minus 0.5*0.04*10000*0.039448 = minus 7.889587, confirming the gamma identity. Term 2 for the call = minus 0.04*100*0.990050*0.519939 = minus 2.059061. Term 3 = 0 since q = 0. Total Theta_call = minus 9.948648, per day minus 0.027257. For the put, term 2 flips to plus 0.04*100*0.990050*0.480061 = plus 1.901139, giving Theta_put = minus 5.988449, per day minus 0.016407. The call decays 66.2 percent faster than the put, and the whole difference is 2.059061 plus 1.901139 = 3.960199, which equals r*K*exp(-r*T) = 3.960199 exactly",
       "mono": true
      }
     ],
     "notes": [
      "The call-put theta difference is exactly r*K*exp(-r*T) at any strike, any volatility and any moneyness when q = 0. It is a rate quantity, not a volatility quantity, and it does not depend on sigma at all.",
      "Term 1 being minus 0.5*sigma^2*S^2*Gamma is the Black-Scholes partial differential equation showing through: the volatility part of theta is the price of the convexity, and nothing else in the formula is.",
      "For a deep in-the-money put term 1 goes to zero while term 2 stays at plus r*K*exp(-r*T), so theta turns positive. That is the same condition that makes early exercise of the put rational, expressed as a Greek instead of as a comparison."
     ]
    },
    {
     "id": "greeks-pin-risk-quantified",
     "term": "Pin risk quantified",
     "definition": "As expiry approaches an at-the-money delta goes to a step function and gamma to an unbounded spike. Pin risk is the dollar consequence of that: a hedge computed at one price is wrong at a price a few cents away, and the assignment outcome is undetermined until after the close.",
     "formula": "Gamma at the money grows as 1/sqrt(T); the required hedge change over a move dS is 100*Gamma*dS share-equivalents per contract",
     "fields": [
      {
       "label": "Gamma scaling",
       "value": "At the money Gamma is proportional to 1/(S*sigma*sqrt(T)), so halving the remaining life multiplies it by sqrt(2)",
       "mono": true
      },
      {
       "label": "Assignment ambiguity",
       "value": "Per contract the exposure is the full multiplier of shares, present or absent, decided after the close",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "K = 100, r = 0.04, q = 0, sigma = 0.20. At 30 days to expiry with S = 100: delta 0.534270, gamma 0.069320. At 7 days: delta 0.516569, gamma 0.143914. At 1 day: delta 0.506264, gamma 0.381042 - gamma has risen 5.5 times over those 29 days. At 1 day the call delta moves from 0.468170 at S = 99.90 to 0.544263 at S = 100.10, so a 0.20 move changes the required hedge by 7.61 shares per contract and by 76 shares on 10 contracts. Against that, ten short contracts carry a 1,000-share assignment that is undetermined until the instruction cut-off: an unresolved 1,000-share position exposed to a 1.00 overnight gap is 1,000.00 of profit or loss, while the entire gamma exposure being hedged is 10*100*0.381042 = 381.04 of delta per point. The assignment ambiguity is 2.6 times the exposure the hedge is managing",
       "mono": true
      }
     ],
     "notes": [
      "The assignment uncertainty is larger than the hedging problem. The hedge error is measured in tens of shares; the assignment error is measured in whole multipliers, and it is binary.",
      "A short at-the-money option at expiry is the only common position where the correct hedge cannot be computed, because it depends on an exercise decision that has not been made yet.",
      "Closing the position rather than hedging it removes the uncertainty entirely, and its cost is one bid-ask spread on a contract whose spread is at its widest relative to its price. That trade-off is the whole of pin-risk management and it is arithmetic, not judgement."
     ]
    },
    {
     "id": "greeks-box-and-synthetic-greeks",
     "term": "Greeks of a box spread and of a synthetic: zero at every order",
     "definition": "A box spread has no exposure to the underlying or to volatility at any order, because it is a bond. A synthetic long has a delta of exactly one and no gamma or vega. Both are useful precisely because their Greeks are known constants rather than model outputs.",
     "formula": "Box(K1,K2) = C(K1) - C(K2) + P(K2) - P(K1) = (K2 - K1)*exp(-r*T);  Synthetic long at K = C(K) - P(K) = S*exp(-q*T) - K*exp(-r*T)",
     "fields": [
      {
       "label": "Box delta, gamma, vega",
       "value": "All exactly zero, since the value does not contain S or sigma",
       "mono": true
      },
      {
       "label": "Box theta",
       "value": "plus r times the box value, because the discount unwinds. Per day, r*Value/365",
       "mono": true
      },
      {
       "label": "Box rho",
       "value": "minus T times the box value, the rho of a zero-coupon bond",
       "mono": true
      },
      {
       "label": "Synthetic long Greeks",
       "value": "Delta exp(-q*T), gamma 0, vega 0, theta minus r*K*exp(-r*T) plus q*S*exp(-q*T), rho K*T*exp(-r*T)",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs used throughout this section: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. These are inputs chosen to make the arithmetic checkable, not observations of any market. A 100/110 box built from the four model values: 4.485236 minus 1.140397 plus 10.045879 minus 3.490220 = 9.900498 per share, 990.05 per contract, and independently 10*exp(-0.01) = 9.900498. Position delta, gamma and vega all computed to 0.00 to eight decimals. Position theta = 0.04*990.05/365 = plus 0.1085 per day. The synthetic long at K = 100: 4.485236 minus 3.490220 = 0.995017, delta 100*(0.559618 plus 0.440382) = 100.00 share-equivalents exactly, gamma 0.0000, vega 0.0000",
       "mono": true
      }
     ],
     "notes": [
      "A box that shows any gamma or vega in a risk system has a leg mispriced, a wrong strike, or a stale mark. It is the fastest single check on a valuation feed.",
      "The synthetic long delta of exactly one hundred share-equivalents per contract holds at every sigma and every moneyness. Any deviation is q, not error.",
      "Box theta is positive and equals interest, which is the only sense in which a box decays. Describing it as a theta position confuses a financing accrual with option decay."
     ]
    }
   ],
   "reviewed": "2026-08-27"
  },
  {
   "slug": "volatility",
   "title": "Volatility",
   "lede": "Implied, realised and historical volatility, and the arithmetic that converts between them.",
   "intro": "Volatility is quoted as an annualised standard deviation of continuously compounded returns. Variance is additive in time and volatility is not, which is the source of most conversion errors in this area. Every number in this section is derived from stated inputs; none of it is an observation of any market.",
   "tables": [
    {
     "title": "Time scaling of volatility and variance",
     "intro": "Variance scales linearly in time; volatility scales with the square root of time. All conversions below follow from that one fact.",
     "columns": [
      "Conversion",
      "Formula",
      "Worked"
     ],
     "rows": [
      [
       "Annual to horizon T",
       "sigma_T = sigma * sqrt(T)",
       "sigma = 0.20, T = 30/365: 0.20 * sqrt(0.0821918) = 0.057338, i.e. a 5.7338 percent one-standard-deviation move"
      ],
      [
       "Annual to one trading day",
       "sigma_day = sigma / sqrt(252)",
       "0.20 / sqrt(252) = 0.012599, i.e. 1.2599 percent"
      ],
      [
       "Daily to annual",
       "sigma = sigma_day * sqrt(252)",
       "0.011 * sqrt(252) = 0.174620, i.e. 17.4620 percent"
      ],
      [
       "Variance over T",
       "Var_T = sigma^2 * T",
       "0.20^2 * 0.25 = 0.010000"
      ],
      [
       "Adding independent periods",
       "Var_total = Var_1 + Var_2",
       "Never add volatilities. Add variances and take the square root at the end"
      ],
      [
       "Expected absolute move",
       "E|S_T - S| approx S * sigma * sqrt(2*T/pi)",
       "S = 100, sigma = 0.20, T = 0.25: 100 * 0.20 * sqrt(0.159155) = 7.9788"
      ]
     ]
    },
    {
     "title": "Volatility measures compared",
     "columns": [
      "Measure",
      "What it is",
      "Computed from",
      "Direction of time"
     ],
     "rows": [
      [
       "Implied volatility",
       "The sigma that equates a model price to the observed option price",
       "Option prices, inverted numerically",
       "Forward-looking, one number per contract"
      ],
      [
       "Realised volatility",
       "The standard deviation of the returns that actually occurred",
       "Underlying price history over a stated window",
       "Backward-looking"
      ],
      [
       "Historical volatility",
       "A realised volatility over a longer or reference window, used as a baseline",
       "Underlying price history",
       "Backward-looking"
      ],
      [
       "Forward implied volatility",
       "The volatility implied for the interval between two expirations",
       "Two implied volatilities and their tenors",
       "Forward-looking, interval-specific"
      ]
     ]
    },
    {
     "title": "IV rank and IV percentile are different calculations",
     "intro": "Both compress a volatility level into a 0 to 100 figure and they are not interchangeable. Rank is a position between two extremes; percentile is a count of observations below the current level.",
     "columns": [
      "Measure",
      "Formula",
      "Worked",
      "What it ignores"
     ],
     "rows": [
      [
       "IV rank",
       "100 * (IV - IV_low) / (IV_high - IV_low)",
       "IV 28, low 14, high 56: 100 * 14 / 42 = 33.3333",
       "The shape of the distribution between the two extremes. Two very different histories with the same high and low give the same rank"
      ],
      [
       "IV percentile",
       "100 * (count of observations with IV below the current level) / (total observations)",
       "63 of 252 observations below the current level: 25.0000",
       "The magnitude of the extremes. A level can sit at the 25th percentile and still be near the all-time high if the distribution is compressed"
      ]
     ]
    },
    {
     "title": "Newton on vega, from a deliberately poor starting point",
     "intro": "Inverting a call price of 4.485236409 at S = 100, K = 100, T = 0.25, r = 0.04, q = 0, starting from sigma = 0.50. Each step is sigma_next = sigma - (price - target)/Vega, with Vega the raw derivative. The iteration is quadratically convergent near the root: the error goes from 0.30 to 7.7e-04 to 1.1e-08 to zero in machine precision.",
     "columns": [
      "Iteration",
      "sigma",
      "Model price",
      "Price error",
      "Vega, raw",
      "Next sigma"
     ],
     "rows": [
      [
       "1",
       "0.5000000000",
       "10.4035391530",
       "plus 5.918e+00",
       "19.677424",
       "0.1992338610"
      ],
      [
       "2",
       "0.1992338610",
       "4.4701253275",
       "minus 1.511e-02",
       "19.723395",
       "0.2000000111"
      ],
      [
       "3",
       "0.2000000111",
       "4.4852366285",
       "plus 2.195e-07",
       "19.723967",
       "0.2000000000"
      ],
      [
       "4",
       "0.2000000000",
       "4.4852364090",
       "plus 0.000e+00",
       "19.723967",
       "0.2000000000, converged"
      ]
     ]
    },
    {
     "title": "Volatility-surface parameterisations",
     "intro": "Three named parameterisations in general use, with the quantity each one actually parameterises. None is a model of the underlying; each is a way of writing a smile down with few enough parameters to fit and interpolate.",
     "columns": [
      "Parameterisation",
      "Parameterises",
      "Formula",
      "Parameters",
      "Primary reference"
     ],
     "rows": [
      [
       "SABR",
       "Implied volatility directly, as a function of strike and forward",
       "See the SABR entry below for the full Hagan expansion",
       "alpha, beta, rho, nu",
       "Hagan, Kumar, Lesniewski and Woodward 2002"
      ],
      [
       "SVI, raw",
       "Total implied variance w = sigma^2*T as a function of log-moneyness k",
       "w(k) = a + b*[rho*(k - m) + sqrt((k - m)^2 + s^2)]",
       "a, b, rho, m, s",
       "Gatheral 2004; Gatheral and Jacquier 2014"
      ],
      [
       "Dupire local volatility",
       "The instantaneous volatility as a function of price and time, extracted from the call surface",
       "See the Dupire entry below",
       "None; it is a function read off the surface",
       "Dupire 1994"
      ]
     ]
    },
    {
     "title": "SABR and SVI evaluated at the stated parameters, verified",
     "intro": "SABR at F = 100, T = 0.25, alpha = 0.20, beta = 1, rho = minus 0.30, nu = 0.40. SVI at the same T with a = 0.010, b = 0.060, rho = minus 0.40, m = 0.02, s = 0.12. Log-moneyness k = ln(K/100) for the SVI column, so the two columns are read at the same strikes only approximately. These are chosen parameters, not a calibration to any market.",
     "columns": [
      "Strike",
      "SABR implied volatility",
      "Log-moneyness k",
      "SVI total variance w(k)",
      "SVI implied volatility sqrt(w/T)"
     ],
     "rows": [
      [
       "81.8731",
       "n/a, outside the strikes shown",
       "minus 0.20",
       "0.03031596",
       "0.34822956"
      ],
      [
       "85.0000",
       "0.21268532",
       "n/a",
       "n/a",
       "n/a"
      ],
      [
       "90.0000",
       "0.20777936",
       "n/a",
       "n/a",
       "n/a"
      ],
      [
       "90.4837",
       "n/a",
       "minus 0.10",
       "0.02306234",
       "0.30372578"
      ],
      [
       "95.0000",
       "0.20364996",
       "n/a",
       "n/a",
       "n/a"
      ],
      [
       "100.0000",
       "0.20027667",
       "0.00",
       "0.01777932",
       "0.26667820"
      ],
      [
       "105.0000",
       "0.19763009",
       "n/a",
       "n/a",
       "n/a"
      ],
      [
       "110.0000",
       "0.19566979",
       "n/a",
       "n/a",
       "n/a"
      ],
      [
       "110.5171",
       "n/a",
       "plus 0.10",
       "0.01673332",
       "0.25871469"
      ],
      [
       "115.0000",
       "0.19434424",
       "n/a",
       "n/a",
       "n/a"
      ],
      [
       "122.1403",
       "n/a",
       "plus 0.20",
       "0.01865998",
       "0.27320311"
      ]
     ]
    },
    {
     "title": "Discretisation error in the VIX-style calculation, measured on a flat 20 percent surface",
     "intro": "Option prices were generated from Black-Scholes-Merton at a constant sigma = 0.20, S = 100, r = 0.04, q = 0, T = 30/365, then fed into the CBOE white-paper formula. Because the generating volatility is flat and known, any departure from 20.000000 is pure method error from the finite strike grid. The bias is upward at every spacing tested.",
     "columns": [
      "Strike spacing",
      "Strike range",
      "K0",
      "Forward F",
      "sigma squared from the formula",
      "Index level",
      "Error in volatility points"
     ],
     "rows": [
      [
       "5.00",
       "50 to 150",
       "100",
       "100.329308",
       "0.04509873",
       "21.236462",
       "plus 1.236462"
      ],
      [
       "5.00",
       "20 to 300",
       "100",
       "100.329308",
       "0.04509873",
       "21.236462",
       "plus 1.236462"
      ],
      [
       "2.50",
       "20 to 300",
       "100",
       "100.329308",
       "0.04127518",
       "20.316294",
       "plus 0.316294"
      ],
      [
       "1.00",
       "10 to 500",
       "100",
       "100.329308",
       "0.04020382",
       "20.050890",
       "plus 0.050890"
      ]
     ]
    }
   ],
   "entries": [
    {
     "id": "iv-definition",
     "term": "Implied volatility",
     "definition": "The volatility input that makes a pricing model return the observed market price of an option. It is an output of an inversion, not a measurement, and it inherits every assumption of the model used to invert it.",
     "formula": "Solve sigma such that BS(S, K, T, r, q, sigma) = observed price",
     "fields": [
      {
       "label": "Uniqueness",
       "value": "Option value is strictly increasing in sigma, so the solution is unique when the price is inside the no-arbitrage bounds",
       "mono": true
      },
      {
       "label": "No-arbitrage bounds (call)",
       "value": "max(S*exp(-q*T) - K*exp(-r*T), 0) <= C <= S*exp(-q*T)",
       "mono": true
      },
      {
       "label": "Inversion method",
       "value": "Newton on vega, or bisection when vega is near zero",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "At S = 100, K = 100, T = 0.25, r = 0.04, q = 0: a call priced at 4.485236 inverts to sigma = 0.200000. At sigma = 0.210000 the same call is 4.682511, so a 0.197274 price difference corresponds to exactly one volatility point at these inputs",
       "mono": true
      }
     ],
     "notes": [
      "Vega approaches zero for deep in- or out-of-the-money options, so the inversion becomes numerically unstable exactly where the quoted implied volatility is most often reported to three decimals.",
      "A price below the intrinsic-value bound has no implied volatility at all. In practice that means a stale or crossed quote, not a negative volatility.",
      "Two vendors can publish different implied volatilities for the same contract from the same price by using a different rate, dividend assumption, or mid-price convention. Reconcile the inputs before reconciling the outputs."
     ]
    },
    {
     "id": "realised-volatility",
     "term": "Realised volatility",
     "definition": "The annualised standard deviation of the log returns that actually occurred over a stated window. The zero-mean estimator is standard for short windows because the drift term is not estimable over them.",
     "formula": "sigma_realised = sqrt( (252/n) * sum over t of ln(S_t / S_{t-1})^2 )",
     "fields": [
      {
       "label": "Sample-variance variant",
       "value": "sqrt( 252 * sum((r_t - rbar)^2) / (n - 1) )",
       "mono": true
      },
      {
       "label": "Annualisation factor",
       "value": "252 for trading-day returns, 365 for calendar-day returns. State which",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Five daily log returns 0.0120, -0.0080, 0.0150, -0.0050, 0.0060. Sum of squares = 0.000494. Zero-mean estimator: sqrt(252/5 * 0.000494) = 0.157790, i.e. 15.7790 percent. Sample-variance estimator on the same data: 0.161499, i.e. 16.1499 percent. The two differ by 0.37 volatility points on identical data",
       "mono": true
      }
     ],
     "notes": [
      "The estimator choice changes the answer materially on short windows. A realised-volatility figure without its estimator and its annualisation factor stated is not reproducible.",
      "Close-to-close realised volatility ignores intraday range entirely, so it understates the variance a gamma position actually experienced.",
      "Comparing a realised volatility over n days to an implied volatility for a T-day option compares two different horizons unless n and T are matched."
     ]
    },
    {
     "id": "variance-vs-volatility",
     "term": "Variance versus volatility, and why the square root matters",
     "definition": "Variance is additive across independent time intervals; volatility is not. Any operation that combines periods, tenors, or components must be done in variance and converted back at the end.",
     "formula": "sigma_total = sqrt( (sigma_1^2 * T_1 + sigma_2^2 * T_2) / (T_1 + T_2) )",
     "fields": [
      {
       "label": "Wrong",
       "value": "Averaging two volatilities directly",
       "mono": true
      },
      {
       "label": "Right",
       "value": "Averaging variances weighted by time, then taking the square root",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "A 7-day interval at 0.60 and a following 23-day interval at 0.20. Variance contributions: 0.36 * 7/365 = 0.00690411 and 0.04 * 23/365 = 0.00252055. Total over 30 days = 0.00942466. sigma_total = sqrt(0.00942466 / (30/365)) = sqrt(0.114667) = 0.338625, i.e. 33.8625 percent. The naive time-weighted average of the volatilities is 0.293333, understating by more than four volatility points",
       "mono": true
      }
     ],
     "notes": [
      "The square root is convex, so a variance-correct blend always exceeds the naive volatility average when the two inputs differ. The gap widens with the dispersion.",
      "This is the same arithmetic that makes a single event day dominate a short-dated volatility quote out of all proportion to its length."
     ]
    },
    {
     "id": "forward-implied-volatility",
     "term": "Forward implied volatility",
     "definition": "The volatility implied for the interval between two expirations, extracted from the two spot implied volatilities by variance subtraction. A negative result inside the square root indicates a calendar arbitrage or bad data.",
     "formula": "sigma_fwd = sqrt( (sigma_2^2 * T_2 - sigma_1^2 * T_1) / (T_2 - T_1) )",
     "fields": [
      {
       "label": "No-arbitrage condition",
       "value": "sigma_2^2 * T_2 >= sigma_1^2 * T_1; total variance must be non-decreasing in maturity",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "T_1 = 7/365 at sigma_1 = 0.60, T_2 = 30/365 at sigma_2 = 0.40. Total variances: 0.36 * 0.0191781 = 0.00690411 and 0.16 * 0.0821918 = 0.01315068. Forward variance = (0.01315068 - 0.00690411) / (23/365) = 0.099130. sigma_fwd = 0.314850, i.e. 31.4850 percent for the 23-day interval beginning in 7 days",
       "mono": true
      }
     ],
     "notes": [
      "A steeply inverted front end can imply a forward volatility far below both quoted numbers. That is not an error; it is what a concentrated near-dated event does to the term structure.",
      "A calendar spread is a position on forward volatility, not on either quoted volatility. Pricing it against the spot volatilities of the two legs misstates the exposure.",
      "When the expression under the square root is negative, the two quotes are jointly inconsistent. Check the rate, dividend and settlement-time assumptions before concluding an arbitrage exists."
     ]
    },
    {
     "id": "volatility-smile-skew",
     "term": "Volatility smile, skew and term structure",
     "definition": "Implied volatility is not constant across strikes or expirations, so a single sigma cannot reprice a whole surface. The pattern across strikes at one expiry is the smile or skew; the pattern across expiries at one moneyness is the term structure.",
     "formula": "Skew slope = (IV at K_low - IV at K_high) / (K_high - K_low), or per unit of delta",
     "fields": [
      {
       "label": "Smile",
       "value": "Implied volatility higher on both wings than at the money, symmetric or nearly so",
       "mono": true
      },
      {
       "label": "Skew",
       "value": "Implied volatility monotonically higher on one side, producing an asymmetric curve",
       "mono": true
      },
      {
       "label": "Common quoting conventions",
       "value": "25-delta risk reversal: IV(25-delta call) - IV(25-delta put). 25-delta butterfly: 0.5*(IV(25d call) + IV(25d put)) - IV(ATM)",
       "mono": true
      },
      {
       "label": "Term structure",
       "value": "IV as a function of T at fixed moneyness; must satisfy non-decreasing total variance",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "At one expiry, IV of 0.24 at K = 90 and 0.18 at K = 110 gives a slope of (0.24 - 0.18) / 20 = 0.003 volatility per point of strike, so an interpolated K = 100 sits at 0.21 under a linear fit",
       "mono": true
      }
     ],
     "notes": [
      "A skew makes the Black-Scholes constant-sigma assumption false by construction, which is why traders use the model as a quoting convention rather than a belief about the world.",
      "Interpolating a surface linearly in strike can produce a negative implied density and therefore a butterfly arbitrage. Interpolation is normally done in variance against log-moneyness for that reason.",
      "A skew means the wings of a spread carry different implied volatilities, so a vertical is a position on the skew as well as on direction, whether intended or not."
     ]
    },
    {
     "id": "parity-pins-iv",
     "term": "Put-call parity pins one implied volatility per strike",
     "definition": "Because the difference between a call and a put at the same strike and expiry is model-free, a European call and put at the same strike must share a single implied volatility. Any observed difference is an artefact of the inputs used, not a real dislocation.",
     "formula": "C - P = S*exp(-q*T) - K*exp(-r*T), independent of sigma",
     "fields": [
      {
       "label": "Implication",
       "value": "One implied volatility per strike and expiry, not one per option type",
       "mono": true
      },
      {
       "label": "Diagnostic",
       "value": "If inverted call and put IVs differ, the discrepancy is in r, q, the underlying reference price, or the quote timestamp",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "At S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20: call = 4.485236, put = 3.490220. Difference = 0.995017. Independently, S - K*exp(-r*T) = 100 - 100*exp(-0.01) = 0.995017. The two agree to eight decimals, and they would agree at any sigma",
       "mono": true
      }
     ],
     "notes": [
      "This is the single most useful consistency check on an options data feed. Run it before trusting any implied volatility the feed publishes.",
      "On American-style equity options the identity holds only approximately, and the residual is a read on borrow cost and pending dividends rather than on volatility.",
      "A persistent call-put IV gap in a vendor feed usually means the vendor is using a different dividend forecast, not that the market disagrees with itself."
     ]
    },
    {
     "id": "iv-crush",
     "term": "The arithmetic of an implied volatility crush around a known event",
     "definition": "When a scheduled event sits inside an option life, the quoted implied volatility blends a diffusive component with a one-off jump component. Once the event passes, the jump component leaves the quote and the implied volatility falls by a computable amount irrespective of the price move.",
     "formula": "sigma_quoted^2 * T = sigma_base^2 * T + J^2, where J is the standard deviation of the one-off event move",
     "fields": [
      {
       "label": "Solving for the event component",
       "value": "J = sqrt(sigma_quoted^2 * T - sigma_base^2 * T)",
       "mono": true
      },
      {
       "label": "Post-event implied volatility",
       "value": "sigma_base, once J has been removed",
       "mono": true
      },
      {
       "label": "Crush in volatility points",
       "value": "100 * (sigma_quoted - sigma_base)",
       "mono": true
      },
      {
       "label": "First-order value effect",
       "value": "position vega per point multiplied by the crush in points",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "T = 5/365 = 0.0136986. Quoted sigma = 0.60, assumed base sigma = 0.30. Total variance 0.36 * 0.0136986 = 0.00493151; base variance 0.09 * 0.0136986 = 0.00123288. J = sqrt(0.00369863) = 0.060816, so the quote embeds a 6.0816 percent one-off move. Crush = 30.00 volatility points. An at-the-money straddle at S = 100 on those inputs has vega 0.093299 per point per share, so the linear estimate of the crush is -30 * 9.3299 = -279.90 per contract pair. Repricing the straddle from 0.60 to 0.30 gives 5.6006 to 2.8010 per share, an actual change of -279.96 per contract pair. The linear vega estimate is within 0.02 percent",
       "mono": true
      }
     ],
     "notes": [
      "The crush is a function of the event and the tenor, not of the direction of the move. A position can be right on direction and still lose if the realised move is smaller than J.",
      "J is the move the quote is charging for. Comparing J to the move a position needs is the same comparison as breakeven versus expected move, expressed in variance terms.",
      "Shorter tenors embed a larger volatility number for the same J, because J is divided by a smaller sqrt(T). Comparing headline implied volatilities across tenors around an event compares nothing."
     ]
    },
    {
     "id": "vega-exposure-per-point",
     "term": "Vega exposure per volatility point",
     "definition": "The dollar change in position value for a one-point change in implied volatility, which is the form vega is quoted in and the form position limits are usually set in.",
     "formula": "Position vega per point = sum over legs of (signed qty) * multiplier * Vega_leg / 100",
     "fields": [
      {
       "label": "Single leg",
       "value": "Vega / 100 per share, then times the multiplier",
       "mono": true
      },
      {
       "label": "Across tenors",
       "value": "Not additive without weighting; a common convention is to weight each tenor by sqrt(T_ref / T)",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "At S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20: raw Vega = 19.7240, so 0.197240 per point per share and 19.72 dollars per point per contract. A 100/105 call spread nets 19.7240 - 18.8403 = 0.8837 dollars per point. Ten short at-the-money calls carry -197.24 dollars per point",
       "mono": true
      }
     ],
     "notes": [
      "Summing vega across expirations treats a one-point move in a one-week tenor as equal to a one-point move in a one-year tenor. It is not, and an unweighted total vega on a book with a term spread is close to meaningless.",
      "Vega is quoted per point but the derivative is per unit. A raw vega of 19.72 and a quoted vega of 0.1972 are the same number under different conventions, and mixing them is a factor-of-100 error."
     ]
    },
    {
     "id": "iv-newton-on-vega",
     "term": "Solving implied volatility by Newton with vega as the derivative",
     "definition": "Option value is strictly increasing in sigma, and its derivative in sigma is vega in closed form, so Newton's method applies directly with no numerical differentiation. Where vega is not small it converges quadratically and reaches machine precision in three or four steps from almost any starting point.",
     "formula": "sigma_{n+1} = sigma_n - [BS(S, K, T, r, q, sigma_n) - Price] / Vega(sigma_n)",
     "fields": [
      {
       "label": "Derivative",
       "value": "Vega = S*exp(-q*T)*phi(d1)*sqrt(T), the raw derivative and not the per-point quoted figure",
       "mono": true
      },
      {
       "label": "Convergence",
       "value": "Quadratic while vega is bounded away from zero: the number of correct digits roughly doubles each step",
       "mono": false
      },
      {
       "label": "Bracketing fallback",
       "value": "Bisection on [1e-8, 5.0], which cannot diverge because value is monotone in sigma. Costs about 50 iterations for full double precision",
       "mono": true
      },
      {
       "label": "Sensitivity of the answer to the price",
       "value": "dsigma/dPrice = 1/Vega, so the uncertainty in an implied volatility is the price uncertainty divided by vega",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25, at which the K = 100 call is 4.485236409. These are inputs chosen to make the arithmetic checkable, not observations of any market. Inverting a price of 4.485236409 from a start of sigma = 0.50: step 1 gives 0.1992338610 with a price of 10.4035391530 and vega 19.677424; step 2 gives 0.2000000111 with a price of 4.4701253275; step 3 gives 0.2000000000 with a price of 4.4852366285; step 4 confirms with a price error of exactly zero. Four iterations from an error of 0.30. Separately, a one-cent price change at this strike moves the implied volatility by 0.01/0.197240 = 0.050705, i.e. 5.07 hundredths of a volatility point, verified by inverting 4.48 and 4.49 to 0.199735 and 0.200242",
       "mono": true
      }
     ],
     "notes": [
      "Always use the raw vega, not the vega divided by 100 that the risk screen shows. Using the quoted figure makes every Newton step a hundred times too large and the iteration will appear to diverge.",
      "Bracket before you iterate. If the price is outside the no-arbitrage bounds there is no root, and Newton will wander for as long as you let it rather than telling you so.",
      "The quantity 1/vega is the correct error bar on any published implied volatility. A feed that quotes IV to three decimals on a contract whose vega implies half a point of uncertainty per tick is reporting precision it does not have."
     ]
    },
    {
     "id": "iv-newton-failure-deep-otm",
     "term": "Why the implied-volatility inversion fails deep out of the money",
     "definition": "Vega goes to zero faster than value does as a strike moves away from the money, so the Newton step, which divides by vega, becomes unboundedly large and the mapping from price to volatility becomes numerically unusable. The failure is not in the algorithm; it is that the price carries almost no information about sigma at that strike.",
     "formula": "dsigma/dPrice = 1/Vega, and Vega goes to zero as |d1| grows, so the inversion error is amplified by 1/Vega",
     "fields": [
      {
       "label": "Mechanism",
       "value": "Vega is proportional to phi(d1), which decays like exp(-d1^2/2). Moving two more standard deviations out of the money cuts vega by roughly a factor of e-squared per unit of d1",
       "mono": false
      },
      {
       "label": "Practical boundary",
       "value": "The inversion stops being informative once the model price at a plausible sigma falls below the minimum quotable tick",
       "mono": false
      },
      {
       "label": "What to do instead",
       "value": "Interpolate the surface in variance against log-moneyness from strikes where vega is material, rather than inverting a price that is one tick wide",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "S = 100, T = 0.25, r = 0.04, q = 0, K = 200. At sigma = 0.20 the model price is 8.314e-12 and vega is 2.06e-09 raw; at sigma = 0.10 vega is 8.16e-40. Newton started at 0.50 to hit the sigma = 0.20 price walks 0.45001000, 0.41191065, 0.38171430, 0.35706701, 0.33648284, 0.31897386 - six steps and it has covered 40 percent of the distance, with each step shrinking rather than accelerating. Read the other way: the minimum 0.01 tick at K = 200 already implies sigma = 0.447857, a 0.05 quote implies 0.521454 and a 0.10 quote implies 0.563981, so one nickel of price is 4.2528 volatility points. At K = 100 the same 0.05 of price spans only 0.198732 to 0.201267, i.e. 0.2535 volatility points, so one nickel of price carries 16.78 times more volatility information at the money than it does at K = 200",
       "mono": true
      }
     ],
     "notes": [
      "A deep out-of-the-money strike does not have a well-determined implied volatility, and printing one to three decimals implies otherwise. The honest output is a range, or nothing.",
      "This is why far-wing implied volatilities in vendor feeds jump around by whole points day to day while the underlying barely moves. The quote moved one tick.",
      "The same arithmetic explains why wing volatility is where a fitted surface adds the most value: it replaces a number the price cannot determine with one the neighbouring strikes can."
     ]
    },
    {
     "id": "volatility-surface-definition",
     "term": "The volatility surface in strike-maturity space",
     "definition": "The implied volatility of every listed contract on one underlying, arranged as a function of strike and expiration. It is not a model output; it is a restatement of the option prices in a unit that removes S, K, T and r, and it is subject to arbitrage constraints in both directions.",
     "formula": "sigma_imp(K, T) such that BS(S, K, T, r, q, sigma_imp) equals the observed price at every (K, T). Total variance w(K, T) = sigma_imp(K, T)^2 * T",
     "fields": [
      {
       "label": "Strike direction, the smile or skew",
       "value": "A slice at fixed T. Must satisfy call-spread and butterfly no-arbitrage constraints",
       "mono": false
      },
      {
       "label": "Maturity direction, the term structure",
       "value": "A slice at fixed moneyness. Total variance must be non-decreasing in T at fixed log-moneyness",
       "mono": true
      },
      {
       "label": "Butterfly constraint",
       "value": "The second derivative of the call price in K must be non-negative, equivalently dual gamma is non-negative",
       "mono": true
      },
      {
       "label": "Calendar constraint",
       "value": "w(k, T2) is at least w(k, T1) for T2 above T1, which forbids a forward variance below zero",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Calendar constraint at a stated pair of quotes: T1 = 7/365 at sigma = 0.60 gives w1 = 0.36*0.0191781 = 0.00690411, and T2 = 30/365 at sigma = 0.40 gives w2 = 0.16*0.0821918 = 0.01315068. Since w2 exceeds w1 the pair is admissible, and the implied forward variance over the 23-day interval is (0.01315068 minus 0.00690411)/(23/365) = 0.09913043, a forward volatility of 0.31484986. The floor the constraint places on the 30-day quote given the 7-day quote is sigma_2 at least 0.60*sqrt(7/30) = 0.28982753; a 30-day quote below that would be a calendar arbitrage",
       "mono": true
      }
     ],
     "notes": [
      "The surface is quoted in volatility and constrained in variance. Every no-arbitrage condition above is clean in w and messy in sigma, which is the whole argument for working in total variance.",
      "A surface fitted strike by strike with no cross-strike constraint will produce butterfly arbitrages on any day the quotes are noisy. The constraint is not decoration.",
      "Two vendors publishing different surfaces for the same underlying usually differ in the forward and the dividend assumption, not in the option prices. Reconcile w at the at-the-money strike before comparing wings."
     ]
    },
    {
     "id": "sticky-strike-sticky-delta",
     "term": "Sticky strike, sticky delta and sticky moneyness, and the delta each one implies",
     "definition": "A skew means volatility is a function of strike, so a move in the underlying changes the volatility applicable to a fixed strike unless the surface is assumed rigid in strike space. The assumption made about that determines the total delta, and the three standard assumptions give three materially different numbers for the same contract.",
     "formula": "Total delta = Delta_BS + Vega * dsigma/dS. Sticky strike: dsigma/dS = 0. Sticky moneyness or sticky delta: dsigma/dS = minus (dsigma/dK)*(K/S). Skew-following spot: dsigma/dS = dsigma/dK",
     "fields": [
      {
       "label": "Sticky strike",
       "value": "sigma attached to the strike and unchanged by a spot move. Total delta equals the Black-Scholes delta",
       "mono": false
      },
      {
       "label": "Sticky moneyness, also sticky delta",
       "value": "sigma a function of K/S, so the whole smile translates with spot. dsigma/dS = minus (dsigma/dK)*(K/S)",
       "mono": true
      },
      {
       "label": "Skew-following spot",
       "value": "sigma at a fixed strike moves in the same direction as the strike-slope, so the smile moves against spot. dsigma/dS = dsigma/dK",
       "mono": true
      },
      {
       "label": "Units warning",
       "value": "Vega here is the raw derivative, not vega per point. Using the per-point figure understates the adjustment by a factor of 100",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Reference inputs S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25, with a stated skew slope dsigma/dK = minus 0.003 per point of strike, chosen for checkability and not observed anywhere. At K = 100: Black-Scholes delta 0.559618, raw vega 19.723967. Sticky moneyness gives dsigma/dS = plus 0.00300000 and a total delta of 0.618790, a shift of plus 0.059172. Skew-following spot gives dsigma/dS = minus 0.00300000 and a total delta of 0.500446, a shift of minus 0.059172. At K = 95 the two shifts are plus 0.045634 and minus 0.048036 against a base delta of 0.746313; at K = 105 they are plus 0.059347 and minus 0.056521 against 0.367719. The regime assumption moves the at-the-money delta by 11.8 points from one extreme to the other, on the same contract, at the same instant",
       "mono": true
      }
     ],
     "notes": [
      "The gap between the two extreme regimes on the worked at-the-money contract is 0.118344 of delta, which is exactly what a 3.00 move in the underlying would do through gamma alone, since Gamma*3.00 = 0.039448*3 = 0.118344. Choosing the regime is therefore the same size of decision as being wrong about spot by three points. It is not a refinement; it is a first-order disagreement about the hedge.",
      "A risk system that reports one delta is silently asserting one regime. Find out which before reconciling a hedge against it.",
      "The regimes are not interchangeable at different tenors: short-dated surfaces behave closer to sticky strike over small moves and closer to sticky moneyness over large ones, so a single choice applied across a book will be wrong somewhere by construction."
     ]
    },
    {
     "id": "sabr-parameterisation",
     "term": "SABR parameterisation",
     "definition": "A stochastic-volatility model for a single forward, in which the forward follows dF = alpha_t*F^beta dW1 and alpha_t follows d(alpha) = nu*alpha dW2 with correlation rho. Its practical use is not the process but the published asymptotic expansion, which gives Black implied volatility directly as a function of strike in four parameters.",
     "formula": "sigma_B(K,F) = [alpha / (D * z_over_x)] inverted as: sigma_B = (alpha / D) * (z/x(z)) * B, with D = (F*K)^((1-beta)/2) * [1 + ((1-beta)^2/24)*ln^2(F/K) + ((1-beta)^4/1920)*ln^4(F/K)],  z = (nu/alpha)*(F*K)^((1-beta)/2)*ln(F/K),  x(z) = ln( (sqrt(1 - 2*rho*z + z^2) + z - rho) / (1 - rho) ),  B = 1 + [ ((1-beta)^2/24)*alpha^2/(F*K)^(1-beta) + (rho*beta*nu*alpha)/(4*(F*K)^((1-beta)/2)) + nu^2*(2 - 3*rho^2)/24 ] * T",
     "fields": [
      {
       "label": "alpha",
       "value": "Level. Sets the at-the-money volatility, since sigma_ATM is approximately alpha/F^(1-beta) times the B factor",
       "mono": false
      },
      {
       "label": "beta",
       "value": "Backbone. beta = 1 is lognormal and beta = 0 normal; it fixes how the smile moves when the forward moves",
       "mono": false
      },
      {
       "label": "rho",
       "value": "Correlation between forward and volatility. Controls the slope of the smile",
       "mono": false
      },
      {
       "label": "nu",
       "value": "Volatility of volatility. Controls the curvature of the smile",
       "mono": false
      },
      {
       "label": "At-the-money limit",
       "value": "sigma_ATM = (alpha/F^(1-beta)) * B, which is the K = F limit of the general formula",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "F = 100, T = 0.25, alpha = 0.20, beta = 1, rho = minus 0.30, nu = 0.40, all chosen for checkability. The expansion returns 0.21268532 at K = 85, 0.20777936 at K = 90, 0.20364996 at K = 95, 0.20027667 at K = 100, 0.19763009 at K = 105, 0.19566979 at K = 110 and 0.19434424 at K = 115 - a monotone downward skew of about 1.83 volatility points over the 30-point strike range. Two internal consistency checks: the dedicated at-the-money formula returns 0.20027667, identical to the general formula evaluated at K = F minus 1e-9; and with beta = 1, rho = 0 and nu shrunk toward zero the formula must collapse to sigma = alpha = 0.20, which it does, returning 0.2000013417 at nu = 0.01, 0.2000000134 at nu = 0.001 and 0.2000000000 at nu = 1e-06",
       "mono": true
      }
     ],
     "notes": [
      "The z/x(z) factor is numerically unstable as z approaches zero, which is exactly at the money. At nu = 1e-12 the check above returns 0.1999585247 rather than 0.20 - a catastrophic-cancellation artefact, not a model result. Every production implementation needs an explicit small-z branch, and the entry above uses the closed at-the-money form there.",
      "beta and rho are jointly close to unidentifiable from a single smile: a range of beta values fit almost equally well with a compensating rho. Most desks fix beta by convention and fit the other three.",
      "It is an expansion, so its accuracy degrades at long maturities and in the far wings, and it can produce negative densities at extreme strikes. That is a known property and not a calibration failure."
     ],
     "source": "Hagan, Kumar, Lesniewski and Woodward 2002"
    },
    {
     "id": "svi-parameterisation",
     "term": "SVI parameterisation",
     "definition": "A five-parameter functional form for total implied variance as a function of log-moneyness. It is a fitting form rather than a model of the underlying, and its value is that its no-arbitrage conditions are explicit algebraic inequalities in the five parameters.",
     "formula": "w(k) = a + b*[rho*(k - m) + sqrt((k - m)^2 + s^2)], with k = ln(K/F) and implied volatility sigma(k) = sqrt(w(k)/T)",
     "fields": [
      {
       "label": "a",
       "value": "Vertical level of total variance. Shifts the whole slice",
       "mono": false
      },
      {
       "label": "b",
       "value": "Overall wing angle. Non-negative",
       "mono": false
      },
      {
       "label": "rho",
       "value": "Asymmetry between the two wings. Must lie strictly between minus 1 and plus 1",
       "mono": false
      },
      {
       "label": "m",
       "value": "Horizontal shift of the smile in log-moneyness",
       "mono": false
      },
      {
       "label": "s",
       "value": "Smoothing of the vertex. Strictly positive; s = 0 gives a kink",
       "mono": false
      },
      {
       "label": "Asymptotic wing slopes",
       "value": "Left slope b*(1 - rho), right slope b*(1 + rho)",
       "mono": true
      },
      {
       "label": "No-arbitrage conditions",
       "value": "b*(1 + |rho|) is at most 4/T from the Lee moment formula, and the minimum of w, which is a + b*s*sqrt(1 - rho^2), must be non-negative",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "a = 0.010, b = 0.060, rho = minus 0.40, m = 0.02, s = 0.12, T = 0.25, all chosen for checkability. w at k = minus 0.20 is 0.03031596, giving sigma = 0.34822956; at k = minus 0.10, w = 0.02306234 and sigma = 0.30372578; at k = 0, w = 0.01777932 and sigma = 0.26667820; at k = plus 0.10, w = 0.01673332 and sigma = 0.25871469; at k = plus 0.20, w = 0.01865998 and sigma = 0.27320311. Wing slopes: left b*(1 - rho) = 0.084000, right b*(1 + rho) = 0.036000, so the left wing is 2.33 times steeper. Lee condition: b*(1 + |rho|) = 0.084000 against a limit of 4/T = 16.000000, satisfied with a wide margin. Minimum total variance = 0.010 + 0.060*0.12*sqrt(0.84) = 0.01659891, positive as required",
       "mono": true
      }
     ],
     "notes": [
      "The minimum of w is at k = m minus s*rho/sqrt(1 - rho^2), which is not at k = m. On the worked parameters that is k = 0.07237229, not k = 0.02, and w there is 0.01659891, matching the closed-form minimum a + b*s*sqrt(1 - rho^2) exactly. Reporting m as the location of the vertex is wrong whenever rho is non-zero.",
      "The Lee bound is almost never binding at equity tenors and becomes binding on very short-dated slices, where 4/T is small. A one-day slice has a limit of 1460, a one-year slice a limit of 4.",
      "Satisfying the per-slice conditions does not make a whole surface arbitrage-free. Calendar arbitrage between slices is a separate constraint, and it is the one that a slice-by-slice fit breaks most often."
     ],
     "source": "Gatheral 2004; Gatheral and Jacquier 2014"
    },
    {
     "id": "dupire-local-volatility",
     "term": "Local volatility via Dupire",
     "definition": "Given a complete arbitrage-free surface of European call prices, there is exactly one local volatility function that reproduces every one of them. It is recovered by differentiating the call surface, once in maturity and twice in strike, with no optimisation and no model fitting.",
     "formula": "sigma_loc^2(K, T) = [ dC/dT + (r - q)*K*dC/dK + q*C ] / [ 0.5*K^2*d2C/dK2 ]",
     "fields": [
      {
       "label": "Numerator",
       "value": "The calendar direction plus the carry terms. Non-negative for an arbitrage-free surface",
       "mono": false
      },
      {
       "label": "Denominator",
       "value": "Proportional to the implied terminal density at K, since d2C/dK2 = exp(-r*T) times the density",
       "mono": true
      },
      {
       "label": "Failure mode",
       "value": "A negative numerator is a calendar arbitrage and a negative denominator a butterfly arbitrage. Both surface as an imaginary local volatility rather than as a warning",
       "mono": false
      },
      {
       "label": "Verification used here",
       "value": "Feeding a surface generated from a constant sigma = 0.20 must return 0.20 at every point, and it does",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Surface generated from Black-Scholes-Merton at a constant sigma = 0.20, S = 100, r = 0.04, q = 0, with derivatives taken by central differences at hK = 1 percent of K and hT = 1e-04. At K = 90, T = 0.25: dC/dT = plus 6.950365, dC/dK = minus 0.856151, d2C/dK2 = plus 0.02386808, and sigma_loc = 0.20004120. At K = 100, T = 0.25: 9.948648, minus 0.514798, 0.03941534, sigma_loc = 0.20008102. At K = 110, T = 0.25: sigma_loc = 0.19995781. At K = 100, T = 0.50: 0.20003937. At K = 110, T = 1.00: 0.20000190. Every point returns 0.20 to within 8e-05, which is the finite-difference truncation error and not a property of the formula",
       "mono": true
      }
     ],
     "notes": [
      "The denominator is the implied density, so local volatility is worst determined exactly where there is least probability mass: the far wings. A local-vol surface is a smooth function fitted to a quantity that is numerically hopeless out there.",
      "Local volatility reprices every vanilla by construction, which is often mistaken for evidence that it is right. It says nothing about whether it prices a barrier or a cliquet correctly, because those depend on the dynamics and not just the marginals.",
      "In practice the second derivative in strike is taken from a fitted implied-volatility slice rather than from raw quotes, because differencing noisy mid prices twice amplifies the noise by the square of the strike gap."
     ],
     "source": "Dupire 1994"
    },
    {
     "id": "variance-swap-replication",
     "term": "Variance swaps and the log-contract replication",
     "definition": "A contract paying realised variance minus a fixed strike. Its fair strike is replicable, with no volatility model, from a continuum of out-of-the-money option prices weighted by one over strike squared. This is the log-contract result and it is the reason variance, not volatility, is the tradable quantity.",
     "formula": "K_var = (2*exp(r*T)/T) * [ integral from 0 to F of P(K)/K^2 dK  +  integral from F to infinity of C(K)/K^2 dK ], with F = S*exp((r - q)*T)",
     "fields": [
      {
       "label": "Payoff",
       "value": "Notional * (realised variance minus K_var), with realised variance computed by a stated formula in the contract, normally zero-mean close-to-close",
       "mono": false
      },
      {
       "label": "Why 1/K^2",
       "value": "It is the weight that makes the option portfolio replicate minus 2*ln(S_T/F), whose expected value under the risk-neutral measure is the total variance",
       "mono": false
      },
      {
       "label": "Static hedge",
       "value": "The option strip is held to maturity unchanged; only the delta hedge of the log contract is rebalanced",
       "mono": false
      },
      {
       "label": "Vega notional",
       "value": "A variance notional N_var corresponds to a vega notional of about 2*K_vol*N_var, so the two are quoted in different units and differ by a factor of roughly twice the volatility",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "On a flat surface at sigma = 0.20 with S = 100, r = 0.04, q = 0, T = 0.25, the forward is F = 101.005017. Evaluating both integrals by Simpson quadrature with 2,000 nodes and a truncation at K = 200 returns K_var = 0.04000000, a fair volatility of 0.20000000, matching the generating volatility to eight decimals. Extending the truncation to 400, 1,000 and 4,000 changes nothing at eight decimals, because the 1/K^2 weight makes the far tail contribute almost nothing at this tenor",
       "mono": true
      }
     ],
     "notes": [
      "The replication is exact for a continuum of strikes and continuous monitoring. Every real variance swap deviates from it in two known ways: a finite strike grid and discrete return sampling, and the first is much larger than the second.",
      "Because the strip is 1/K^2-weighted, a variance swap is much longer the downside wing than a straddle of the same vega. A position that looks like a volatility position is substantially a skew position.",
      "Truncating the strip converts the exact replication into a corridor variance swap, which is a different contract with a different fair strike. The gap is not hedging error; it is a payoff difference."
     ],
     "source": "Carr and Madan 1998; Demeterfi, Derman, Kamal and Zou 1999"
    },
    {
     "id": "vix-white-paper-calculation",
     "term": "The VIX calculation as published in the CBOE white paper",
     "definition": "A discretised version of the variance-swap fair strike, applied to two option expirations bracketing 30 days and interpolated between them. The published formula is a finite sum over listed out-of-the-money strikes plus a correction term for the gap between the forward and the nearest strike below it.",
     "formula": "sigma^2 = (2/T) * sum over i of [ (dK_i / K_i^2) * exp(r*T) * Q(K_i) ]  -  (1/T) * (F/K0 - 1)^2, with K0 the highest listed strike at or below F, Q(K_i) the out-of-the-money mid price, and dK_i the half-distance between neighbouring strikes",
     "fields": [
      {
       "label": "F",
       "value": "Derived from the strike at which the call and put prices are closest, as F = K + exp(r*T)*(C - P)",
       "mono": true
      },
      {
       "label": "K0",
       "value": "The highest strike at or below F. Below K0 puts are used, above it calls, and at K0 the average of the two",
       "mono": false
      },
      {
       "label": "Correction term",
       "value": "minus (1/T)*(F/K0 - 1)^2, which adjusts for K0 not coinciding with F",
       "mono": true
      },
      {
       "label": "30-day interpolation",
       "value": "Interpolate in total variance between the near-term and next-term expirations, then annualise and multiply by 100",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Prices generated from Black-Scholes-Merton at a constant sigma = 0.20 with S = 100, r = 0.04, q = 0, T = 30/365, so the correct answer is exactly 20.000000 and any departure is method error. F = 100.329308 and K0 = 100. With 5.00 strike spacing over 50 to 150 the formula returns sigma squared = 0.04509873 and an index level of 21.236462, an error of plus 1.236462 volatility points. Widening the range to 20 to 300 at the same spacing changes nothing, so the error is spacing and not truncation. At 2.50 spacing the level is 20.316294, error plus 0.316294. At 1.00 spacing it is 20.050890, error plus 0.050890. Error falls roughly with the square of the spacing and is upward at every spacing tested",
       "mono": true
      }
     ],
     "notes": [
      "The discretisation bias is upward, so a strike grid alone makes the index read above the variance it is estimating. On a 5-point grid at this level and tenor the effect measured here is 1.24 volatility points, which is larger than most of the daily changes people attribute to sentiment.",
      "The index is a variance calculation reported as a volatility. Interpolating two index levels linearly, rather than interpolating in variance and then taking the square root, reintroduces the error the whole construction was designed to avoid.",
      "The correction term is not cosmetic. Dropping it on a grid where F sits midway between strikes biases the result by roughly (F/K0 - 1)^2/T. On a 2.50 strike grid at a level of 100, F sitting midway gives F/K0 minus 1 = 0.0125 and a correction of 0.001901 in variance, which at a 20 volatility level moves the reported index from 20.0000 to 20.4697 - 0.4697 volatility points from one omitted term. On a 5.00 grid the same calculation gives 1.8184 points."
     ],
     "source": "CBOE VIX white paper"
    },
    {
     "id": "volatility-cones",
     "term": "Volatility cones",
     "definition": "The distribution of realised volatility computed over a range of window lengths from the same return history, plotted as percentile bands against window length. It exists because the sampling variability of a realised-volatility estimate depends on the window, so a 5-day estimate and a 60-day estimate from identical data are not comparable numbers.",
     "formula": "For each window w: sigma_w(i) = sqrt( (252/w) * sum over the w returns ending at i of ln(S_t/S_{t-1})^2 ), then take the percentiles of {sigma_w(i)} across all i",
     "fields": [
      {
       "label": "What narrows with w",
       "value": "The width of the band. The standard error of a variance estimate falls with the square root of the number of observations",
       "mono": false
      },
      {
       "label": "What the band is not",
       "value": "A forecast interval. It is the historical dispersion of an estimator, not the distribution of future volatility",
       "mono": false
      },
      {
       "label": "Overlapping windows",
       "value": "Rolling windows overlap, so the observations are serially dependent and the percentiles are narrower than an independent sample would give",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Computed on a stated synthetic series, r_t = 0.01*sin(t) for t = 1 to 60, chosen because it is fully reproducible and is not market data. Window 5 days, 56 overlapping observations: min 0.098632, 25th percentile 0.102696, median 0.113653, 75th percentile 0.120440, max 0.124384 - a band 0.025752 wide. Window 10 days, 51 observations: min 0.108582, median 0.112202, max 0.115798, a band 0.007216 wide. Window 20 days, 41 observations: min 0.109183, median 0.112182, max 0.115237, a band 0.006054 wide. The 5-day band is 4.3 times the width of the 20-day band on identical data, and the medians agree to within 0.0015",
       "mono": true
      }
     ],
     "notes": [
      "The cone shape is a property of the estimator, not of the market. A synthetic series with no volatility clustering at all produces one, as the worked example shows.",
      "Because rolling windows overlap, the extremes of a cone are much less independent than the observation count suggests. Treating 56 overlapping 5-day windows as 56 observations overstates the sample by roughly the window length.",
      "The cone answers one narrow and useful question: whether a realised-volatility reading is unusual for the window it was measured over. It does not answer whether it is unusual for the underlying."
     ]
    },
    {
     "id": "variance-space-interpolation",
     "term": "Term-structure interpolation in variance space",
     "definition": "Interpolating an implied volatility between two expirations must be done on total variance, which is additive in time, not on volatility, which is not. Interpolating volatility linearly understates the intermediate level whenever the front is higher, and the error is not small.",
     "formula": "w(T) = w1 + (w2 - w1)*(T - T1)/(T2 - T1), with w = sigma^2*T; then sigma(T) = sqrt(w(T)/T)",
     "fields": [
      {
       "label": "Why variance",
       "value": "Total variance over disjoint intervals adds. Volatility does not, because the square root is concave",
       "mono": false
      },
      {
       "label": "Direction of the error",
       "value": "Linear-in-volatility interpolation lies above the variance-correct value when the front volatility is the higher of the two, and below it when the back is",
       "mono": false
      },
      {
       "label": "Admissibility",
       "value": "The interpolation is arbitrage-free only if w is non-decreasing in T, i.e. w2 is at least w1",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "T1 = 7 days at sigma = 0.60 gives w1 = 0.00690411; T2 = 30 days at sigma = 0.40 gives w2 = 0.01315068. At T = 10 days the variance-correct interpolation gives w = 0.00771888 and sigma = 0.53079104, against a naive linear-in-volatility figure of 0.57391304 - a gap of 4.3122 volatility points. At 14 days: 0.47912965 against 0.53913043, a gap of 6.0001 points. At 21 days: 0.43137797 against 0.47826087, a gap of 4.6883 points. The maximum error sits in the middle of the interval, which is where interpolation is most often needed",
       "mono": true
      }
     ],
     "notes": [
      "A six-point interpolation error at a 14-day tenor is larger than most bid-ask spreads in volatility terms. This is a pricing error, not a rounding preference.",
      "The same argument applies across strikes: interpolate in total variance against log-moneyness, not in volatility against strike, or a linear fit can produce a negative implied density.",
      "When w2 is below w1 the interpolation is still computable and is meaningless, because the pair of quotes is jointly inconsistent. Check the monotonicity before interpolating, not after."
     ]
    },
    {
     "id": "forward-variance-and-its-floor",
     "term": "Forward variance and the floor it places on a longer-dated quote",
     "definition": "The variance attributable to the interval between two expirations, obtained by subtracting total variances. Because it cannot be negative, it converts every pair of quoted implied volatilities into a hard lower bound on the longer-dated one.",
     "formula": "Forward variance over [T1, T2] = (sigma_2^2*T_2 - sigma_1^2*T_1)/(T_2 - T_1);  floor: sigma_2 is at least sigma_1*sqrt(T_1/T_2)",
     "fields": [
      {
       "label": "Forward volatility",
       "value": "The square root of the forward variance, applicable to the interval and not to either quoted tenor",
       "mono": true
      },
      {
       "label": "Non-negativity",
       "value": "A negative forward variance is a calendar arbitrage in the quotes, not a market view",
       "mono": false
      },
      {
       "label": "Floor",
       "value": "sigma_2 at least sigma_1*sqrt(T_1/T_2), which follows directly from w2 being at least w1",
       "mono": true
      },
      {
       "label": "Additivity",
       "value": "Forward variances over disjoint intervals weighted by interval length sum to the total variance, which volatilities never do",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "T1 = 7/365 at sigma_1 = 0.60 and T2 = 30/365 at sigma_2 = 0.40. Total variances 0.00690411 and 0.01315068. Forward variance = (0.01315068 minus 0.00690411)/(23/365) = 0.09913043, so the forward volatility for the 23-day interval beginning in 7 days is 0.31484986 - well below both quoted numbers, which is what a concentrated front-end event does. The floor: sigma_2 must be at least 0.60*sqrt(7/30) = 0.28982753, so the 0.40 quote clears it by 11 volatility points. Reconstruction check: 0.36*(7/365) plus 0.09913043*(23/365) = 0.00690411 plus 0.00624657 = 0.01315068, recovering w2 exactly",
       "mono": true
      }
     ],
     "notes": [
      "A calendar spread is a position on forward variance and on nothing else. Pricing it against the two quoted spot volatilities misstates the exposure by exactly the amount the two differ from the forward.",
      "The floor is the single most useful sanity check on a term-structure feed, and it costs one square root. Data that violates it is data, not an opportunity.",
      "Forward variance can be very low without either quoted volatility being low, and that is the normal state of the term structure around a scheduled event rather than an anomaly."
     ]
    }
   ],
   "reviewed": "2026-08-27"
  },
  {
   "slug": "exotics",
   "title": "Exotics",
   "lede": "Barriers, digitals, Asians, lookbacks and the rest: the payoff, the closed form where one exists, and the hedging problem.",
   "intro": "Each entry states the payoff first, then the closed form if the payoff admits one, then the hedging problem that the closed form does not solve. The reference scenario is the same as the rest of the site - S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25 - so exotic values can be read directly against the vanilla call of 4.485236409 and put of 3.490220. Every barrier figure below satisfies in-out parity to within 1.5e-14 across 112 strike-and-barrier combinations, and the down-and-out call closed form was independently reproduced to within 2.3e-06 by a Crank-Nicolson solve with an absorbing boundary. None of these are listed contracts on a standard equity options exchange; they are over-the-counter or embedded structures, and the arithmetic is given for reference.",
   "tables": [
    {
     "title": "Barrier families and their closed-form composition",
     "intro": "All eight in-barrier and eight out-barrier cases are assembled from six terms A, B, C, D, E and F, defined in the barrier closed-form entry below. The composition depends on whether the barrier is above or below spot and on whether the strike is above or below the barrier. E is the rebate term for an in-barrier and F for an out-barrier; both are zero when there is no rebate.",
     "columns": [
      "Option",
      "Barrier relative to spot",
      "Strike relative to barrier",
      "In-barrier composition",
      "Out-barrier composition"
     ],
     "rows": [
      [
       "Call",
       "Down, H below S",
       "K above H",
       "C plus E",
       "A minus C plus F"
      ],
      [
       "Call",
       "Down, H below S",
       "K below H",
       "A minus B plus D plus E",
       "B minus D plus F"
      ],
      [
       "Call",
       "Up, H above S",
       "K above H",
       "A plus E",
       "F"
      ],
      [
       "Call",
       "Up, H above S",
       "K below H",
       "B minus C plus D plus E",
       "A minus B plus C minus D plus F"
      ],
      [
       "Put",
       "Down, H below S",
       "K above H",
       "B minus C plus D plus E",
       "A minus B plus C minus D plus F"
      ],
      [
       "Put",
       "Down, H below S",
       "K below H",
       "A plus E",
       "F"
      ],
      [
       "Put",
       "Up, H above S",
       "K above H",
       "A minus B plus D plus E",
       "B minus D plus F"
      ],
      [
       "Put",
       "Up, H above S",
       "K below H",
       "C plus E",
       "A minus C plus F"
      ]
     ]
    },
    {
     "title": "Barrier values at the reference inputs, verified against in-out parity",
     "intro": "S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20, continuous monitoring, no rebate. Vanilla call 4.485236, vanilla put 3.490220. The final column is the arithmetic check: in plus out must equal the vanilla, and it does at every row. The same check was run across 112 combinations of seven strikes and eight barriers with a worst deviation of 1.5e-14.",
     "columns": [
      "Type",
      "Barrier H",
      "Direction",
      "In",
      "Out",
      "In plus out",
      "Vanilla"
     ],
     "rows": [
      [
       "Call",
       "90.00",
       "Down",
       "0.067055",
       "4.418182",
       "4.485236",
       "4.485236"
      ],
      [
       "Call",
       "95.00",
       "Down",
       "0.859246",
       "3.625990",
       "4.485236",
       "4.485236"
      ],
      [
       "Call",
       "105.00",
       "Up",
       "4.419599",
       "0.065637",
       "4.485236",
       "4.485236"
      ],
      [
       "Call",
       "110.00",
       "Up",
       "3.825515",
       "0.659722",
       "4.485236",
       "4.485236"
      ],
      [
       "Put",
       "90.00",
       "Down",
       "2.695096",
       "0.795124",
       "3.490220",
       "3.490220"
      ],
      [
       "Put",
       "95.00",
       "Down",
       "3.415176",
       "0.075043",
       "3.490220",
       "3.490220"
      ],
      [
       "Put",
       "105.00",
       "Up",
       "0.788832",
       "2.701387",
       "3.490220",
       "3.490220"
      ],
      [
       "Put",
       "110.00",
       "Up",
       "0.100440",
       "3.389780",
       "3.490220",
       "3.490220"
      ]
     ]
    },
    {
     "title": "Exotic payoffs and whether a closed form exists",
     "intro": "The dividing line is whether the payoff depends on the terminal price alone, or on a functional of the whole path that happens to remain lognormal. Arithmetic averages are the canonical case where it does not.",
     "columns": [
      "Structure",
      "Payoff",
      "Closed form",
      "Primary reference"
     ],
     "rows": [
      [
       "Barrier, single, continuous monitoring",
       "Vanilla payoff conditional on the barrier having been touched or not",
       "Yes",
       "Merton 1973; Reiner and Rubinstein 1991"
      ],
      [
       "Cash-or-nothing digital",
       "R if finishing beyond K, else 0",
       "Yes, R*exp(-r*T)*N(d2)",
       "Reiner and Rubinstein 1991"
      ],
      [
       "Asset-or-nothing digital",
       "S_T if finishing beyond K, else 0",
       "Yes, S*exp(-q*T)*N(d1)",
       "Cox and Rubinstein 1985"
      ],
      [
       "Geometric-average Asian",
       "max(G - K, 0), G the geometric average",
       "Yes; the geometric average of a lognormal is lognormal",
       "Kemna and Vorst 1990"
      ],
      [
       "Arithmetic-average Asian",
       "max(A - K, 0), A the arithmetic average",
       "No; moment-matching or numerics required",
       "Turnbull and Wakeman 1991"
      ],
      [
       "Floating-strike lookback",
       "S_T minus the running minimum",
       "Yes",
       "Goldman, Sosin and Gatto 1979"
      ],
      [
       "Cliquet",
       "Sum of capped or uncapped period returns, strike reset each period",
       "Yes if each period is a plain forward-starting option",
       "Rubinstein 1991"
      ],
      [
       "Autocallable",
       "Coupons contingent on observation levels, principal contingent on a barrier",
       "No; valued by numerics",
       "n/a"
      ],
      [
       "Compound, call on call",
       "max(C(S_t1, K2, T2 minus t1) minus K1, 0) at t1",
       "Yes, via the bivariate normal",
       "Geske 1979"
      ],
      [
       "Simple chooser",
       "max(C, P) at t1, both struck K expiring T2",
       "Yes",
       "Rubinstein 1991"
      ],
      [
       "Quanto",
       "Foreign-asset payoff settled in domestic currency at a fixed rate",
       "Yes, by adjusting the dividend yield",
       "Reiner 1992"
      ]
     ]
    }
   ],
   "entries": [
    {
     "id": "barrier-eight-types",
     "term": "Barrier options: the eight standard types",
     "definition": "A barrier option is a vanilla whose existence is conditional on the underlying touching, or not touching, a stated level at any time during the life. Two option types times two barrier directions times two conditions gives eight contracts, and the whole family is spanned by two arithmetic relationships.",
     "formula": "Knock-in payoff = VanillaPayoff * 1{barrier touched};  Knock-out payoff = VanillaPayoff * 1{barrier never touched}",
     "fields": [
      {
       "label": "The eight",
       "value": "Down-and-in call, down-and-out call, up-and-in call, up-and-out call, and the same four for a put",
       "mono": false
      },
      {
       "label": "Monitoring",
       "value": "Continuously monitored barriers admit the closed forms below. Discretely monitored barriers are strictly less likely to knock and are therefore worth strictly more if knocking out, and less if knocking in",
       "mono": false
      },
      {
       "label": "Rebate",
       "value": "A cash amount paid if a knock-out is triggered, or if a knock-in never triggers. Enters as the E and F terms and is zero for most listed structures",
       "mono": false
      },
      {
       "label": "Reverse barrier",
       "value": "A knock-out whose barrier lies in the money, so the option is destroyed at the moment it is worth most. The up-and-out call with K below H is the standard case",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20, at which the vanilla call is 4.485236 and the vanilla put is 3.490220. These are inputs chosen to make the arithmetic checkable, not observations of any market. With H = 105 on a K = 100 call, the up-and-out is worth 0.065637 against a vanilla of 4.485236 - it retains 1.46 percent of the vanilla value, because the barrier sits only 5 percent above spot and above the strike, so almost every path that would pay also knocks. The mirror up-and-in is 4.419599, and the two sum to the vanilla exactly. Moving the barrier out to H = 110 lifts the up-and-out to 0.659722, ten times the value for a 5-point move in the barrier",
       "mono": true
      }
     ],
     "notes": [
      "The value of a reverse knock-out is dominated by the barrier and almost independent of the strike, which is the opposite of the intuition a vanilla builds. The up-and-out at H = 105 above is worth less than a hundredth of the underlying's daily range in premium terms.",
      "A discretely monitored barrier and a continuously monitored one can differ by more than the entire bid-ask spread. The monitoring frequency is a contract term, not a modelling detail, and it belongs in the term sheet.",
      "Every barrier is short or long a digital at the barrier, which is why the delta jumps there. That is the origin of every practical difficulty with the family."
     ],
     "source": "Merton 1973; Reiner and Rubinstein 1991"
    },
    {
     "id": "barrier-closed-form-terms",
     "term": "The Reiner-Rubinstein barrier closed form",
     "definition": "All sixteen continuously monitored single-barrier prices are built from six terms. The construction uses the reflection principle: a barrier at H is handled by adding an image of the diffusion reflected in ln(H), scaled by a power of H over S that carries the drift.",
     "formula": "With b = r - q, mu = (b - sigma^2/2)/sigma^2, lambda = sqrt(mu^2 + 2*r/sigma^2), v = sigma*sqrt(T), phi_sign = plus 1 for a call and minus 1 for a put, eta = plus 1 for a down barrier and minus 1 for an up barrier: x1 = ln(S/K)/v + (1+mu)*v; x2 = ln(S/H)/v + (1+mu)*v; y1 = ln(H^2/(S*K))/v + (1+mu)*v; y2 = ln(H/S)/v + (1+mu)*v; z = ln(H/S)/v + lambda*v",
     "fields": [
      {
       "label": "A",
       "value": "phi_sign*S*exp((b-r)*T)*N(phi_sign*x1) minus phi_sign*K*exp(-r*T)*N(phi_sign*x1 minus phi_sign*v). This is the vanilla",
       "mono": true
      },
      {
       "label": "B",
       "value": "The same expression with x2 in place of x1",
       "mono": true
      },
      {
       "label": "C",
       "value": "phi_sign*S*exp((b-r)*T)*(H/S)^(2*(mu+1))*N(eta*y1) minus phi_sign*K*exp(-r*T)*(H/S)^(2*mu)*N(eta*y1 minus eta*v). The reflected image",
       "mono": true
      },
      {
       "label": "D",
       "value": "The same expression with y2 in place of y1",
       "mono": true
      },
      {
       "label": "E",
       "value": "Rebate*exp(-r*T)*[N(eta*x2 minus eta*v) minus (H/S)^(2*mu)*N(eta*y2 minus eta*v)], the in-barrier rebate",
       "mono": true
      },
      {
       "label": "F",
       "value": "Rebate*[(H/S)^(mu+lambda)*N(eta*z) plus (H/S)^(mu-lambda)*N(eta*z minus 2*eta*lambda*v)], the out-barrier rebate",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20, at which the vanilla call is 4.485236 and the vanilla put is 3.490220. These are inputs chosen to make the arithmetic checkable, not observations of any market. Down-and-out call at H = 90 evaluates to 4.418182 and the down-and-in to 0.067055, summing to the vanilla 4.485236. Two independent checks were run rather than one. First, in plus out equals the vanilla across all 112 combinations of seven strikes from 85 to 115 and eight barriers from 80 to 120, with a worst deviation of 1.5e-14. Second, a Crank-Nicolson finite-difference solve of the Black-Scholes equation with a Dirichlet zero boundary at ln(90) returns 4.41824015 on a 400-by-400 grid, 4.41817188 on 1600-by-1600 and 4.41817923 on 3200-by-3200, against the closed-form 4.41818154 - agreement to 2.3e-06 at the finest grid. At H = 95 the closed form gives 3.62599049 and the same solver 3.62598931, agreeing to 1.2e-06",
       "mono": true
      }
     ],
     "notes": [
      "The A term is the vanilla, so every out-barrier price is the vanilla minus a correction, and the correction is what the barrier costs. Reading the formula that way makes the sign of each term obvious.",
      "The (H/S) powers carry the drift through mu and lambda. At b = 0 they collapse and the formulas reduce to pure reflection, which is where the reflection-principle intuition is exact rather than adjusted.",
      "In-out parity is not a coincidence to be verified, it is an identity: a knock-in and a knock-out with the same barrier and strike together pay the vanilla on every path. Use it as a test of any implementation, including this one."
     ],
     "source": "Merton 1973; Reiner and Rubinstein 1991"
    },
    {
     "id": "barrier-in-out-parity",
     "term": "In-out parity",
     "definition": "A knock-in and a knock-out written on the same underlying with the same strike, expiration and barrier, and the same rebate structure of zero, together replicate the vanilla. It holds path by path, so it holds for any process and any monitoring convention.",
     "formula": "KnockIn(K, H) + KnockOut(K, H) = Vanilla(K), for a zero rebate and identical monitoring",
     "fields": [
      {
       "label": "Why it is model-free",
       "value": "On any single path exactly one of the two options survives, and the survivor pays the vanilla payoff",
       "mono": false
      },
      {
       "label": "Where it breaks",
       "value": "A rebate on either leg, or different monitoring conventions between the two, breaks it by exactly the value of the difference",
       "mono": false
      },
      {
       "label": "Use",
       "value": "The primary implementation test for any barrier pricer, and the way a knock-in is normally quoted, as the vanilla minus the knock-out",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20, at which the vanilla call is 4.485236 and the vanilla put is 3.490220. These are inputs chosen to make the arithmetic checkable, not observations of any market. At H = 105 on the call: in 4.419599 plus out 0.065637 equals 4.485236, the vanilla, to six decimals. At H = 90 on the put: in 2.695096 plus out 0.795124 equals 3.490220. Tested across 112 combinations of seven strikes and eight barriers, both option types, the worst absolute deviation was 1.5e-14, which is double-precision rounding and not method error",
       "mono": true
      }
     ],
     "notes": [
      "Because parity is exact, quoting a knock-in and a knock-out that do not sum to the vanilla is an internal inconsistency in the quote, not a view.",
      "The identity says nothing about the delta of either leg. Two positions can sum correctly in value and both be badly hedged, and near a barrier they usually are.",
      "It also gives the cheapest correct way to price a knock-in: price the knock-out, subtract from the vanilla. That halves the code and removes a whole class of case-table errors."
     ]
    },
    {
     "id": "barrier-hedging-problem",
     "term": "The barrier hedging problem: a discontinuous delta at the barrier",
     "definition": "A knock-out is worth its remaining value one tick above the barrier and zero at it, so the value function has a jump and the delta is unbounded as the barrier is approached. No finite position in the underlying hedges a jump, which is the entire practical difficulty with the family.",
     "formula": "As S approaches H from above for a down-and-out, Value approaches 0 while Value at H plus epsilon is positive, so dValue/dS is unbounded",
     "fields": [
      {
       "label": "Reverse knock-out, the worst case",
       "value": "The barrier sits in the money, so the option is destroyed when its intrinsic value is largest. Delta near the barrier can exceed 1 in magnitude and flip sign",
       "mono": false
      },
      {
       "label": "Standard static approach",
       "value": "Replicate with a strip of vanillas chosen so the portfolio is worth zero along the barrier, which converts a dynamic problem into a fixed position",
       "mono": false
      },
      {
       "label": "Gap risk",
       "value": "A gap through the barrier realises the discontinuity in one print, and no rehedging frequency reduces it",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20, at which the vanilla call is 4.485236 and the vanilla put is 3.490220. These are inputs chosen to make the arithmetic checkable, not observations of any market. Up-and-out call, K = 100, H = 105. Value 0.065637 with spot at 100. The contract is worth zero the instant spot touches 105 while the vanilla it tracks is worth 5.00 of intrinsic at that point, so 5.00 per share of value disappears at a single price. Compare the two barriers: at H = 105 the value is 0.065637 and at H = 110 it is 0.659722, so a 5-point barrier shift is worth 0.594085, nine times the entire premium of the tighter contract. The delta is also the wrong sign for a call: the same up-and-out is worth 0.095133 at S = 95, 0.065637 at S = 100, 0.041629 at S = 102, 0.014117 at S = 104 and exactly zero at S = 105, so it falls as the underlying rises. A hedge sized from a vanilla intuition would be long the underlying against a position that loses when the underlying gains",
       "mono": true
      }
     ],
     "notes": [
      "The sensitivity to the barrier level dwarfs the sensitivity to every other input. On the worked pair, moving the barrier 5 points is worth nine times the premium, while a 5-point rise in spot destroys the contract entirely and a 5-point fall raises its value by 45 percent.",
      "Static replication with vanillas is the standard answer because it removes the need to trade through the barrier at all. Its cost is that the replicating strip is only exact under an assumption about the process, so it trades model risk for gap risk.",
      "A risk system that reports a finite delta near a barrier is reporting the delta of the grid it is using, not of the contract."
     ]
    },
    {
     "id": "digital-closed-forms",
     "term": "Digital and binary options in closed form",
     "definition": "A digital pays a fixed amount, or the asset itself, conditional on finishing beyond a strike. Both variants are single terms of the Black-Scholes-Merton formula, which is why the vanilla decomposes into them exactly.",
     "formula": "CashOrNothing call = R*exp(-r*T)*N(d2);  CashOrNothing put = R*exp(-r*T)*N(-d2);  AssetOrNothing call = S*exp(-q*T)*N(d1);  AssetOrNothing put = S*exp(-q*T)*N(-d1)",
     "fields": [
      {
       "label": "Vanilla decomposition",
       "value": "Call = AssetOrNothing(K) minus K*CashOrNothing(K), exactly",
       "mono": true
      },
      {
       "label": "Cash digital identity",
       "value": "Call plus put = R*exp(-r*T), the value of the certain payment, since exactly one of them pays",
       "mono": true
      },
      {
       "label": "Asset digital identity",
       "value": "Call plus put = S*exp(-q*T), the value of the asset",
       "mono": true
      },
      {
       "label": "Delta",
       "value": "CashOrNothing call delta = R*exp(-r*T)*phi(d2)/(S*sigma*sqrt(T)), which is unbounded as T goes to zero at S = K",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20, at which the vanilla call is 4.485236 and the vanilla put is 3.490220. These are inputs chosen to make the arithmetic checkable, not observations of any market. with a 1.00 payout. Cash-or-nothing call = exp(-0.01)*0.519938810 = 0.99004983*0.51993881 = 0.51476533. Cash-or-nothing put = 0.47528451. The two sum to 0.99004983, exactly exp(-r*T), as required. Asset-or-nothing call = 55.96176924 and put = 44.03823076, summing to 100.00000000 which is S*exp(-q*T). Decomposition check: 55.96176924 minus 100*0.51476533 = 4.48523641, recovering the vanilla call to eight decimals",
       "mono": true
      }
     ],
     "notes": [
      "The cash digital value is a discounted risk-neutral probability, so it is the cleanest market-implied probability available and it is not the delta. At the reference inputs it is 0.5148 against a delta of 0.5596.",
      "Digital delta and gamma blow up at the strike as expiry approaches, worse than any vanilla, because the payoff itself is a step. This is the same problem as pin risk with the smoothing removed.",
      "Because minus the dual delta of a vanilla equals the cash digital, a digital can always be priced off a strike curve without a separate model. If the two disagree, the strike curve is what to trust."
     ],
     "source": "Reiner and Rubinstein 1991; Cox and Rubinstein 1985"
    },
    {
     "id": "digital-static-replication",
     "term": "Static replication of a digital with a tight vertical",
     "definition": "A digital is the limit of a call spread as the strike gap goes to zero with the notional scaled by one over the gap. That makes a vertical an exact hedge in the limit and a conservative over-hedge at any finite width, which is how digitals are actually risk-managed.",
     "formula": "Digital(K, payout R) = limit as w goes to 0 of (R/w)*[Call(K - w/2) minus Call(K + w/2)]",
     "fields": [
      {
       "label": "Units",
       "value": "R/w contracts of the vertical. A 1.00 digital replicated with a 0.10-wide vertical needs 10 spreads per unit of payout",
       "mono": true
      },
      {
       "label": "Direction of the finite-width error",
       "value": "The centred vertical is worth slightly more than the digital, so the replication over-hedges. The error is second order in w",
       "mono": true
      },
      {
       "label": "Practical constraint",
       "value": "Listed strike increments set the minimum achievable w, and the notional scales as 1/w, so a tight replication is a large position",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20, at which the vanilla call is 4.485236 and the vanilla put is 3.490220. These are inputs chosen to make the arithmetic checkable, not observations of any market. The 1.00 cash-or-nothing call at K = 100 is 0.51476533. Centred verticals: width 10.00, 0.10 units, value 0.51549939, error plus 0.00073407. Width 5.00, 0.20 units, 0.51496510, error plus 0.00019977. Width 2.00, 0.50 units, 0.51479805, error plus 0.00003273. Width 1.00, 1 unit, 0.51477354, error plus 0.00000821. Width 0.50, 2 units, 0.51476738, error plus 0.00000205. Width 0.10, 10 units, 0.51476541, error plus 0.00000008. The error falls by a factor of four each time the width halves, confirming second-order convergence",
       "mono": true
      }
     ],
     "notes": [
      "Halving the width cuts the error by four and doubles the notional. That trade-off is the whole of digital replication and there is no width at which both are small.",
      "A 5.00-wide vertical on a 100 strike is already within 0.0002 of the digital, which on most desks is inside the spread. The exotic premium over a listed vertical has to be justified against that number.",
      "The over-hedge direction matters when selling: a short digital hedged with a short vertical of finite width is under-hedged, not over-hedged, because the sign flips."
     ]
    },
    {
     "id": "asian-geometric-closed-form",
     "term": "Geometric-average Asian options have a closed form",
     "definition": "The geometric average of a lognormal price path is itself lognormal, so a geometric-average Asian option prices in a Black-Scholes-style formula with a reduced volatility and an adjusted drift. Continuous averaging over the whole life divides the variance by three.",
     "formula": "With m = ln(S) + (r - q - sigma^2/2)*T/2 and v = sigma^2*T/3: Price = exp(-r*T)*[ exp(m + v/2)*N(d1) - K*N(d2) ], d1 = (m - ln(K) + v)/sqrt(v), d2 = d1 - sqrt(v)",
     "fields": [
      {
       "label": "Effective volatility",
       "value": "sigma/sqrt(3), about 57.7 percent of the spot volatility, because averaging over [0,T] gives variance sigma^2*T/3",
       "mono": true
      },
      {
       "label": "Effective forward",
       "value": "exp(m + v/2), which is below the spot forward because the average is taken over the whole path, not the endpoint",
       "mono": true
      },
      {
       "label": "Relation to the arithmetic average",
       "value": "The geometric average never exceeds the arithmetic average, so the geometric-average option is a lower bound on the arithmetic-average option at the same strike",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20, at which the vanilla call is 4.485236 and the vanilla put is 3.490220. These are inputs chosen to make the arithmetic checkable, not observations of any market. m = ln(100) + (0.04 - 0.02)*0.125 = 4.60767019. v = 0.04*0.25/3 = 0.00333333, so sqrt(v) = 0.05773503, which is sigma*sqrt(T)/sqrt(3) = 0.100000/1.732051 exactly. Effective forward exp(m + v/2) = 100.41753593. Price = 2.49745602 against a vanilla call of 4.485236 - the Asian is 55.7 percent of the vanilla. Independent check by Simpson quadrature over the terminal lognormal with 200,001 nodes: 2.49745602, agreeing to 2.5e-09. Monte Carlo cross-check with 250 averaging dates and 40,000 antithetic paths, seed 20260827: 2.494664 plus or minus 0.018014, within 0.16 standard errors of the closed form",
       "mono": true
      }
     ],
     "notes": [
      "The volatility reduction to sigma over root three is the whole reason averaging structures are cheaper. It is a property of continuous averaging over the full life; averaging over a window inside the life gives a different and larger factor.",
      "The effective forward is below the spot forward. Comparing an Asian to a vanilla at the same strike therefore compares two options with different effective moneyness, not just different volatilities.",
      "Discrete averaging over n dates gives variance sigma^2*T*(n+1)*(2n+1)/(6*n^2), which converges to sigma^2*T/3 from above. Using the continuous formula on a monthly-averaged contract understates the volatility and therefore the price."
     ],
     "source": "Kemna and Vorst 1990"
    },
    {
     "id": "asian-arithmetic-moment-matching",
     "term": "Arithmetic-average Asian options and moment matching",
     "definition": "A sum of lognormals is not lognormal, so an arithmetic-average Asian has no closed form. The standard approximation matches the first two moments of the arithmetic average to a lognormal and then applies Black-76 to that surrogate.",
     "formula": "M1 = S*(exp(b*T) - 1)/(b*T) with b = r - q;  M2 = 2*S^2*exp((2*b + sigma^2)*T)/((b + sigma^2)*(2*b + sigma^2)*T^2) + (2*S^2/(b*T^2))*[1/(2*b + sigma^2) - exp(b*T)/(b + sigma^2)];  sigma_a = sqrt(ln(M2/M1^2)/T);  Price = Black76(M1, K, T, r, sigma_a)",
     "fields": [
      {
       "label": "M1",
       "value": "The forward price of the arithmetic average, exact",
       "mono": true
      },
      {
       "label": "M2",
       "value": "The second moment of the average, exact. Only the lognormal shape assumption is an approximation",
       "mono": true
      },
      {
       "label": "Direction of error",
       "value": "The true distribution of an arithmetic average is less skewed than a lognormal, so the approximation is small and its sign depends on moneyness",
       "mono": false
      },
      {
       "label": "Degenerate case",
       "value": "b = 0 makes M1 and M2 indeterminate as written; take the limits or perturb b",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20, at which the vanilla call is 4.485236 and the vanilla put is 3.490220. These are inputs chosen to make the arithmetic checkable, not observations of any market. M1 = 100.50167084, M2 = 10134.42336710, so sigma_a = sqrt(ln(10134.42336710/10100.58579)/0.25) = 0.11566256. Black-76 on a forward of 100.50167084 at K = 100 with that volatility returns 2.54649178. Independent Monte Carlo with 250 averaging dates and 40,000 antithetic paths, seed 20260827: 2.541318 plus or minus 0.018307, so the approximation sits 0.28 standard errors above the simulation. Ordering check: the geometric-average price at the same inputs is 2.49745602, below the arithmetic 2.54649178 as required by the arithmetic-geometric mean inequality, and both are well below the vanilla 4.485236",
       "mono": true
      }
     ],
     "notes": [
      "The moment-matched effective volatility of 0.1157 is above sigma over root three, 0.1155, by two ten-thousandths. That tiny gap is the entire difference between the arithmetic and geometric averaging problems at these inputs, and it is worth 0.049 of premium.",
      "The approximation degrades where the average is far from the strike and where the tenor is long, because the true average becomes visibly less lognormal. Check against a simulation before quoting it on anything long-dated.",
      "The geometric-average price is a strict lower bound, so it is a free sanity check that costs one closed form. Any arithmetic Asian price below it is wrong."
     ],
     "source": "Turnbull and Wakeman 1991"
    },
    {
     "id": "lookback-options",
     "term": "Lookback options",
     "definition": "A lookback pays off against the extreme of the path rather than a fixed strike. A floating-strike lookback call pays the terminal price minus the running minimum, so it can never finish worthless, and a closed form exists because the joint law of the terminal value and the running minimum of a Brownian motion is known.",
     "formula": "With b = r - q, a1 = [ln(S/m) + (b + sigma^2/2)*T]/(sigma*sqrt(T)), a2 = a1 - sigma*sqrt(T), a3 = [ln(S/m) + (-b + sigma^2/2)*T]/(sigma*sqrt(T)), y1 = -2*b*ln(S/m)/sigma^2:  C = S*exp((b-r)*T)*N(a1) - S*exp((b-r)*T)*(sigma^2/(2*b))*N(-a1) - m*exp(-r*T)*[N(a2) - (sigma^2/(2*b))*exp(y1)*N(-a3)]",
     "fields": [
      {
       "label": "Payoff, floating strike call",
       "value": "S_T minus min over the life of S_t. Always non-negative, and strictly positive unless the terminal price is the minimum",
       "mono": true
      },
      {
       "label": "Payoff, floating strike put",
       "value": "max over the life of S_t minus S_T",
       "mono": true
      },
      {
       "label": "m",
       "value": "The running minimum observed so far. At inception m = S",
       "mono": false
      },
      {
       "label": "Monitoring bias",
       "value": "Discrete monitoring cannot see the true continuous extreme, so a discretely monitored lookback is strictly worth less. The bias vanishes at order 1/sqrt(number of observations)",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20, at which the vanilla call is 4.485236 and the vanilla put is 3.490220. These are inputs chosen to make the arithmetic checkable, not observations of any market. with m = S = 100 at inception, so the option is at its floating strike. Closed form: 8.204387, which is 1.83 times the vanilla at-the-money call of 4.485236 - the premium for never being able to finish worthless. Monte Carlo with antithetic paths, seed 20260827, showing the monitoring bias explicitly: 250 monitoring dates and 40,000 paths gives 7.850105 plus or minus 0.032783; 1,000 dates gives 8.037098 plus or minus 0.033062; 4,000 dates and 20,000 paths gives 8.074975 plus or minus 0.045853. The estimates rise monotonically toward the continuous-monitoring value as the monitoring frequency increases, which is the signature of the known downward discretisation bias rather than of a formula error",
       "mono": true
      }
     ],
     "notes": [
      "The Monte Carlo figures above do not equal the closed form and are not supposed to. Discrete monitoring is a different contract, worth less, and the gap at 250 dates is 0.354 - four percent of the price, and eleven standard errors. Anyone reconciling a lookback pricer against a simulation has to match the monitoring convention first.",
      "The sigma-squared over two-b factor is singular at b = 0. That is a removable singularity in the mathematics and a division by zero in code, and it is the most common implementation bug in this formula.",
      "A lookback cannot expire worthless, which is why its premium is roughly double an at-the-money vanilla. It is the extreme of the same trade-off every option makes and not a different kind of instrument."
     ],
     "source": "Goldman, Sosin and Gatto 1979"
    },
    {
     "id": "cliquet-structure",
     "term": "Cliquets as a strip of forward-starting options",
     "definition": "A cliquet resets its strike to the prevailing price at each observation date, so it is a strip of forward-starting at-the-money options. When the periods are uncapped and unfloored, the strip values by homogeneity with no additional machinery, because a forward-starting at-the-money option is worth a fixed fraction of the spot.",
     "formula": "Uncapped cliquet = sum over resets i of S*exp(-q*t_i) * BS(1, 1, tau_i, r, q, sigma), where tau_i is the length of period i and t_i its start",
     "fields": [
      {
       "label": "Homogeneity",
       "value": "BS is homogeneous of degree one in S and K, so a forward-starting at-the-money option is worth S*exp(-q*t_i) times the unit-strike value",
       "mono": true
      },
      {
       "label": "Volatility exposure",
       "value": "Positive vega in every period, and no exposure to the level at all once the strike resets. It is a pure forward-volatility position",
       "mono": false
      },
      {
       "label": "What caps and floors change",
       "value": "A cap on each period return breaks the homogeneity argument and reintroduces dependence on the forward-volatility skew, which no closed form covers",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Four consecutive quarterly resets, S = 100, r = 0.04, q = 0, sigma = 0.20, each period 0.25 years. The unit at-the-money quarter call is BS(1, 1, 0.25, 0.04, 0, 0.20) = 0.04485236, so each period is worth 100*0.04485236 = 4.485236 and the strip is worth 17.940946. A single one-year at-the-money call at the same inputs is 9.925054. The cliquet is 1.8076 times the one-year option. Resetting the strike three times is what buys that: each quarter contributes the full value of a fresh at-the-money option rather than a share of one annual variance",
       "mono": true
      }
     ],
     "notes": [
      "The uncapped cliquet is worth almost twice the single-period option of the same total length. Resetting the strike is what buys that, and it is why the structure exists at all.",
      "Every real cliquet is capped, floored, or both, and the moment it is, the value depends on the volatility of forward volatility. The clean arithmetic above is the boundary case, not the traded product.",
      "A cliquet has no delta at inception beyond the discounting, because each period's strike is unset. Risk reports that show a large delta on one are showing the first period only."
     ],
     "source": "Rubinstein 1991"
    },
    {
     "id": "autocallable-structure",
     "term": "Autocallable structure",
     "definition": "A note that redeems early, paying accrued coupons, if the underlying is at or above an observation level on any scheduled date, and otherwise continues. At maturity, principal is repaid in full unless a downside barrier has been breached, in which case the investor takes the underlying performance. It has no closed form and its arithmetic is entirely in the schedule.",
     "formula": "Payoff at the first observation date i with S_i at or above the call level: Principal + i * Coupon. If no call occurs: Principal if S_T is at or above the barrier, else Principal * S_T/S_0",
     "fields": [
      {
       "label": "Embedded positions",
       "value": "Long a coupon stream contingent on a sequence of digitals, and short a down-and-in put at the barrier struck at the initial level",
       "mono": false
      },
      {
       "label": "Why no closed form",
       "value": "The payoff depends on the first passage across a sequence of discrete levels, which is a multi-dimensional first-crossing problem",
       "mono": false
      },
      {
       "label": "Valuation method",
       "value": "Monte Carlo, or a lattice with the observation dates aligned to time steps",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Stated terms chosen for checkability, not a real issue: principal 1,000.00, four semi-annual observations, call level 100 percent of the initial 100.00, coupon 30.00 per observation, downside barrier 70 percent observed at maturity only. If the first observation prints at 101, the note redeems for 1,000.00 plus 30.00 = 1,030.00 after six months, a 3.00 percent return over 0.5 years. If it survives to the fourth observation and prints at 100.50 there, it pays 1,000.00 plus 4*30.00 = 1,120.00 after two years. If it never calls and the final level is 85, above the 70 barrier, it pays 1,000.00 and the total return is zero. If the final level is 60, below the barrier, it pays 1,000.00*60/100 = 600.00, a loss of 400.00 against a maximum possible coupon stream of 120.00",
       "mono": true
      }
     ],
     "notes": [
      "The maximum coupon and the maximum loss are wildly asymmetric by construction: 120.00 against 1,000.00 in the worked terms. That asymmetry is the structure, not a defect in it, and it is fully visible from the term sheet arithmetic.",
      "Early redemption is the outcome the structure is built to produce, which means the realised holding period is short in the cases that pay and long in the cases that do not. Any yield quoted to the final maturity describes the worst path.",
      "The embedded short put is a down-and-in, so its value is dominated by the barrier level and the skew there, not by the at-the-money volatility. Pricing one off a single volatility number misses most of the risk."
     ]
    },
    {
     "id": "compound-options",
     "term": "Compound options",
     "definition": "An option on an option: at an intermediate date the holder may pay a second premium to acquire an underlying option that expires later. The Geske closed form expresses it through the bivariate normal, and the same value is obtained by one-dimensional quadrature over the intermediate price.",
     "formula": "CallOnCall = exp(-r*t1) * E[ max( C(S_t1, K2, T2 - t1) - K1, 0 ) ], with the expectation over the risk-neutral law of S_t1",
     "fields": [
      {
       "label": "K1",
       "value": "The strike of the outer option, paid at t1 to acquire the inner option",
       "mono": false
      },
      {
       "label": "K2 and T2",
       "value": "The strike and expiration of the inner option acquired",
       "mono": false
      },
      {
       "label": "Closed form",
       "value": "Geske 1979, in terms of the bivariate normal distribution with correlation sqrt(t1/T2)",
       "mono": false
      },
      {
       "label": "Degenerate check",
       "value": "K1 going to zero must return the value of the inner option today, since the outer option is then always exercised",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "S = 100, r = 0.04, q = 0, sigma = 0.20. Outer strike K1 = 1.50 payable at t1 = 0.10; inner call K2 = 100 expiring T2 = 0.35. Value by Simpson quadrature over the intermediate lognormal with 100,001 nodes: 3.981820. The inner call priced today is 5.412643, so the compound option costs 73.57 percent of the option it may buy while deferring 1.50 of the premium for 0.10 years. Degenerate check: setting K1 = 0 returns 5.412643, exactly the inner call, confirming the construction",
       "mono": true
      }
     ],
     "notes": [
      "The compound option costs 73.6 percent of the underlying option in the worked case, and the total outlay if exercised is 3.981820 plus 1.50 = 5.481820, which is above the 5.412643 the option costs outright. The structure defers cash and pays for the deferral, exactly as the arithmetic requires.",
      "Because the payoff is a max against a value rather than against a price, the vega is second order: it is the vega of an option on a vega-bearing asset. Compound options are the standard example of positive volga.",
      "The one-dimensional quadrature is exact to quadrature error and needs no bivariate normal, which makes it the easier implementation to verify. Use Geske's form for speed and the quadrature to test it."
     ],
     "source": "Geske 1979"
    },
    {
     "id": "chooser-options",
     "term": "Chooser options",
     "definition": "A simple chooser lets the holder decide at an intermediate date whether the contract is a call or a put, both struck at the same K and expiring at the same T2. It is worth less than a straddle, because the choice is made once at t1 rather than kept to expiry, and it has a closed form.",
     "formula": "V = S*exp(-q*T2)*N(d) - K*exp(-r*T2)*N(d - sigma*sqrt(T2)) - S*exp(-q*T2)*N(-y) + K*exp(-r*T2)*N(-y + sigma*sqrt(t1)),  d = [ln(S/K) + (r - q + sigma^2/2)*T2]/(sigma*sqrt(T2)),  y = [ln(S/K) + (r - q)*T2 + sigma^2*t1/2]/(sigma*sqrt(t1))",
     "fields": [
      {
       "label": "Equivalent decomposition",
       "value": "A call struck K expiring T2, plus a put struck K*exp(-(r-q)*(T2 - t1)) expiring t1 on the forward",
       "mono": false
      },
      {
       "label": "Bounds",
       "value": "At least max(call, put) today, and at most the straddle. Both limits are attained at t1 = 0 and t1 = T2",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "S = 100, K = 100, r = 0.04, q = 0, sigma = 0.20, choice date t1 = 0.10, expiration T2 = 0.35. Closed form: 7.28380200. Independent check by Simpson quadrature over the intermediate lognormal, valuing max(call, put) at t1 with 100,001 nodes: 7.28380201, agreeing to 3.9e-09. Context: the T2 call is 5.412643, the T2 put is 4.022397, the straddle is 9.435040, so the chooser is 77.20 percent of the straddle. Boundary checks: at t1 = 0.349999, effectively the expiration, the formula returns 9.435034, converging on the straddle; at t1 = 1e-08 it returns 5.412643, exactly max(call, put) today",
       "mono": true
      }
     ],
     "notes": [
      "The chooser is 77 percent of the straddle for a choice made 29 percent of the way through the life. The value of optionality about direction decays much faster than the value of the direction itself.",
      "Both boundary checks are worth running on any implementation: the t1 to zero limit and the t1 to T2 limit are known exactly, and an implementation that misses either has a sign or a tenor wrong.",
      "A complex chooser, where the call and put have different strikes or expirations, has no such simple form and requires the bivariate normal or numerics. The word simple in the name is load-bearing."
     ],
     "source": "Rubinstein 1991"
    },
    {
     "id": "quanto-adjustment",
     "term": "Quanto adjustment",
     "definition": "A quanto pays a foreign-asset payoff in the domestic currency at a fixed exchange rate. Converting the payoff at a fixed rate changes the drift of the foreign asset under the domestic risk-neutral measure by the covariance between the asset and the exchange rate, and that correlation term is the entire adjustment.",
     "formula": "Price a quanto with the domestic rate r_d for discounting and an effective dividend yield q* = q_f + r_d - r_f + rho*sigma_S*sigma_FX, then apply the standard Black-Scholes-Merton formula",
     "fields": [
      {
       "label": "rho",
       "value": "Correlation between the foreign asset return and the exchange rate, quoted in the convention where a rise means the domestic currency weakens",
       "mono": false
      },
      {
       "label": "Sign of the effect",
       "value": "A positive rho raises q*, which lowers a call and raises a put. A negative rho does the reverse",
       "mono": false
      },
      {
       "label": "Magnitude",
       "value": "rho*sigma_S*sigma_FX, a product of three numbers each below one, so it is a small adjustment to the drift and a visible one to the price",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "S = 100, K = 100, T = 0.25, sigma_S = 0.20, sigma_FX = 0.10, r_d = 0.04, r_f = 0.02, q_f = 0.01, all chosen for checkability. q* = 0.01 + 0.04 - 0.02 + rho*0.02. At rho = minus 0.50, q* = 0.020000 and the quanto call is 4.211052. At rho = minus 0.25, q* = 0.025000 and the call is 4.144260. At rho = 0, q* = 0.030000 and the call is 4.078169. At rho = plus 0.25, q* = 0.035000 and the call is 4.012777. At rho = plus 0.50, q* = 0.040000 and the call is 3.948082. Moving rho from minus 0.5 to plus 0.5 changes the call by 0.262970, which is 6.45 percent of the rho = 0 value of 4.078169. For comparison, the same option priced with the domestic rate and the raw foreign yield, ignoring the quanto adjustment entirely, is 4.346739 - an error of 0.268570 at rho = 0, larger than the entire correlation range",
       "mono": true
      }
     ],
     "notes": [
      "The rate differential term r_d minus r_f is usually larger than the correlation term and is the part most often left out. In the worked case it is worth 0.02 of yield against 0.01 for a rho of 0.5.",
      "The correlation input has no market quote in most cases, so a quanto price carries an unhedgeable parameter. The honest presentation is a price range across a plausible rho, not a single number.",
      "Vega on a quanto is with respect to sigma_S, but sigma_FX enters through q*, so the position has an exchange-rate volatility exposure with no exchange-rate delta. That is the defining feature of the structure."
     ],
     "source": "Reiner 1992"
    }
   ]
  },
  {
   "slug": "mechanics",
   "title": "Exercise and assignment",
   "lede": "What actually happens at and before expiration, and who decides.",
   "intro": "For listed US equity and index options, the Options Clearing Corporation is the issuer, clearinghouse, and guarantor of every contract. It stands between buyer and seller, which is why counterparty credit is not a consideration in listed options the way it is in over-the-counter contracts.",
   "tables": [
    {
     "title": "Exercise style and settlement",
     "columns": [
      "Attribute",
      "Typical equity option",
      "Typical broad-based index option"
     ],
     "rows": [
      [
       "Exercise style",
       "American - exercisable any business day before expiration",
       "European - exercisable only at expiration"
      ],
      [
       "Settlement",
       "Physical delivery of 100 shares per contract",
       "Cash settlement of the in-the-money amount"
      ],
      [
       "Settlement price",
       "Closing price of the underlying",
       "Often a special opening quotation calculated from opening prices on the expiration date"
      ],
      [
       "Last trading day",
       "Typically the third Friday",
       "AM-settled contracts stop trading the preceding business day"
      ]
     ]
    },
    {
     "title": "Assignment chain",
     "intro": "Assignment is a two-stage random process and neither stage is controllable by the short holder.",
     "columns": [
      "Stage",
      "Who acts",
      "Method"
     ],
     "rows": [
      [
       "1. Exercise",
       "Long holder, or automatic exercise by exception",
       "Long holder submits exercise notice to their broker, or the clearinghouse exercises automatically if in the money by the threshold amount"
      ],
      [
       "2. Allocation to firm",
       "Clearinghouse",
       "Randomly allocated among clearing members with open short positions in that series"
      ],
      [
       "3. Allocation to account",
       "Broker",
       "Random selection or first-in-first-out. The broker must disclose its method on request"
      ]
     ]
    },
    {
     "title": "What can go wrong at expiration, and the arithmetic of each",
     "intro": "Each row is a mechanical outcome, not a market view. Figures use K = 100 and a 100 multiplier.",
     "columns": [
      "Situation",
      "Mechanical outcome",
      "Arithmetic"
     ],
     "rows": [
      [
       "Long call finishes 0.01 in the money",
       "Automatically exercised by exception unless contrary instructions are filed",
       "Buy 100 shares for 10,000.00 to capture 1.00 of intrinsic value"
      ],
      [
       "Short leg of a credit spread finishes ITM, long leg OTM",
       "Assigned on the short leg only; account is left with a stock position",
       "Loss is capped at the strike width less the credit, but the stock position carries full stock margin"
      ],
      [
       "Both legs of a spread finish ITM",
       "Both exercised; the two stock legs offset",
       "Net cash equals the strike width times the multiplier"
      ],
      [
       "Underlying closes exactly at the strike",
       "Pin risk. Assignment on a short leg is unknown until after the close",
       "Unhedged overnight exposure of up to 100 shares per contract of unknown direction"
      ],
      [
       "Option is out of the money at the close but news breaks after it",
       "Holder may still submit a contrary exercise instruction before the broker cutoff",
       "Writer can be assigned on an option that appeared to expire worthless"
      ],
      [
       "Contract has been adjusted for a corporate action",
       "Deliverable is non-standard; the quoted price is not comparable to a standard strike",
       "Read the adjustment memorandum for the deliverable and multiplier before pricing"
      ]
     ]
    },
    {
     "title": "Discrete dividend versus continuous yield, worked repricing",
     "intro": "S = 100, K = 100, T = 0.25, r = 0.04, sigma = 0.20, one cash dividend of 0.50 with an ex-date at t = 0.10. The escrowed-dividend model subtracts the present value of the dividend from spot and prices with q = 0. Every figure recomputed.",
     "columns": [
      "Treatment",
      "Input used",
      "Call",
      "Put",
      "Difference from the escrowed model"
     ],
     "rows": [
      [
       "No dividend",
       "S = 100.000000, q = 0",
       "4.485236",
       "3.490220",
       "call plus 0.273781, put minus 0.224223"
      ],
      [
       "Escrowed dividend",
       "S_adj = 99.501996, q = 0",
       "4.211456",
       "3.714443",
       "reference case"
      ],
      [
       "Equivalent continuous yield",
       "S = 100, q = minus ln(S_adj/S)/T = 0.01996993",
       "4.211456",
       "3.714443",
       "0.000000 by construction"
      ],
      [
       "Naive annualised yield",
       "S = 100, q = (0.50/100)/0.25 = 0.02000000",
       "4.211052",
       "3.714842",
       "call minus 0.000404, put plus 0.000399"
      ]
     ]
    },
    {
     "title": "The forward under financing and borrow",
     "intro": "F = (S minus PV of dividends) * exp((r minus rebate) * T), with S = 100, r = 0.04, T = 0.25 and a 0.50 dividend at t = 0.10 whose present value is 0.498004, so S minus PV is 99.501996. Rebate is the rate earned on cash posted against a stock borrow; a higher rebate means a cheaper borrow.",
     "columns": [
      "Borrow rebate",
      "Effective financing rate r minus rebate",
      "Forward F",
      "Implied by an observed forward"
     ],
     "rows": [
      [
       "0.000",
       "0.040",
       "100.502008",
       "An observed 100.502008 implies a zero rebate"
      ],
      [
       "0.005",
       "0.035",
       "100.376459",
       "An observed 100.376459 implies 0.005"
      ],
      [
       "0.020",
       "0.020",
       "100.000752",
       "An observed 100.000752 implies 0.020"
      ],
      [
       "0.050",
       "minus 0.010",
       "99.253552",
       "An observed 99.253552 implies 0.050"
      ],
      [
       "Solved from a quote",
       "n/a",
       "99.000000",
       "rebate = r minus ln(F/(S minus PV))/T = 0.060231"
      ]
     ]
    }
   ],
   "entries": [
    {
     "id": "exercise-by-exception",
     "term": "Exercise by exception",
     "definition": "At expiration the clearinghouse automatically exercises long positions that are in the money by at least a set threshold, without instruction from the holder. A holder who does not want this outcome must submit contrary instructions before the cutoff.",
     "fields": [
      {
       "label": "Common threshold",
       "value": "In the money by 0.01 or more",
       "mono": false
      },
      {
       "label": "Escape hatch",
       "value": "Contrary exercise instruction submitted to the broker before its cutoff, which is earlier than the clearinghouse cutoff",
       "mono": false
      }
     ],
     "notes": [
      "This is the mechanism behind unwanted expiration-day stock deliveries. A long call one cent in the money becomes a 100-share purchase obligation unless the holder acts.",
      "Broker cutoffs are earlier than clearinghouse cutoffs and vary by firm. The broker cutoff is the one that binds.",
      "For a spread where both legs finish in the money, both are exercised and the stock legs offset. Where only the short leg finishes in the money, the holder is assigned and left with a stock position."
     ],
     "source": "Options Clearing Corporation rules"
    },
    {
     "id": "early-exercise-calls",
     "term": "When early exercise of an American call is rational",
     "definition": "On a non-dividend-paying underlying it is never rational to exercise an American call early, because the option is worth at least its intrinsic value and selling it captures remaining time value that exercise forfeits. The exception is a dividend.",
     "fields": [
      {
       "label": "Condition",
       "value": "Dividend per share exceeds the remaining time value of the corresponding put, on the day before the ex-dividend date",
       "mono": false
      },
      {
       "label": "Practical screen",
       "value": "Deep in the money, short remaining life, corresponding put trading near zero",
       "mono": false
      }
     ],
     "notes": [
      "This is the single largest source of surprise assignment in covered calls and credit call spreads: the short call is assigned the day before ex-dividend and the writer owes the dividend.",
      "The risk concentrates in the last days before ex-dividend on in-the-money short calls with negligible extrinsic value."
     ]
    },
    {
     "id": "early-exercise-puts",
     "term": "When early exercise of an American put is rational",
     "definition": "Exercising a deep in-the-money put early converts the position to cash, which then earns interest. When that interest exceeds the remaining time value, early exercise is rational even with no dividend.",
     "notes": [
      "Sensitivity to interest rates means early put exercise becomes more common in higher-rate environments and nearly disappears near zero rates.",
      "A pending dividend cuts the other way, making early put exercise less attractive."
     ]
    },
    {
     "id": "pin-risk",
     "term": "Pin risk",
     "definition": "The uncertainty a short option holder faces when the underlying closes at or extremely near the strike at expiration. Whether assignment occurs is unknown until after the market closes, leaving an unhedged overnight stock position of unknown size and direction.",
     "notes": [
      "Affects short option positions and any spread where one leg is at the money at the close.",
      "The standard mitigation is to close at-the-money short legs before the close on expiration day rather than let them expire.",
      "Post-close moves on news can turn an apparently out-of-the-money option into one the holder chooses to exercise."
     ]
    },
    {
     "id": "contract-adjustment",
     "term": "Contract adjustment",
     "definition": "When a corporate action changes the deliverable, the clearinghouse adjusts outstanding contracts so that holders are made economically whole rather than cancelling them. The strike, multiplier, or deliverable changes.",
     "tablesNote": true,
     "notes": [
      "Ordinary cash dividends do not trigger adjustment. Special or unusually large cash distributions generally do.",
      "Forward splits in whole ratios usually adjust strike and contract count, leaving a standard 100-share deliverable.",
      "Uneven splits, spinoffs, and mergers frequently produce a non-standard deliverable - for example, 100 shares of the acquirer plus a cash amount - and the contract is marked as adjusted.",
      "An adjusted contract usually has poor liquidity and a non-standard multiplier. Read the deliverable before trading one; the quoted price is not comparable to a standard contract at the same strike."
     ],
     "source": "Options Clearing Corporation adjustment memoranda"
    },
    {
     "id": "dividend-early-exercise-test",
     "term": "The dividend early-exercise test for an American call",
     "definition": "A quantitative condition for whether exercising an American call immediately before an ex-dividend date is preferable to holding it. Exercising captures the dividend D and gives up two things: the interest on the strike over the remaining life, and the insurance value represented by the corresponding put.",
     "formula": "Exercise immediately before ex-dividend if D > P + K*(1 - exp(-r*tau))",
     "fields": [
      {
       "label": "D",
       "value": "Dividend per share going ex",
       "mono": true
      },
      {
       "label": "P",
       "value": "Value of the put at the same strike and expiry",
       "mono": true
      },
      {
       "label": "tau",
       "value": "Time from the ex-dividend date to expiration, in years",
       "mono": true
      },
      {
       "label": "Interpretation",
       "value": "The right-hand side is the cost of exercising early: forgone interest on K plus the put protection surrendered",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "K = 100, r = 0.04, tau = 30/365 = 0.0821918, corresponding put value 0.15, dividend 0.88. Interest term = 100 * (1 - exp(-0.04 * 0.0821918)) = 100 * 0.00328227 = 0.328227. Right-hand side = 0.15 + 0.328227 = 0.478227. Since 0.88 exceeds 0.478227, exercise is preferable at these inputs. At a dividend of 0.40 the inequality reverses and holding is preferable",
       "mono": true
      }
     ],
     "notes": [
      "The condition is a comparison, not a threshold: it depends on the rate and the remaining life as well as the dividend, so the same dividend flips the answer at a different tau.",
      "The put value in the inequality is the market put, not a model put. When the put is bid at zero the condition is satisfied by almost any dividend, which is why the deep in-the-money short call is the exposed one.",
      "The writer of the call bears the mirror image: assignment the day before ex-dividend removes the stock and leaves the writer owing the dividend on a position they no longer hold."
     ],
     "source": "Merton 1973; Options Clearing Corporation exercise rules"
    },
    {
     "id": "early-exercise-put-test",
     "term": "The interest-driven early-exercise test for an American put",
     "definition": "Exercising a deep in-the-money put early converts the position into cash at the strike, which then earns interest. The condition compares that interest to the remaining option value given up.",
     "formula": "Exercise if K*(1 - exp(-r*tau)) > (remaining time value of the put) + PV(dividends over tau)",
     "fields": [
      {
       "label": "Left-hand side",
       "value": "Interest earned on the strike proceeds over the remaining life",
       "mono": true
      },
      {
       "label": "Right-hand side",
       "value": "Time value surrendered plus any dividend the short stock position would owe",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "K = 100, r = 0.04, tau = 30/365. Interest term = 0.328227. If the remaining time value of the put is 0.20 and no dividend is expected, the condition holds and early exercise is preferable. At a remaining time value of 0.40 it does not",
       "mono": true
      }
     ],
     "notes": [
      "Higher rates make early put exercise more common and near-zero rates make it nearly absent, because the entire benefit is the interest term.",
      "A pending dividend works against early put exercise, since exercising leaves a short stock position that owes the dividend."
     ]
    },
    {
     "id": "settlement-am-pm",
     "term": "AM versus PM settlement",
     "definition": "The time of day at which the settlement value of a cash-settled contract is determined. AM-settled contracts use opening prices on the expiration date and stop trading the preceding business day; PM-settled contracts use closing prices on the expiration date and trade through it.",
     "fields": [
      {
       "label": "AM settlement",
       "value": "Settlement value derived from opening prices on the expiration date; last trading day is the preceding business day",
       "mono": true
      },
      {
       "label": "PM settlement",
       "value": "Settlement value derived from closing prices on the expiration date; trades through the close",
       "mono": true
      },
      {
       "label": "Special opening quotation",
       "value": "A settlement value computed from the opening price of each component, which need not equal any traded index level",
       "mono": true
      }
     ],
     "notes": [
      "An AM-settled contract carries an unhedgeable overnight gap between the final close at which it can be traded and the opening prints that set its settlement value.",
      "The special opening quotation is assembled from component opening prices that occur at different moments, so it can differ from every index level printed on the day. A position marked against the index rather than against the settlement value will not reconcile.",
      "Two contracts on the same underlying and the same nominal expiration date can settle at different values if one is AM-settled and one PM-settled. Confirm which before pairing them in a spread."
     ],
     "source": "CBOE contract specifications"
    },
    {
     "id": "cash-versus-physical",
     "term": "Cash settlement versus physical delivery",
     "definition": "On exercise a physically settled contract transfers the deliverable, normally 100 shares per contract; a cash-settled contract transfers the in-the-money amount in cash and no security changes hands.",
     "formula": "Cash settlement amount = max(SettlementValue - K, 0) * multiplier for a call; max(K - SettlementValue, 0) * multiplier for a put",
     "fields": [
      {
       "label": "Physical",
       "value": "Deliverable transfers; the holder ends with a stock position and a cash movement of K * multiplier",
       "mono": true
      },
      {
       "label": "Cash",
       "value": "Only the in-the-money amount moves; no position results",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "A cash-settled call with K = 100, settlement value 103.40, multiplier 100: settlement amount = 3.40 * 100 = 340.00. A physically settled call at the same strike delivers 100 shares against payment of 10,000.00",
       "mono": true
      }
     ],
     "notes": [
      "A physically settled spread where both legs finish in the money delivers and receives the stock, and the two stock legs offset. Where only one leg finishes in the money the account is left holding stock.",
      "Cash settlement removes assignment surprise entirely but replaces it with settlement-value risk, since the settlement value can differ from the last traded price.",
      "Capital requirements differ sharply: a physically settled assignment requires the cash or the borrow, while a cash-settled expiry requires only the loss."
     ]
    },
    {
     "id": "occ-role",
     "term": "The role of the clearinghouse",
     "definition": "For listed US options the Options Clearing Corporation is the issuer of every contract, the central counterparty to every trade, and the guarantor of performance. After a trade clears, the buyer and seller each face the clearinghouse rather than each other.",
     "fields": [
      {
       "label": "Issuer",
       "value": "Every listed option is issued by the clearinghouse, not by the writer",
       "mono": true
      },
      {
       "label": "Novation",
       "value": "The original trade is replaced by two contracts, each facing the clearinghouse",
       "mono": true
      },
      {
       "label": "Exercise processing",
       "value": "Exercise notices are submitted to the clearinghouse, which allocates assignment among clearing members",
       "mono": true
      },
      {
       "label": "Adjustments",
       "value": "Contract adjustments for corporate actions are determined and published by the clearinghouse",
       "mono": true
      }
     ],
     "notes": [
      "Counterparty credit is not a consideration in a listed option the way it is in an over-the-counter contract. The identity of the writer is unknown and irrelevant to the holder.",
      "Because the clearinghouse issues the contract, open interest is a count of contracts outstanding against it, not a count of matched pairs of named counterparties.",
      "The allocation of assignment is random at the clearing-member level and then determined by each broker at the account level. Neither stage is influenced by when the position was opened unless the broker uses first-in-first-out and discloses it."
     ],
     "source": "OCC"
    },
    {
     "id": "exercise-style-definition",
     "term": "Exercise style",
     "definition": "The set of dates on which the holder may exercise. American style permits exercise on any business day up to and including expiration; European style permits exercise only at expiration. Style is a contract term, not a geographic description.",
     "fields": [
      {
       "label": "American",
       "value": "Exercisable any business day through expiration. Standard for listed US equity options",
       "mono": true
      },
      {
       "label": "European",
       "value": "Exercisable only at expiration. Common for broad-based index options",
       "mono": true
      },
      {
       "label": "Consequence for parity",
       "value": "Put-call parity holds exactly only for European exercise",
       "mono": true
      },
      {
       "label": "Consequence for pricing",
       "value": "An American option is worth at least as much as the otherwise identical European option",
       "mono": true
      }
     ],
     "notes": [
      "Style and settlement are independent attributes. A contract can be European and physically settled, or American and cash settled; do not infer one from the other.",
      "The early-exercise premium in an American option is zero for a call on a non-dividend-paying underlying, which is why American and European calls on such an underlying have the same value."
     ]
    },
    {
     "id": "discrete-vs-continuous-dividends",
     "term": "Discrete dividends versus a continuous yield, with a worked repricing",
     "definition": "A cash dividend is a known amount on a known date, not a proportional rate. Modelling it as a continuous yield is a convenience that is exact only if the yield is derived from the present value of the actual dividends, and is wrong by a measurable amount if the yield is annualised naively.",
     "formula": "Escrowed model: price with S_adj = S - sum of Div_i*exp(-r*t_i) and q = 0. Exact equivalent yield: q = -ln(S_adj/S)/T",
     "fields": [
      {
       "label": "Escrowed-dividend model",
       "value": "Subtract the present value of every dividend inside the life from spot, then price with q = 0",
       "mono": true
      },
      {
       "label": "Exact equivalent yield",
       "value": "q = minus ln(S_adj/S)/T reproduces the escrowed price identically at every strike",
       "mono": true
      },
      {
       "label": "Naive yield",
       "value": "q = AnnualDividend/S, or the dividend divided by spot divided by T. Not equivalent, because it ignores the ex-date",
       "mono": true
      },
      {
       "label": "What a dividend does to value",
       "value": "Lowers a call and raises a put by roughly the present value of the dividend times the respective delta",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "S = 100, K = 100, T = 0.25, r = 0.04, sigma = 0.20, one 0.50 dividend with an ex-date at t = 0.10. PV = 0.50*exp(minus 0.004) = 0.49800399, so S_adj = 99.50199601. Escrowed call 4.21145563 and put 3.71444300, against 4.48523641 and 3.49021978 with no dividend: the call loses 0.27378078 and the put gains 0.22422322 on a dividend worth 0.498004. The exact equivalent yield is q = minus ln(0.995020)/0.25 = 0.01996993, and pricing with S = 100 at that q returns 4.21145563 and 3.71444300 - identical to eight decimals, as it must be. The naive yield of 0.02000000 returns 4.21105178, an error of minus 0.00040385 on the call",
       "mono": true
      }
     ],
     "notes": [
      "The naive-yield error is 0.0004 here and grows with the number of dividends and with how far from mid-life the ex-dates sit. On a one-year option with four quarterly dividends it is no longer a rounding difference.",
      "The equivalent yield is exact for European pricing and not for American, because early exercise depends on the dividend date and not just its present value. Any American pricer fed a continuous yield has lost the information the exercise test needs.",
      "The call loses more than the put gains, 0.2738 against 0.2242, because the two deltas are not equal in magnitude. Expecting the dividend effect to be symmetric is the common error."
     ]
    },
    {
     "id": "borrow-and-repo-in-the-forward",
     "term": "The borrow or repo rate inside the forward",
     "definition": "The forward price is set by the cost of carrying the underlying, which is the financing rate less the dividends less whatever the stock lending market pays for the shares. A hard-to-borrow name has a forward below the naive calculation, and the gap is the borrow, not an arbitrage.",
     "formula": "F = (S - sum of Div_i*exp(-r*t_i)) * exp((r - rebate)*T);  rebate implied by a quote = r - ln(F/(S - PV))/T",
     "fields": [
      {
       "label": "Rebate",
       "value": "The rate the short seller earns on cash collateral. A high rebate means a cheap borrow, a negative rebate an expensive one",
       "mono": false
      },
      {
       "label": "Effect on options",
       "value": "Enters exactly as a dividend yield does. A hard-to-borrow name prices with an effective q above its dividend yield",
       "mono": false
      },
      {
       "label": "Where it shows up",
       "value": "As an apparent put-call parity violation on a name with an expensive borrow",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "S = 100, r = 0.04, T = 0.25, one 0.50 dividend at t = 0.10 with PV 0.498004, so S minus PV is 99.501996. At a zero rebate F = 99.501996*exp(0.01) = 100.502008. At a 0.005 rebate F = 100.376459. At 0.020, F = 100.000752. At 0.050, so a 0.010 negative net carry, F = 99.253552. Read the other way, a market quoting a 0.25-year forward at 99.000000 implies rebate = 0.04 minus ln(99.000000/99.501996)/0.25 = 0.060231, i.e. a 6.02 percent borrow cost. Pricing a 100-strike call off that forward instead of off spot changes it materially: the effective yield is 0.060231 plus the dividend yield, not zero",
       "mono": true
      }
     ],
     "notes": [
      "A parity residual on a listed name is a borrow quote in disguise, and it is often the only borrow quote a retail account can see. Reading it as an arbitrage is the standard mistake.",
      "The borrow can change daily and is not a contractual term of the option, so an option priced off a forward inherits a floating input that the option's own terms never mention.",
      "A synthetic short built from options requires no borrow, which is precisely why the options market prices the borrow into the synthetic. The cost does not disappear; it moves into the premium."
     ]
    },
    {
     "id": "box-spread-financing-rate",
     "term": "The box spread as a financing instrument and its implied rate",
     "definition": "A box spread pays the strike width at expiration regardless of the underlying, so it is a zero-coupon bond assembled from four options. Its price implies a rate, and that rate is what the options market charges to lend or borrow over the tenor.",
     "formula": "Fair box = (K2 - K1)*exp(-r*T);  implied continuous rate = ln((K2 - K1)/Price)/T;  implied simple rate = ((K2 - K1)/Price - 1)/T",
     "fields": [
      {
       "label": "Long box",
       "value": "Pay the price now, receive the width at expiration. Economically a deposit",
       "mono": false
      },
      {
       "label": "Short box",
       "value": "Receive the price now, pay the width at expiration. Economically a loan",
       "mono": false
      },
      {
       "label": "Impossible prices",
       "value": "A price at or above the width implies a non-positive rate; a price at or below zero is not quotable",
       "mono": false
      },
      {
       "label": "American risk",
       "value": "On American-style legs the short box carries early-assignment risk on two of its four legs, which is a real cost the rate arithmetic does not contain",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "A 100/110 box, width 10.00, T = 0.25. At the reference r = 0.04 the fair value is 10*exp(minus 0.01) = 9.90049834, and the implied rate read back out is ln(10/9.90049834)/0.25 = 0.040000 continuous, 0.040201 simple - the round trip closes. A box traded at 9.80 implies ln(10/9.80)/0.25 = 0.080811 continuous, 8.0811 percent, or 0.081633 simple. A box traded at 9.95 implies 0.020050 continuous. A box at 10.00 implies a zero rate and above 10.00 implies a negative one. The 9.80 example used in the payoff sections of this site therefore embeds an 8.08 percent financing rate rather than the 4 percent reference rate, which is why its 20.00 fixed payoff is larger than the fair 9.90 box would deliver",
       "mono": true
      }
     ],
     "notes": [
      "The implied rate is the number to compare across boxes, not the price. A 9.80 box on a 10-wide and a 19.60 box on a 20-wide at the same tenor are the same instrument.",
      "A short box is an unsecured borrowing whose collateral is the margin requirement, and its rate has to be compared with the rate on the account's actual margin loan, not with a policy rate.",
      "The early-assignment risk on the American legs is the reason a listed box can trade at a rate away from any observable curve for long periods without an arbitrage appearing. The rate gap is the price of the assignment optionality being handed to someone else."
     ]
    },
    {
     "id": "risk-free-versus-funding-rate",
     "term": "The risk-free rate and the actual funding rate are different inputs",
     "definition": "The r in the pricing formula is a discount rate for a certain cash flow. The rate an account actually pays or receives on the cash the position ties up is a funding rate, and the two are not equal. Using one where the other belongs is a systematic error, not a rounding one.",
     "formula": "Value uses r for discounting. Realised carry on a position uses the account's own funding rate r_fund, and the difference over the life is approximately (r_fund - r)*CapitalTied*T",
     "fields": [
      {
       "label": "r in the formula",
       "value": "The rate at which the strike is discounted. A curve rate at the option's tenor, not an overnight rate",
       "mono": false
      },
      {
       "label": "Funding rate for a long option",
       "value": "The premium is paid up front, so the cost is the account's own opportunity or borrowing rate on that premium",
       "mono": false
      },
      {
       "label": "Funding rate for a short option",
       "value": "The credit is received but the margin is tied up, so the relevant figure is the rate on the buying power consumed, not on the credit",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "A cash-secured put at K = 95 sold for 2.40 ties up 9,500.00 for 0.25 years. Priced with r = 0.04, the discounting inside the option value is worth 9,500.00*(1 minus exp(minus 0.01)) = 94.52 over the quarter. If the account actually earns 0.01 on that cash instead of 0.04, the shortfall is 9,500.00*(exp(0.0025) minus 1) against 9,500.00*(exp(0.01) minus 1), i.e. 23.78 against 95.48, a gap of 71.70 - which is 29.9 percent of the 240.00 maximum profit on the position. The option value used none of that; it assumed the 0.04",
       "mono": true
      }
     ],
     "notes": [
      "A 70-dollar funding gap against a 240-dollar maximum profit is not a second-order effect. On any structure whose return comes from committed capital rather than from direction, the funding rate is a first-order input and the model does not contain it.",
      "The model's r and the account's funding rate diverge most on cash-secured structures and least on defined-risk debit spreads, because the latter tie up only the debit.",
      "Two accounts holding the identical position can have materially different economics purely from the rate paid on idle cash and on the margin loan. Nothing in the option's price reflects that."
     ]
    },
    {
     "id": "forward-price-and-carry",
     "term": "Carry and the forward price",
     "definition": "Every option is really written on the forward, and the forward is spot plus carry. Carry is the financing cost minus the dividends minus the lending income, and once it is collected into a single number the option formula takes no separate view of any of its components.",
     "formula": "F = S*exp(b*T) with b = r - q - rebate;  Black-Scholes-Merton with (S, q) and Black-76 with F are the same price whenever F = S*exp((r - q)*T)",
     "fields": [
      {
       "label": "Cost of carry b",
       "value": "r minus q minus the borrow rebate. Positive b means the forward is above spot",
       "mono": true
      },
      {
       "label": "Equivalence",
       "value": "Any two of the three - spot, forward, carry - determine the third, so a price can be quoted off any of them",
       "mono": false
      },
      {
       "label": "Why it matters for exercise",
       "value": "Early exercise depends on b, not on r alone. b below zero is the condition under which an American call can have exercise value",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, K = 100, T = 0.25, r = 0.04, q = 0, sigma = 0.20, at which the call is 4.485236 and the put is 3.490220. These are inputs chosen to make the arithmetic checkable, not observations of any market. b = 0.04 and F = 100*exp(0.01) = 101.005017. Black-76 on that forward at K = 100 returns 4.48523641, identical to the spot-form value to 1e-14, and the put returns 3.49021978. Adding a 0.06 dividend yield makes b = minus 0.02, F = 99.501248, and the European call falls to 3.696260 while an American call at the same inputs is worth 3.741151 by a converged lattice - the 0.044891 difference exists only because b turned negative",
       "mono": true
      }
     ],
     "notes": [
      "b below zero is the single condition that creates American call exercise value. It is not about the level of rates or of dividends separately, only about their difference net of borrow.",
      "Because the forward absorbs all three carry components, a forward quote is a more reliable input than a spot quote plus three estimates. Where a forward is observable, use it.",
      "Two vendors disagreeing on an option's implied volatility almost always disagree on b rather than on the price. Reconcile the forward first."
     ]
    },
    {
     "id": "dividend-inside-a-spread",
     "term": "A dividend landing inside a vertical spread",
     "definition": "A dividend lowers both legs of a call vertical, and because the two legs have different deltas the effects do not cancel. The spread absorbs a large fraction of the dividend impact on its long leg, and separately the short leg acquires an assignment test it did not have before.",
     "formula": "Effect on the spread = [C(S_adj, K1) - C(S_adj, K2)] - [C(S, K1) - C(S, K2)], with S_adj = S - PV(Div)",
     "fields": [
      {
       "label": "Value effect",
       "value": "Negative for a call debit spread, since the long leg loses more than the short leg",
       "mono": false
      },
      {
       "label": "Assignment effect",
       "value": "The short call becomes an early-exercise candidate the day before the ex-date once its remaining extrinsic value falls below the dividend",
       "mono": false
      },
      {
       "label": "The test",
       "value": "Exercise the short leg early if Dividend exceeds the remaining extrinsic value of that call after the ex-date",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "A 100/110 call vertical at S = 100, T = 0.25, r = 0.04, sigma = 0.20, with a 0.50 dividend at t = 0.10 whose present value is 0.498004. Without the dividend: 100 call 4.485236, 110 call 1.140397, spread 3.344839. With the escrowed dividend at S_adj = 99.501996: 4.211456 and 1.038880, spread 3.172575. The 100 leg lost 0.273781 and the 110 leg lost 0.101517, so the spread lost 0.172264 - it absorbed 62.9 percent of the effect on the long leg. Separately, the assignment test on a short call after the ex-date with 0.15 years remaining: an at-the-money 100 call has 3.388514 of extrinsic value, far above the 0.50 dividend, so no exercise. A 90-strike call has 10.785382 minus 10.00 = 0.785382 of extrinsic, still above 0.50. An 80-strike call has 20.481618 minus 20.00 = 0.481618 of extrinsic, below the 0.50 dividend, so it is an exercise candidate",
       "mono": true
      }
     ],
     "notes": [
      "The exercise test is not about how deep in the money the short leg is in absolute terms; it is about the remaining extrinsic value against the dividend. In the worked case the boundary sits between the 90 and the 80 strike.",
      "The value effect and the assignment effect point in opposite directions for the holder of a call debit spread: the spread is worth less, and the short leg being assigned early hands the holder a long stock position it did not want.",
      "A dividend that is announced but not yet ex is already in the option prices. Repricing a spread for a dividend that the market has already discounted double-counts it."
     ]
    }
   ],
   "reviewed": "2026-08-27"
  },
  {
   "slug": "conventions",
   "title": "Contract conventions",
   "lede": "Symbology, multipliers, expiration schedules, and quoting rules.",
   "intro": "These are the conventions that make an option quote unambiguous. Most integration errors in options data come from misreading one of the fields below, particularly the strike encoding in the symbol.",
   "tables": [
    {
     "title": "Standard listed equity option",
     "columns": [
      "Attribute",
      "Convention"
     ],
     "rows": [
      [
       "Multiplier",
       "100 shares per contract unless the contract has been adjusted"
      ],
      [
       "Quotation",
       "Price per share. A quote of 2.50 costs 250.00 for one standard contract"
      ],
      [
       "Exercise style",
       "American"
      ],
      [
       "Settlement",
       "Physical delivery"
      ],
      [
       "Standard expiration",
       "The third Friday of the expiration month"
      ],
      [
       "Trading hours",
       "9:30 to 16:00 Eastern for most equity options"
      ],
      [
       "Minimum increment",
       "Commonly 0.01 for series under 3.00 and 0.05 above, varying by penny-quoting program membership"
      ]
     ]
    },
    {
     "title": "OSI option symbol structure",
     "intro": "The 21-character Options Symbology Initiative format. Reading the strike field wrong by a factor of 1000 is the most common parsing bug.",
     "columns": [
      "Field",
      "Width",
      "Format",
      "Example"
     ],
     "rows": [
      [
       "Root symbol",
       "6",
       "Left-justified, space-padded",
       "AAPL"
      ],
      [
       "Expiration",
       "6",
       "YYMMDD",
       "260918"
      ],
      [
       "Type",
       "1",
       "C or P",
       "C"
      ],
      [
       "Strike",
       "8",
       "5 digits whole, 3 digits decimal, zero-padded, no decimal point",
       "00185000 = strike 185.00"
      ]
     ]
    },
    {
     "title": "Expiration cycles",
     "columns": [
      "Type",
      "Schedule",
      "Note"
     ],
     "rows": [
      [
       "Monthly",
       "Third Friday of the month",
       "The historical standard. Deepest liquidity in most names"
      ],
      [
       "Weekly",
       "Most Fridays that are not a third Friday",
       "Now listed on a wide set of underlyings"
      ],
      [
       "Quarterly",
       "Last business day of a calendar quarter",
       "Primarily index and ETF products"
      ],
      [
       "LEAPS",
       "Long-dated, generally more than nine months to expiration, expiring on a January third Friday",
       "Marginable differently from short-dated options"
      ],
      [
       "Daily",
       "Every trading day on selected high-volume index products",
       "Concentrated in the largest index and ETF underlyings"
      ]
     ]
    }
   ],
   "entries": [
    {
     "id": "expiration-date-history",
     "term": "Expiration date - Friday, not Saturday",
     "definition": "Standard monthly listed options expire on the third Friday of the expiration month. Prior to a rule change effective with February 2015 expirations, the technical expiration date was the Saturday following the third Friday, with Friday as the last trading day.",
     "notes": [
      "Historical data sets and older documentation may carry Saturday expiration dates. Date-matching against a modern calendar will fail on those rows.",
      "When the third Friday is an exchange holiday, expiration moves to the preceding Thursday."
     ]
    },
    {
     "id": "moneyness",
     "term": "Moneyness",
     "definition": "The relationship between the underlying price and the strike, stated from the perspective of the long holder.",
     "fields": [
      {
       "label": "Call in the money",
       "value": "S > K",
       "mono": true
      },
      {
       "label": "Call out of the money",
       "value": "S < K",
       "mono": true
      },
      {
       "label": "Put in the money",
       "value": "S < K",
       "mono": true
      },
      {
       "label": "Put out of the money",
       "value": "S > K",
       "mono": true
      },
      {
       "label": "Intrinsic value (call)",
       "value": "max(S - K, 0)",
       "mono": true
      },
      {
       "label": "Intrinsic value (put)",
       "value": "max(K - S, 0)",
       "mono": true
      },
      {
       "label": "Extrinsic value",
       "value": "Option price - intrinsic value",
       "mono": true
      }
     ],
     "notes": [
      "Extrinsic value is always non-negative for a fairly priced option and decays to zero at expiration.",
      "Delta is frequently used as a rough proxy for the probability of finishing in the money. It is a biased proxy, not an identity - it equals the risk-neutral probability only for d2, not d1."
     ]
    }
   ],
   "reviewed": "2026-08-26"
  },
  {
   "slug": "microstructure",
   "title": "Market microstructure",
   "lede": "How a listed option is quoted, ticked, cleared and filled, and the arithmetic of each.",
   "intro": "This section covers the mechanics between a model price and a fill. Where a figure appears it was computed from the same reference inputs used across this site - S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25 - with model values standing in for mid prices so that every implied-volatility figure is reproducible. Nothing here is an observed quote, a spread measurement, or a statistic about any venue; bid and ask levels are stated offsets from a model mid, chosen so the arithmetic can be checked. Rules described are stated as conventions in general use, with the rulebook named where one governs.",
   "tables": [
    {
     "title": "Quoting conventions and what each one implies",
     "intro": "Conventions in general use on US listed equity and index options. Confirm against the current exchange rulebook and your broker's specifications; these change.",
     "columns": [
      "Item",
      "Convention",
      "Consequence for arithmetic"
     ],
     "rows": [
      [
       "Quote unit",
       "Price per share of the underlying deliverable",
       "Multiply by the contract multiplier, normally 100, for the cash amount"
      ],
      [
       "Multiplier",
       "100 for a standard equity contract",
       "A 0.01 price change is 1.00 of cash per contract"
      ],
      [
       "Minimum tick, standard",
       "0.05 for series priced below 3.00 and 0.10 at or above 3.00",
       "The tick in volatility points depends on vega and therefore on strike and tenor"
      ],
      [
       "Minimum tick, penny program",
       "0.01 below 3.00 and 0.05 at or above, for series in the Penny Interval Program",
       "Cuts the tick in volatility terms by a factor of five or two"
      ],
      [
       "Quoted size",
       "In contracts, per side, per exchange",
       "Displayed size is per venue; the consolidated book is the union across venues"
      ],
      [
       "Implied volatility",
       "Not quoted by the exchange. Derived by each vendor from its own rate, dividend and mid conventions",
       "Two feeds can publish different IVs from identical prices"
      ],
      [
       "Underlying reference",
       "Vendors differ on whether they use the last trade, the mid of the underlying quote, or a computed forward",
       "This is the single largest source of IV disagreement between feeds"
      ],
      [
       "Complex order",
       "A single order for a multi-leg structure with one net price",
       "Fills at the net; individual leg prints are allocated afterwards"
      ]
     ]
    },
    {
     "title": "The bid-ask spread in price terms and in volatility terms",
     "intro": "Model mid is the Black-Scholes-Merton value at S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. Bid and ask are stated offsets from that mid, chosen for checkability and not observed anywhere. IV at bid and IV at ask were obtained by inverting each side. The last column is the spread expressed in volatility points, which is the comparison that removes strike and tenor from the picture.",
     "columns": [
      "Strike",
      "Model mid",
      "Bid",
      "Ask",
      "Spread in dollars",
      "IV at bid",
      "IV at ask",
      "Spread in volatility points",
      "Quoted vega per point"
     ],
     "rows": [
      [
       "95",
       "7.5459",
       "7.4459",
       "7.6459",
       "0.20",
       "0.193717",
       "0.206210",
       "1.2493",
       "0.160121"
      ],
      [
       "100",
       "4.4852",
       "4.3852",
       "4.5852",
       "0.20",
       "0.194930",
       "0.205070",
       "1.0140",
       "0.197240"
      ],
      [
       "105",
       "2.3909",
       "2.2909",
       "2.4909",
       "0.20",
       "0.194681",
       "0.205298",
       "1.0616",
       "0.188403"
      ],
      [
       "115",
       "0.4878",
       "0.4378",
       "0.5378",
       "0.10",
       "0.194408",
       "0.205340",
       "1.0932",
       "0.091596"
      ],
      [
       "125",
       "0.0659",
       "0.0409",
       "0.0909",
       "0.05",
       "0.187298",
       "0.209816",
       "2.2517",
       "0.022862"
      ]
     ]
    },
    {
     "title": "The minimum tick expressed in volatility points",
     "intro": "Same inputs. The applicable standard tick is 0.05 below a 3.00 price and 0.10 at or above it. The volatility-point figure is the tick divided by the quoted vega per point, which is the smallest volatility increment the price grid can express.",
     "columns": [
      "Strike",
      "Model price",
      "Applicable standard tick",
      "Quoted vega per point",
      "Standard tick in volatility points",
      "Penny tick in volatility points"
     ],
     "rows": [
      [
       "100",
       "4.4852",
       "0.10",
       "0.197240",
       "0.5070",
       "0.0507"
      ],
      [
       "110",
       "1.1404",
       "0.05",
       "0.144486",
       "0.3461",
       "0.0692"
      ],
      [
       "120",
       "0.1882",
       "0.05",
       "0.049198",
       "1.0163",
       "0.2033"
      ],
      [
       "130",
       "0.0211",
       "0.05",
       "0.009358",
       "5.3431",
       "1.0686"
      ]
     ]
    }
   ],
   "entries": [
    {
     "id": "quoting-a-listed-option",
     "term": "How a listed option is quoted",
     "definition": "An option is quoted as a price per share of the deliverable, in a minimum increment set by the exchange, in a size stated per venue and per side. The number a trader thinks in - implied volatility - is not quoted by anyone and is computed downstream from the price by each consumer of the data.",
     "formula": "Cash per contract = QuotedPrice * Multiplier;  the cash spread = (Ask - Bid) * Multiplier",
     "fields": [
      {
       "label": "Price to cash",
       "value": "A 4.4852 quote on a 100-multiplier contract is 448.52 of cash",
       "mono": true
      },
      {
       "label": "Spread to cash",
       "value": "A 0.20 wide market is 20.00 per contract, paid on entry and again on exit",
       "mono": true
      },
      {
       "label": "Spread as a share of premium",
       "value": "(Ask - Bid)/Mid, which grows without bound as the option gets cheaper",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25, at which the K = 100 call is 4.485236 with a quoted vega of 0.197240 per volatility point. These are inputs chosen to make the arithmetic checkable, not observations of any market. A 0.20 wide market around the 4.4852 mid is 4.3852 bid at 4.5852 offered: 20.00 of cash per contract and 4.46 percent of the premium. The same 0.20 spread around the 125-strike model value of 0.0659 would be 303 percent of the premium and is not quotable, which is why the wing in the table above is shown with a 0.05 spread instead - and that 0.05 is still 75.9 percent of the mid",
       "mono": true
      }
     ],
     "notes": [
      "Spread as a percentage of premium is the wrong comparison across strikes and the right one across time on a single strike. Across strikes, use volatility points.",
      "Round-trip cost is two spreads, not one, and on a defined-risk spread it is two spreads on each of two to four legs. Comparing a maximum profit to a single crossing understates the friction by a factor of two or more.",
      "Displayed size is per exchange. A 10-up market on one venue with fourteen other venues quoting the same series is not a 10-lot market, and it is not a 150-lot market either."
     ]
    },
    {
     "id": "spread-in-volatility-terms",
     "term": "The bid-ask spread expressed in volatility",
     "definition": "Dividing the price spread by vega converts it into volatility points, which is the only unit in which spreads are comparable across strikes and tenors. It is also the unit in which market makers set them, which is why the price spread widens on the wings while the volatility spread does not.",
     "formula": "Spread in volatility points = (Ask - Bid) / VegaPerPoint, where VegaPerPoint = Vega/100",
     "fields": [
      {
       "label": "First-order accuracy",
       "value": "Exact to first order. The approximation degrades where volga is large, which is on a far wing",
       "mono": false
      },
      {
       "label": "Why market makers work in this unit",
       "value": "It removes S, K, T and r, so one quoting rule applies to a whole surface",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25, at which the K = 100 call is 4.485236 with a quoted vega of 0.197240 per volatility point. These are inputs chosen to make the arithmetic checkable, not observations of any market. A 0.20 price spread at K = 100 gives 0.20/0.197240 = 1.0140 volatility points, and inverting the two sides directly gives 0.194930 and 0.205070, a difference of 1.0140 points - the rule-of-thumb and the exact inversion agree to four decimals. At K = 125 the model value is 0.0659 and the quoted vega is 0.022862, so a 0.05 spread is 0.05/0.022862 = 2.1870 points by the rule of thumb, while the exact inversion of 0.0409 and 0.0909 gives 0.187298 and 0.209816, a difference of 2.2517 points. The 0.065 discrepancy between the two methods is the volga term, and it is 3 percent of the spread",
       "mono": true
      }
     ],
     "notes": [
      "The rule of thumb is good to about a hundredth of a point at the money and to a few hundredths on a wing. It is the right calculation to do in your head and the wrong one to publish.",
      "A wing quoted 0.05 wide and an at-the-money quoted 0.20 wide can be the same spread in volatility terms. Comparing them in cents makes the wing look tight when it is not.",
      "Because the conversion divides by vega, spreads in volatility terms explode where vega collapses. That is not a market-maker choice; it is the tick grid meeting a small vega."
     ]
    },
    {
     "id": "tick-regime-and-penny-program",
     "term": "The tick regime and the Penny Interval Program",
     "definition": "The minimum price increment is set by the exchange and is not uniform: series in the Penny Interval Program quote in 0.01 below 3.00 and 0.05 at or above, while everything else quotes in 0.05 and 0.10. The tick is a hard floor on how finely a volatility can be expressed.",
     "formula": "Minimum expressible volatility increment = Tick / VegaPerPoint",
     "fields": [
      {
       "label": "Standard increments",
       "value": "0.05 for series priced below 3.00, 0.10 at or above 3.00",
       "mono": false
      },
      {
       "label": "Penny Interval Program increments",
       "value": "0.01 below 3.00, 0.05 at or above 3.00",
       "mono": false
      },
      {
       "label": "Where the floor bites",
       "value": "Low-vega series: far wings and very short tenors",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25, at which the K = 100 call is 4.485236 with a quoted vega of 0.197240 per volatility point. These are inputs chosen to make the arithmetic checkable, not observations of any market. At K = 100 the model price is 4.4852, so the standard tick is 0.10 and the floor is 0.10/0.197240 = 0.5070 volatility points; under penny quoting it is 0.0507 points. At K = 110 the price is 1.1404, tick 0.05, quoted vega 0.144477, floor 0.3461 points standard and 0.0692 penny. At K = 120: price 0.1882, vega 0.049200, floor 1.0163 points standard and 0.2033 penny. At K = 130: price 0.0211, vega 0.009358, floor 5.3431 points standard and 1.0686 penny. The tick floor is ten times larger at the 130 strike than at the 100 strike under either regime",
       "mono": true
      }
     ],
     "notes": [
      "Note the discontinuity at 3.00: a series that ticks through the 3.00 boundary changes its minimum increment, so the volatility grid coarsens by a factor of two on a price move of one cent.",
      "The floor at a far wing exceeds a whole volatility point under standard quoting. Any statement about wing volatility finer than that is describing the model used to smooth it, not the market.",
      "Penny quoting narrows spreads and also narrows the price bands into which a market maker can retreat. Its effect on quoted size, as distinct from quoted spread, is a separate question and is not settled by this arithmetic."
     ]
    },
    {
     "id": "market-maker-inventory-and-skew",
     "term": "Market-maker inventory and quoted skew",
     "definition": "A market maker's quoted volatility for a strike is a function of the price at which it is willing to change its inventory, not of a forecast. Because inventory is held in Greek space rather than in contracts, a position in one strike moves the quoted volatility of every strike that shares its exposures.",
     "fields": [
      {
       "label": "Inventory is measured in",
       "value": "Net delta, gamma, vega by tenor, and vanna and volga on a skewed book - not in contract counts",
       "mono": false
      },
      {
       "label": "Mechanism",
       "value": "A maker long vega quotes lower to attract sellers and higher to deter buyers, shifting the mid it shows rather than only widening around it",
       "mono": false
      },
      {
       "label": "Cross-strike propagation",
       "value": "Vega and gamma are proportional at one expiration, so absorbing gamma at one strike changes the vega inventory that prices every other strike in that expiration",
       "mono": false
      },
      {
       "label": "Skew as a quoting artefact",
       "value": "Part of an observed skew is a persistent inventory imbalance across strikes, and part is a distributional view. The two are not separable from quotes alone",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25, at which the K = 100 call is 4.485236 with a quoted vega of 0.197240 per volatility point. These are inputs chosen to make the arithmetic checkable, not observations of any market. A maker who has absorbed 100 contracts of the 100-strike call holds vega of 100*19.723967/100 = 1,972.40 per volatility point and gamma of 100*100*0.039448 = 394.48 of delta per point. Because Vega = Gamma*S^2*sigma*T with S^2*sigma*T = 500 at these inputs, that same inventory could be described as 394.48 of gamma or as 1,972.40 of vega, and offsetting it at any other strike in the same expiration necessarily offsets both in the same ratio. Neutralising the vega with the 105-strike call requires 1,972.40/(18.840253/100) = 104.69 contracts, and that position simultaneously removes 104.69*100*0.037681 = 394.48 of gamma - exactly all of it, not a coincidence but the proportionality",
       "mono": true
      }
     ],
     "notes": [
      "Because vega and gamma cannot be separated within one expiration, a maker cannot hedge one and keep the other. Every intra-expiry hedge is a joint decision, which is why term is where the real inventory management happens.",
      "Reading a skew as a pure statement about the distribution ignores that the quotes are also the price of transferring inventory. Both are present and neither is observable alone.",
      "This entry describes mechanics only. Nothing about the direction of any observed skew, or about whether any level is high or low, follows from it."
     ]
    },
    {
     "id": "open-interest-vs-volume",
     "term": "Open interest and volume are different counts",
     "definition": "Volume counts contracts traded in a session. Open interest counts contracts outstanding at the end of it. A trade changes open interest only according to whether each side was opening or closing, so the same volume figure is consistent with any change in open interest between minus that volume and plus it.",
     "formula": "Change in OI = (buy-to-open matched with sell-to-open) minus (buy-to-close matched with sell-to-close);  open-with-close pairs leave OI unchanged",
     "fields": [
      {
       "label": "Open against open",
       "value": "Creates a new contract. OI rises by the traded quantity",
       "mono": false
      },
      {
       "label": "Close against close",
       "value": "Extinguishes a contract. OI falls by the traded quantity",
       "mono": false
      },
      {
       "label": "Open against close",
       "value": "Transfers an existing contract. OI unchanged",
       "mono": false
      },
      {
       "label": "Bounds",
       "value": "For volume V, the change in OI lies between minus V and plus V",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Stated composition for one series in one session, chosen for checkability: 250 contracts matched open against open, 100 matched close against close, 30 matched buy-to-open against sell-to-close, 20 matched buy-to-close against sell-to-open. Volume = 250 + 100 + 30 + 20 = 400. Change in open interest = plus 250 minus 100 = plus 150. Starting from an open interest of 1,000 the session ends at 1,150 on 400 of volume, a volume-to-opening-OI ratio of 0.4000. The same 400 of volume with all of it close against close would have ended at 600, and with all of it open against open at 1,400",
       "mono": true
      }
     ],
     "notes": [
      "Open interest is published the following morning, not intraday, because it is a clearing figure rather than a market-data figure. Any intraday open-interest number is an estimate.",
      "Volume exceeding open interest is often described as unusual. Arithmetically it only requires the same contracts being traded more than once, which is the normal state of a liquid series.",
      "Open interest is a count of contracts, not of positions or of participants. One account holding 1,000 long and another holding 1,000 short is open interest of 1,000, not 2,000."
     ],
     "source": "OCC"
    },
    {
     "id": "occ-clearing-and-margin-flow",
     "term": "The clearing and margin flow through OCC",
     "definition": "Every listed option trade is novated to the clearinghouse, which becomes buyer to every seller and seller to every buyer. The obligation chain therefore runs from the customer to the clearing member to OCC, and margin is collected at each link under different rules at each link.",
     "fields": [
      {
       "label": "Novation",
       "value": "After clearing there is no bilateral counterparty. Each side faces OCC",
       "mono": false
      },
      {
       "label": "Customer to clearing member",
       "value": "Regulation T strategy-based margin, or portfolio margin for a qualifying account. Broker house requirements may be higher and usually are",
       "mono": false
      },
      {
       "label": "Clearing member to OCC",
       "value": "A risk-based margin calculation on the member's whole cleared position, not a per-customer sum",
       "mono": false
      },
      {
       "label": "Settlement cycle",
       "value": "Premium settles on the business day after the trade. Exercise settlement follows the underlying's settlement convention",
       "mono": false
      },
      {
       "label": "Consequence for the customer",
       "value": "A customer requirement is the maximum of the regulatory formula and the house requirement, and the house requirement is set with the member's own OCC margin in mind",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "A short 95-strike put with the underlying at 100 sold for 2.40. The Regulation T customer requirement is 2.40 plus max(0.20*100 minus 5.00, 0.10*95) = 2.40 plus 15.00 = 17.40 per share, 1,740.00 per contract. The customer's maximum loss is 9,260.00, so the requirement is 18.8 percent of the worst case. The clearing member's own requirement at OCC is computed on its net cleared book across all customers under a risk-based method, so it bears no fixed relationship to the 1,740.00 - which is exactly why a house requirement above the regulatory figure is common",
       "mono": true
      }
     ],
     "notes": [
      "There is no counterparty to research on a listed option, which is the entire economic function of the clearinghouse and the reason listed and over-the-counter structures are not comparable on price alone.",
      "The three margin layers are computed by different methods on different portfolios. A customer who reconciles a house requirement against the Regulation T formula and finds a gap has found the house layer, not an error.",
      "Novation is why an assignment arrives from the clearinghouse by allocation and not from the person on the other side of the original trade. The original counterparty is not identifiable and is not relevant."
     ],
     "source": "OCC"
    },
    {
     "id": "exercise-cutoffs-and-contrary-instructions",
     "term": "Exercise cut-offs and contrary instructions",
     "definition": "Automatic exercise happens by exception: in-the-money contracts are exercised unless the holder submits a contrary instruction before the broker's cut-off. The cut-off is earlier than the clearinghouse deadline, is set by the broker, and is the operative deadline for a customer.",
     "fields": [
      {
       "label": "Default",
       "value": "Exercise if in the money by the clearinghouse threshold at expiration",
       "mono": false
      },
      {
       "label": "Contrary instruction to abandon",
       "value": "Instructs the broker not to exercise a contract that would otherwise be exercised automatically",
       "mono": false
      },
      {
       "label": "Contrary instruction to exercise",
       "value": "Instructs exercise of a contract that would not be exercised automatically, which is how an out-of-the-money contract is exercised at all",
       "mono": false
      },
      {
       "label": "Cut-off ordering",
       "value": "Customer to broker, then broker to clearing member, then member to the clearinghouse. Each is earlier than the next",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "A long 100-strike call with the underlying settling at 100.02. It is in the money by 0.02 per share, so the default is exercise: the account receives 100 shares at a cost of 10,000.00 against a market value of 10,002.00, a 2.00 gain before any commission, and takes on an unhedged 10,002.00 stock position over the weekend. The same contract settling at 99.98 is out of the money by 0.02 and lapses by default, and exercising it by contrary instruction would cost 10,000.00 for 9,998.00 of stock, a 2.00 loss. In both cases the 2.00 is negligible against the 10,000.00 of position the decision creates",
       "mono": true
      }
     ],
     "notes": [
      "The important consequence of a marginal automatic exercise is not the two dollars of intrinsic value; it is the full notional stock position that appears in the account with no hedge and no decision.",
      "A broker's cut-off can be an hour or more before the clearinghouse deadline and is not standardised. Confirm it against your own broker's published time rather than against a general rule.",
      "The threshold for automatic exercise is a clearinghouse parameter, not a law of nature, and it has been changed. Check the current figure rather than a remembered one."
     ],
     "source": "OCC"
    },
    {
     "id": "closing-print-vs-settlement-price",
     "term": "The closing print and the settlement price are different numbers",
     "definition": "The price that determines exercise value is a settlement price computed under a stated rule, not the last trade of the session. For an equity option that rule references the underlying's official closing price; for a cash-settled index option it can reference an opening calculation on the following morning.",
     "fields": [
      {
       "label": "Equity option",
       "value": "Exercise is physical and the moneyness test uses the underlying's official closing price on the last trading day",
       "mono": false
      },
      {
       "label": "Index option, PM-settled",
       "value": "Cash settlement against a closing index calculation on the last trading day",
       "mono": false
      },
      {
       "label": "Index option, AM-settled",
       "value": "Cash settlement against a special opening calculation on the following morning, using each component's opening price",
       "mono": false
      },
      {
       "label": "Why it matters",
       "value": "The last option trade can occur minutes before a settlement reference that moves, so the option's final print and its settlement value can differ",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "An index option struck at 100 whose last trade of the session is 0.05, on an index printing 99.90 at the close. If the contract is AM-settled and the special opening calculation the next morning is 100.60, the contract settles for 0.60 per unit, twelve times its last traded price, and the holder had no opportunity to trade between the two. If instead the opening calculation is 99.40, it settles at zero. The final trade price carries no information about which of these occurs",
       "mono": true
      }
     ],
     "notes": [
      "An AM-settled contract stops trading before its settlement reference is determined. That gap is not a liquidity problem, it is the contract specification, and it cannot be traded out of.",
      "The special opening calculation uses each component's opening price, which need not occur at the same instant. It is therefore not a price at which the index ever traded.",
      "Reconciling a settlement value against the last option print will always show discrepancies. Reconcile against the stated settlement reference instead."
     ],
     "source": "OCC; CBOE contract specifications"
    },
    {
     "id": "legging-a-spread",
     "term": "How a spread order is legged, and what the fill does to the profile",
     "definition": "A multi-leg order can be filled as a net package or leg by leg. The distinction is not administrative: because every profile figure on a spread is derived from the net price, the fill quality moves the maximum profit, the maximum loss and the breakeven, and the implied spread market is wider than either leg's market suggests.",
     "formula": "Implied spread market: bid = LegBid1 - LegAsk2, offer = LegAsk1 - LegBid2. Width of the implied market = sum of the two leg widths",
     "fields": [
      {
       "label": "Net debit at the worst fill",
       "value": "Pay the offer on the long leg, sell the bid on the short leg",
       "mono": false
      },
      {
       "label": "Net debit at the best fill",
       "value": "Buy the bid on the long leg, sell the offer on the short leg, which requires both legs to trade against you at your price",
       "mono": false
      },
      {
       "label": "Leg risk",
       "value": "Filling one leg and missing the other converts a defined-risk structure into a single-leg position at a price chosen by the market",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "A 100/110 call vertical with the 100 call quoted 3.15 at 3.25 and the 110 call quoted 1.05 at 1.15, stated for checkability. Paying the offer and selling the bid: 3.25 minus 1.05 = 2.20 debit, maximum profit 7.80, breakeven 102.20. Mid on both legs: 3.20 minus 1.10 = 2.10 debit, maximum profit 7.90, breakeven 102.10. Buying the bid and selling the offer: 3.15 minus 1.15 = 2.00 debit, maximum profit 8.00, breakeven 102.00. The implied spread market is therefore 2.00 bid at 2.20 offered, 0.20 wide - the sum of the two 0.10 leg widths. The full crossing costs 0.20 of the 2.10 mid debit, which is 9.5 percent of the premium and 2.5 percent of the maximum profit, and it moves the breakeven by 0.20",
       "mono": true
      }
     ],
     "notes": [
      "The implied spread market is the sum of the leg widths, so a two-leg structure crosses twice the spread and a four-leg structure four times. Comparing a maximum profit to a single leg spread understates the friction proportionally.",
      "A net-priced complex order can fill inside the implied market, because a single counterparty can take the whole package where no single leg market would. That is the reason to use one.",
      "Legging deliberately to capture a better net price accepts leg risk in exchange. The arithmetic of the trade-off is the improvement, 0.05 or 0.10 on the net, against the cost of being left with an unintended single-leg position."
     ]
    },
    {
     "id": "complex-order-books",
     "term": "Complex order books and the implied spread market",
     "definition": "Exchanges maintain a separate book for multi-leg orders in which a package is matched against another package at a net price, or against the individual leg markets, whichever is better for the order. The book therefore has two sources of liquidity and the better of the two sets the executable net price.",
     "fields": [
      {
       "label": "Package against package",
       "value": "Two complex orders in the same structure match directly at a net price, with no leg market involved",
       "mono": false
      },
      {
       "label": "Package against legs",
       "value": "A complex order executes against the individual leg quotes when their combination beats the complex book",
       "mono": false
      },
      {
       "label": "Priority",
       "value": "Rules differ by exchange on whether a leg-market price beats an equal-priced complex order, and this is a rulebook question, not a general principle",
       "mono": false
      },
      {
       "label": "Consequence",
       "value": "The best available net price is at least as good as the implied market from the legs, and can be better",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Using the same 100/110 vertical: the leg markets imply 2.00 bid at 2.20 offered. If the complex book holds a resting order to sell the package at 2.12, the executable offer is 2.12 rather than 2.20, an improvement of 0.08 on the net, worth 8.00 per contract and moving the breakeven from 102.20 to 102.12. Against a mid-priced debit of 2.10 that improvement is 3.8 percent of the premium paid",
       "mono": true
      }
     ],
     "notes": [
      "Sending a multi-leg structure as separate single-leg orders forgoes the complex book entirely. That is a decision with a measurable cost and it is usually made by accident.",
      "The complex book is thinner and less continuously quoted than the leg markets, so a resting package order can sit unfilled at a price the leg markets would have crossed. Both books have to be read.",
      "Priority interaction between the two books is exchange-specific and has changed. Treat any general statement about it, including this one, as a pointer to the current rulebook."
     ]
    },
    {
     "id": "opening-and-closing-auctions",
     "term": "Opening and closing procedures in options",
     "definition": "Options series open through an exchange procedure rather than by continuous trading from the first quote, and the procedure exists because the option cannot be priced until the underlying has opened. The consequence is a window at the start of the session in which quoted prices are not comparable with the rest of the day.",
     "fields": [
      {
       "label": "Why an opening procedure is needed",
       "value": "An option's value depends on the underlying price, so a series cannot be meaningfully quoted before its underlying opens",
       "mono": false
      },
      {
       "label": "Sequencing",
       "value": "The underlying opens, the exchange runs its opening procedure for the series, then continuous quoting begins",
       "mono": false
      },
      {
       "label": "Consequence for data",
       "value": "Prints and quotes from the opening window can reflect a stale underlying reference, so implied volatilities computed from them are unreliable",
       "mono": false
      },
      {
       "label": "AM-settled expiration",
       "value": "For an AM-settled index contract the settlement reference is itself an opening calculation, so the opening procedure and the settlement are the same event",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "An option computed from a stale underlying reference: Reference inputs: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25, at which the K = 100 call is 4.485236 with a quoted vega of 0.197240 per volatility point. These are inputs chosen to make the arithmetic checkable, not observations of any market. If the underlying has in fact opened at 101 but the volatility calculation still uses 100, the 100-strike call at a true 0.20 volatility is worth 5.064399 rather than 4.485236, and inverting that true price against the stale spot of 100 returns an implied volatility of 0.229350 instead of 0.200000 - an error of 2.9350 volatility points from a one-point staleness in the underlying reference. That is 2.89 times the entire 1.0140-point bid-ask spread from the table above",
       "mono": true
      }
     ],
     "notes": [
      "A one-point error in the underlying reference produces a 2.94-point error in the implied volatility at these inputs, against a bid-ask spread of 1.01 points. Underlying staleness, not option staleness, is the dominant data-quality problem at the open.",
      "Any volatility series built from opening prints will show a spike that is an artefact of the reference price and not a market event. Check the timestamp alignment before interpreting it.",
      "Exchange opening procedures differ in detail and change. The point that survives any specific rule is the sequencing: the underlying first, then the series."
     ],
     "source": "CBOE contract specifications; OCC"
    }
   ]
  },
  {
   "slug": "margin",
   "title": "Margin treatment",
   "lede": "Baseline Regulation T and FINRA requirements by structure.",
   "intro": "The figures below are the regulatory baseline. Broker house requirements are frequently higher and are the requirement that actually binds. Portfolio margin, where available to qualifying accounts, replaces these strategy-based rules with a risk-based calculation and generally produces lower requirements for hedged books and higher ones for concentrated positions.",
   "tables": [
    {
     "title": "Requirement by structure",
     "columns": [
      "Position",
      "Baseline requirement"
     ],
     "rows": [
      [
       "Long option, 9 months or less to expiration",
       "Pay 100 percent of premium in cash"
      ],
      [
       "Long option, more than 9 months to expiration",
       "May be marginable, commonly at 75 percent of premium"
      ],
      [
       "Covered call",
       "No requirement beyond the margin on the underlying stock"
      ],
      [
       "Cash-secured put",
       "Strike multiplied by the multiplier, held in cash"
      ],
      [
       "Naked call",
       "Premium plus the greater of: 20 percent of underlying value less any out-of-the-money amount, or 10 percent of underlying value"
      ],
      [
       "Naked put",
       "Premium plus the greater of: 20 percent of underlying value less any out-of-the-money amount, or 10 percent of the strike value"
      ],
      [
       "Debit spread",
       "Pay the net debit in full"
      ],
      [
       "Credit spread",
       "Strike width less the net credit received, which equals the maximum loss"
      ],
      [
       "Long straddle or strangle",
       "Pay both premiums in full"
      ],
      [
       "Short straddle",
       "The naked requirement on the greater side, plus the premium on the other side"
      ]
     ]
    },
    {
     "title": "Buying-power reduction by structure, worked",
     "intro": "Regulation T baseline, one contract, 100 multiplier, underlying at 100. Figures follow from the formulas in the entries below and nothing else. House requirements are frequently higher.",
     "columns": [
      "Structure",
      "Inputs",
      "Formula",
      "BPR",
      "Max loss",
      "BPR as a share of max loss"
     ],
     "rows": [
      [
       "Long call",
       "K 100 at 3.20",
       "Full premium",
       "320.00",
       "320.00",
       "100 percent"
      ],
      [
       "Credit vertical",
       "5.00 wide, credit 1.60",
       "(W - C) * 100",
       "340.00",
       "340.00",
       "100 percent"
      ],
      [
       "Debit vertical",
       "debit 2.10",
       "D * 100",
       "210.00",
       "210.00",
       "100 percent"
      ],
      [
       "Iron condor",
       "5.00 wings, credit 1.60",
       "(wider wing - C) * 100",
       "340.00",
       "340.00",
       "100 percent"
      ],
      [
       "Iron butterfly",
       "5.00 wings, credit 3.10",
       "(W - C) * 100",
       "190.00",
       "190.00",
       "100 percent"
      ],
      [
       "Long butterfly",
       "debit 1.20",
       "D * 100",
       "120.00",
       "120.00",
       "100 percent"
      ],
      [
       "Cash-secured put",
       "K 95 at 2.40",
       "K * 100",
       "9,500.00",
       "9,260.00",
       "103 percent"
      ],
      [
       "Naked put",
       "K 95 at 2.40, U 100",
       "(2.40 + max(20 - 5, 9.50)) * 100",
       "1,740.00",
       "9,260.00",
       "19 percent"
      ],
      [
       "Naked call",
       "K 105 at 1.90, U 100",
       "(1.90 + max(20 - 5, 10)) * 100",
       "1,690.00",
       "Unbounded",
       "n/a"
      ],
      [
       "Covered call",
       "stock at 98, K 105 at 2.10",
       "Stock margin only",
       "Stock requirement",
       "9,590.00",
       "Varies"
      ],
      [
       "Call ratio 1x2",
       "100 long, two 105 short",
       "Vertical plus one naked call",
       "Vertical plus 1,690.00 approx",
       "Unbounded",
       "n/a"
      ]
     ]
    },
    {
     "title": "Defined-risk versus undefined-risk capital treatment",
     "columns": [
      "Attribute",
      "Defined-risk",
      "Undefined-risk"
     ],
     "rows": [
      [
       "Requirement basis",
       "Maximum loss, fixed at entry",
       "A percentage of underlying value, recomputed daily"
      ],
      [
       "Behaviour as the position loses",
       "Unchanged",
       "Rises, because the out-of-the-money deduction shrinks"
      ],
      [
       "Worst case relative to requirement",
       "Equal",
       "Far larger than the requirement"
      ],
      [
       "Effect of assignment",
       "Replaced by a stock requirement on the assigned leg",
       "Replaced by a stock requirement"
      ],
      [
       "Effect of a volatility spike under portfolio margin",
       "Bounded by the maximum loss",
       "Unbounded within the shock grid"
      ]
     ]
    },
    {
     "title": "Regulation T requirement formulas by structure, worked",
     "intro": "Regulation T baseline, one contract, 100 multiplier, underlying at 100. Premiums are the Black-Scholes-Merton model values at the reference inputs S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25, so every figure is reproducible. House requirements are frequently higher and are the requirement that actually binds. Confirm against 12 CFR 220 and FINRA Rule 4210 and your broker's specifications.",
     "columns": [
      "Structure",
      "Formula",
      "Inputs used",
      "Requirement per contract"
     ],
     "rows": [
      [
       "Long call or put, 9 months or less",
       "Full premium",
       "100 call at 4.4852",
       "448.52"
      ],
      [
       "Naked call",
       "Premium plus max(0.20*U minus OTM amount, 0.10*U)",
       "105 call at 2.3909, U = 100, OTM 5.00",
       "239.09 plus 1,500.00 = 1,739.09"
      ],
      [
       "Naked put",
       "Premium plus max(0.20*U minus OTM amount, 0.10*K)",
       "95 put at 1.6006, U = 100, OTM 5.00",
       "160.06 plus 1,500.00 = 1,660.06"
      ],
      [
       "Naked put, at the money",
       "Premium plus max(0.20*U, 0.10*K)",
       "100 put at 3.4902, U = 100, OTM 0.00",
       "349.02 plus 2,000.00 = 2,349.02"
      ],
      [
       "Cash-secured put",
       "Strike times multiplier",
       "K = 95",
       "9,500.00"
      ],
      [
       "Debit vertical",
       "Net debit",
       "100/105 call spread at 2.0944",
       "209.44"
      ],
      [
       "Credit vertical",
       "(Width minus credit) times multiplier",
       "95/100 put spread, 5.00 wide, credit 1.8896",
       "311.04"
      ],
      [
       "Iron condor",
       "(Wider wing minus credit) times multiplier",
       "5.00 wings, credit 2.2696",
       "273.04"
      ],
      [
       "Long straddle or strangle",
       "Both premiums in full",
       "100 straddle at 7.9755",
       "797.55"
      ],
      [
       "Short straddle",
       "Greater naked side plus the other side's premium",
       "100 call 4.4852, 100 put 3.4902, U = 100",
       "2,448.52 plus 349.02 = 2,797.55"
      ],
      [
       "Covered call",
       "Stock margin only",
       "Long 100 shares plus short call",
       "Stock requirement"
      ]
     ]
    },
    {
     "title": "Portfolio margin stress grid: ten short at-the-money straddles",
     "intro": "Ten short 100-strike straddles at the reference inputs S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. Entry credit 7,975.46. FINRA Rule 4210 portfolio margin evaluates individual-equity positions over a plus and minus 15 percent range at ten equidistant points and takes the largest loss. Every value is a full Black-Scholes-Merton revaluation at the shocked spot with volatility held at 0.20. Confirm the applicable range and the eligibility rules against the current rulebook.",
     "columns": [
      "Shock",
      "Underlying",
      "Position value",
      "Profit and loss"
     ],
     "rows": [
      [
       "minus 15 percent",
       "85.0000",
       "minus 14,512.09",
       "minus 6,536.63"
      ],
      [
       "minus 12 percent",
       "88.0000",
       "minus 12,098.79",
       "minus 4,123.34"
      ],
      [
       "minus 9 percent",
       "91.0000",
       "minus 10,117.05",
       "minus 2,141.60"
      ],
      [
       "minus 6 percent",
       "94.0000",
       "minus 8,708.43",
       "minus 732.98"
      ],
      [
       "minus 3 percent",
       "97.0000",
       "minus 7,979.08",
       "minus 3.63"
      ],
      [
       "0 percent",
       "100.0000",
       "minus 7,975.46",
       "0.00"
      ],
      [
       "plus 3 percent",
       "103.0000",
       "minus 8,677.06",
       "minus 701.61"
      ],
      [
       "plus 6 percent",
       "106.0000",
       "minus 10,007.08",
       "minus 2,031.62"
      ],
      [
       "plus 9 percent",
       "109.0000",
       "minus 11,854.27",
       "minus 3,878.82"
      ],
      [
       "plus 12 percent",
       "112.0000",
       "minus 14,097.19",
       "minus 6,121.73"
      ],
      [
       "plus 15 percent",
       "115.0000",
       "minus 16,623.28",
       "minus 8,647.82"
      ]
     ]
    }
   ],
   "entries": [
    {
     "id": "assignment-margin-cascade",
     "term": "Assignment margin cascade",
     "definition": "When a short leg of a defined-risk spread is assigned before expiration, the resulting stock position carries a full stock margin requirement, which is far larger than the spread requirement it replaces. The account can breach maintenance margin overnight even though the position's maximum loss has not changed.",
     "notes": [
      "Example shape: a short in-the-money call in a credit call spread is assigned, creating a short stock position. The long call still caps the loss, but the broker now margins short stock, not a spread.",
      "The usual outcome is a margin call resolved by exercising the long leg or closing the stock, both of which realise the position early.",
      "This is a liquidity risk, not a loss risk. The maximum loss on the spread is unchanged. The account simply may not have the cash to hold it."
     ]
    },
    {
     "id": "portfolio-margin",
     "term": "Portfolio margin",
     "definition": "A risk-based margin methodology that computes requirements from a stress test of the whole position across a range of underlying price and volatility moves, rather than applying fixed rules per strategy.",
     "notes": [
      "Generally requires a substantial minimum account equity and approval from the broker.",
      "Produces materially lower requirements for genuinely hedged books and materially higher requirements for concentrated single-name risk.",
      "Requirements move with market volatility, so a position that was comfortably margined can become undermargined without any trade being placed."
     ]
    },
    {
     "id": "reg-t-versus-portfolio-margin",
     "term": "Regulation T versus portfolio margin",
     "definition": "Two different methodologies for computing a requirement. Regulation T and the associated FINRA maintenance rules apply fixed formulas per strategy. Portfolio margin computes a single requirement from a stress test of the whole position across a defined range of underlying price and volatility moves, and takes the worst outcome.",
     "fields": [
      {
       "label": "Reg T basis",
       "value": "Strategy-based. Each recognised structure has its own formula, applied leg by leg or pair by pair",
       "mono": true
      },
      {
       "label": "Portfolio margin basis",
       "value": "Risk-based. The requirement is the largest projected loss across a grid of price and volatility shocks",
       "mono": true
      },
      {
       "label": "Effect on hedged books",
       "value": "Portfolio margin generally lower, because offsetting legs are recognised",
       "mono": true
      },
      {
       "label": "Effect on concentrated books",
       "value": "Portfolio margin generally higher, because the shock grid is wider than any fixed percentage",
       "mono": true
      },
      {
       "label": "Practical constraint",
       "value": "Portfolio margin requires broker approval and a substantial minimum equity",
       "mono": true
      }
     ],
     "notes": [
      "Under Reg T a structure that is not one of the recognised patterns is margined as its individual legs, which can produce a requirement far above the actual maximum loss. Legging into a spread and having it recognised are different events.",
      "A portfolio margin requirement moves with market volatility, so a position can become undermargined with no trade placed and no change in its maximum loss.",
      "House requirements sit above both methodologies and are the number that actually binds. Neither the regulatory baseline nor a published table is a commitment by any broker."
     ],
     "source": "Reg T / 12 CFR 220; FINRA Rule 4210"
    },
    {
     "id": "bpr-defined-risk",
     "term": "Buying-power reduction for defined-risk structures",
     "definition": "For a recognised spread the requirement equals the maximum loss, so buying-power reduction and maximum loss are the same number. This makes the capital arithmetic for defined-risk structures fully determined at entry.",
     "formula": "BPR = MaxLoss * multiplier = (StrikeWidth - NetCredit) * multiplier for a credit spread; NetDebit * multiplier for a debit spread",
     "fields": [
      {
       "label": "Credit vertical",
       "value": "(K2 - K1 - C) * multiplier",
       "mono": true
      },
      {
       "label": "Debit vertical",
       "value": "D * multiplier",
       "mono": true
      },
      {
       "label": "Iron condor",
       "value": "(max(K2 - K1, K4 - K3) - C) * multiplier, one side only",
       "mono": true
      },
      {
       "label": "Iron butterfly",
       "value": "(W - C) * multiplier",
       "mono": true
      },
      {
       "label": "Butterfly or condor bought for a debit",
       "value": "D * multiplier",
       "mono": true
      },
      {
       "label": "Long option",
       "value": "Full premium, paid in cash",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "A 5.00-wide credit vertical collected for 1.60: BPR = (5.00 - 1.60) * 100 = 340.00. The 90/95/105/110 iron condor collected for 1.60 has the same 340.00 requirement while collecting two credits, because only one side can lose. Return on committed capital at maximum profit = 160.00 / 340.00 = 47.06 percent",
       "mono": true
      }
     ],
     "notes": [
      "Symmetric iron condors and single credit verticals of the same width consume identical capital. That is a property of the margin rule, not of the risk.",
      "Unequal wings mean the requirement is set by the wider wing. Widening one side of a condor to collect more credit raises the requirement by the full amount of the widening.",
      "A spread that is not recognised as a pair - mismatched expirations, mismatched quantities, or one leg in a different product - is margined leg by leg, and the naked-leg requirement can exceed the maximum loss several times over."
     ]
    },
    {
     "id": "bpr-undefined-risk",
     "term": "Buying-power reduction for uncovered options",
     "definition": "The Regulation T baseline requirement for a naked short option is the premium received plus the greater of two percentage floors, one measured against the underlying value less the out-of-the-money amount and one an absolute floor.",
     "formula": "Requirement = Premium + max(0.20*U - OTM, floor), where U is underlying value per share and OTM is the out-of-the-money amount",
     "fields": [
      {
       "label": "Naked call floor",
       "value": "0.10 * U",
       "mono": true
      },
      {
       "label": "Naked put floor",
       "value": "0.10 * K",
       "mono": true
      },
      {
       "label": "OTM amount (call)",
       "value": "max(K - U, 0)",
       "mono": true
      },
      {
       "label": "OTM amount (put)",
       "value": "max(U - K, 0)",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "U = 100. Naked put at K = 95 sold for 2.40: 0.20 * 100 = 20.00, less the 5.00 OTM amount = 15.00; floor 0.10 * 95 = 9.50; the greater is 15.00; requirement = 2.40 + 15.00 = 17.40 per share, 1,740.00 per contract. Naked call at K = 105 sold for 1.90: 20.00 - 5.00 = 15.00 against a floor of 10.00; requirement = 1.90 + 15.00 = 16.90 per share, 1,690.00 per contract",
       "mono": true
      }
     ],
     "notes": [
      "The requirement is a fraction of the maximum loss, not a bound on it. The naked put above requires 1,740.00 against a maximum loss of 9,260.00.",
      "The requirement rises as the option moves in the money, because the out-of-the-money deduction shrinks toward zero. A losing naked position demands more capital exactly when the account has less.",
      "The same short put secured with cash requires 9,500.00 rather than 1,740.00 for an identical payoff. The difference is leverage, and it is the entire difference between the two labels."
     ],
     "source": "Reg T / 12 CFR 220; FINRA Rule 4210"
    },
    {
     "id": "assignment-changes-requirement",
     "term": "How assignment changes the requirement",
     "definition": "Assignment replaces an option position with a stock position, and the stock margin rule replaces the option margin rule. The maximum loss does not change; the capital needed to hold the position does, usually upward and immediately.",
     "formula": "Post-assignment stock requirement = K * shares * initial or maintenance rate",
     "fields": [
      {
       "label": "Reg T initial on long stock",
       "value": "50 percent of market value",
       "mono": true
      },
      {
       "label": "Maintenance on long stock",
       "value": "25 percent of market value under the FINRA baseline",
       "mono": true
      },
      {
       "label": "Short stock maintenance",
       "value": "The greater of a percentage of market value or a per-share minimum, higher than for long stock",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "A cash-secured put at K = 95 is assigned: the account buys 100 shares for 9,500.00. Against that, the pre-assignment requirement as a naked put was 1,740.00 and as a cash-secured put was 9,500.00. Post-assignment the Reg T initial figure is 0.50 * 9,500.00 = 4,750.00 and the maintenance figure is 0.25 * 9,500.00 = 2,375.00",
       "mono": true
      }
     ],
     "notes": [
      "A naked short put margined at 1,740.00 becomes a stock position requiring 4,750.00 initial on assignment. The account can be in a deficit the morning after with no adverse price move.",
      "In a credit spread the long leg still caps the loss after the short leg is assigned, but the broker now margins a stock position, not a spread. The usual resolution is to exercise the long leg or close the stock, both of which realise the outcome early.",
      "This is a liquidity event, not a loss event. Distinguishing the two is the difference between a planned exit and a forced one."
     ],
     "source": "Reg T / 12 CFR 220; FINRA Rule 4210"
    },
    {
     "id": "capital-efficiency-arithmetic",
     "term": "Return on committed capital",
     "definition": "The comparable measure across structures, because premium collected is not comparable when the capital committed differs. Stated as maximum profit over the capital the position actually ties up.",
     "formula": "RoC at max profit = MaxProfit / BPR",
     "fields": [
      {
       "label": "Credit vertical",
       "value": "C / (W - C)",
       "mono": true
      },
      {
       "label": "Cash-secured put",
       "value": "P / K",
       "mono": true
      },
      {
       "label": "Naked put (Reg T)",
       "value": "P / (P + max(0.20*U - OTM, 0.10*K))",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "5.00-wide credit vertical at 1.60: 160.00 / 340.00 = 47.06 percent. Cash-secured put at K = 95 for 2.40: 240.00 / 9,500.00 = 2.53 percent. The same put margined naked: 240.00 / 1,740.00 = 13.79 percent. All three have a fixed maximum profit and the same arithmetic; they differ only in what is set aside",
       "mono": true
      }
     ],
     "notes": [
      "A higher return on committed capital is a statement about leverage, not about expected value. The three worked figures describe the same or similar payoffs under different capital treatments.",
      "Return on capital at maximum profit is not expected return. Multiplying it by the probability of the maximum outcome is the minimum correction, and even that ignores the partial outcomes in between."
     ]
    },
    {
     "id": "reg-t-formulas-by-structure",
     "term": "Regulation T requirement formulas, structure by structure",
     "definition": "Regulation T margin is strategy-based: each recognised structure has its own formula and the account's requirement is the sum over recognised structures. The formulas are arithmetic, not discretionary, and they are a floor rather than the binding number, because house requirements sit on top.",
     "formula": "Uncovered option: Requirement = Premium + max(0.20*U - OTM, floor), where floor = 0.10*U for a call and 0.10*K for a put, and OTM = max(K - U, 0) for a call and max(U - K, 0) for a put",
     "fields": [
      {
       "label": "Long option, 9 months or less",
       "value": "Pay the premium in full. No margin available",
       "mono": false
      },
      {
       "label": "Debit spread",
       "value": "Pay the net debit in full",
       "mono": false
      },
      {
       "label": "Credit spread",
       "value": "(Width minus credit) times the multiplier, which equals the maximum loss",
       "mono": true
      },
      {
       "label": "Iron condor",
       "value": "The wider wing less the credit, one side only, because only one side can lose",
       "mono": true
      },
      {
       "label": "Cash-secured put",
       "value": "Strike times the multiplier held in cash, which exceeds the maximum loss by the premium received",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Underlying at 100, premiums from Black-Scholes-Merton at the reference inputs. Naked 105 call at 2.3909: 0.20*100 = 20.00, less the 5.00 out-of-the-money amount = 15.00, against a floor of 0.10*100 = 10.00; the greater is 15.00, so the requirement is 2.3909 plus 15.00 = 17.3909 per share, 1,739.09 per contract. Naked 95 put at 1.6006: 20.00 minus 5.00 = 15.00 against a floor of 0.10*95 = 9.50; requirement 1.6006 plus 15.00 = 16.6006 per share, 1,660.06. Naked 100 put at 3.4902 with no out-of-the-money amount: 20.00 against a floor of 10.00, requirement 3.4902 plus 20.00 = 23.4902 per share, 2,349.02. A 95/100 credit put vertical collected for 1.8896 requires (5.00 minus 1.8896)*100 = 311.04, and the 100/105 credit call vertical collected for 2.0944 requires (5.00 minus 2.0944)*100 = 290.56",
       "mono": true
      }
     ],
     "notes": [
      "The out-of-the-money deduction shrinks as the option moves toward the money, so an uncovered requirement rises as the position loses. It is the only common requirement that is procyclical against the account.",
      "The 20 percent figure applies to individual equities. Broad-based index options carry a lower percentage and narrow-based indices sit between. Confirm the applicable figure before computing.",
      "The cash-secured put requirement exceeds the maximum loss, because the loss is K minus the premium and the requirement is K. That structure is over-collateralised by exactly the credit received."
     ],
     "source": "Reg T / 12 CFR 220; FINRA Rule 4210"
    },
    {
     "id": "reg-t-short-straddle-requirement",
     "term": "Regulation T on a short straddle",
     "definition": "A short straddle is not charged as two uncovered options. The recognised treatment charges the uncovered requirement on the greater side and adds only the premium of the other side, because both sides cannot finish in the money.",
     "formula": "Requirement = max(NakedCallReq, NakedPutReq) + min(CallPremium, PutPremium)",
     "fields": [
      {
       "label": "Why only one side",
       "value": "At expiration at most one of the two options has intrinsic value, so charging both uncovered requirements would double-count",
       "mono": false
      },
      {
       "label": "What the second side costs",
       "value": "Its premium only, which is the amount needed to buy it back at the current mark",
       "mono": false
      },
      {
       "label": "Short strangle",
       "value": "Same treatment with the two different strikes, so the greater side is whichever produces the larger uncovered figure",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Short 100 straddle at the reference inputs, underlying 100. Model premiums: call 4.4852, put 3.4902. Naked call requirement = 4.4852 plus max(20.00 minus 0.00, 10.00) = 24.4852 per share, 2,448.52 per contract. Naked put requirement = 3.4902 plus max(20.00 minus 0.00, 10.00) = 23.4902 per share, 2,349.02 per contract. The straddle requirement is the greater, 2,448.52, plus the smaller premium, 349.02, giving 2,797.55 per contract. Charging both uncovered requirements would give 4,797.55, so recognising the structure saves 2,000.00 - which is exactly the 0.20*U term on the smaller side",
       "mono": true
      }
     ],
     "notes": [
      "The saving is exactly the percentage-of-underlying term on the cheaper side, 2,000.00 in the worked case. It is not a proportional discount and it does not scale with the premiums.",
      "The requirement is recomputed daily as the underlying moves, so it rises on whichever side is going against the position. The number at entry is not the number that gets called.",
      "The structure has to be recognised by the broker's margin system as a straddle. Legging into it can leave the two options charged separately until the system pairs them, which is a real and avoidable liquidity event."
     ],
     "source": "Reg T / 12 CFR 220; FINRA Rule 4210"
    },
    {
     "id": "portfolio-margin-stress-grid",
     "term": "The portfolio margin stress-scenario grid",
     "definition": "Portfolio margin replaces the strategy formulas with a revaluation of the whole position across a grid of underlying price shocks, and takes the largest loss as the requirement. For individual equities the stated range under FINRA Rule 4210 is plus and minus 15 percent, evaluated at ten equidistant points.",
     "formula": "Requirement = maximum over the grid of [ V(S*(1 + shock)) - V(S) ] expressed as a loss, with V a full revaluation of every position",
     "fields": [
      {
       "label": "Range, individual equity",
       "value": "Plus and minus 15 percent under the stated rule",
       "mono": false
      },
      {
       "label": "Range, high-capitalisation broad-based index",
       "value": "A narrower range applies, segmented by size of move. Confirm the current figures in the rulebook",
       "mono": false
      },
      {
       "label": "Grid resolution",
       "value": "Ten equidistant points across the range, so eleven valuation points including the unshocked one",
       "mono": true
      },
      {
       "label": "What the grid does not shock",
       "value": "The equity grid shocks price. A separate volatility shock is not part of the stated equity methodology, which is a material difference from SPAN",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Ten short 100-strike straddles at the reference inputs. Entry credit 7,975.46, so the position value is minus 7,975.46. Revaluing across the grid: at minus 15 percent the value is minus 14,512.09, a loss of 6,536.63; at minus 3 percent, a loss of 3.63; at zero, no change; at plus 3 percent, a loss of 701.61; at plus 15 percent the value is minus 16,623.28, a loss of 8,647.82. The largest loss is 8,647.82 at plus 15 percent, so that is the requirement. The Regulation T requirement for the same position is 10*2,797.55 = 27,975.46, so portfolio margin is 30.91 percent of the strategy-based figure. Adding a simultaneous 10-volatility-point shock at each price point raises the worst loss to 10,689.87, 1.24 times the price-only grid, and still only 38.2 percent of the Regulation T figure",
       "mono": true
      }
     ],
     "notes": [
      "The grid is asymmetric in outcome even for a symmetric position, because a call loses more on the way up than a put loses on the way down for the same percentage move. The worst point on the worked straddle is the upside, not the downside.",
      "Because the requirement is the largest loss in the grid rather than a percentage of anything, it falls sharply for a hedged book and rises for a concentrated one. That is the design, not a side effect.",
      "The grid values the position at a stated volatility. A short-gamma position whose real risk is a volatility spike is charged for the price move and not for the volatility move, which is exactly the gap the extra shock above quantifies."
     ],
     "source": "FINRA Rule 4210"
    },
    {
     "id": "span-conceptually",
     "term": "SPAN, conceptually",
     "definition": "SPAN is the risk-based margin framework used for futures and futures options. It computes a scanning risk from a fixed set of joint price-and-volatility scenarios, then adds charges for calendar and inter-commodity structure and applies a floor for short option positions. It is a different construction from equity portfolio margin, not a variant of it.",
     "fields": [
      {
       "label": "Scanning risk",
       "value": "The largest loss across a fixed set of scenarios that move price and volatility jointly, including extreme-move scenarios taken at a fraction of their loss",
       "mono": false
      },
      {
       "label": "Volatility is shocked",
       "value": "Unlike the equity portfolio-margin grid, the scenario set includes volatility up and volatility down at each price shock",
       "mono": false
      },
      {
       "label": "Intra-commodity spread charge",
       "value": "An add-on for calendar structure, because offsetting positions in different months are not perfectly correlated",
       "mono": false
      },
      {
       "label": "Inter-commodity credit",
       "value": "A reduction for recognised offsets between related products",
       "mono": false
      },
      {
       "label": "Short option minimum",
       "value": "A floor per short option, so a far out-of-the-money short cannot carry a near-zero requirement",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Illustrating why the volatility dimension changes the answer, using the same ten short 100-strike straddles and the same plus and minus 15 percent price range. Price-only worst loss: 8,647.82. Repeating the grid with volatility raised from 0.20 to 0.30 at every price point: worst loss 10,689.87, a factor of 1.2361. The volatility dimension adds 2,042.05 to the requirement on this position, which is 23.6 percent - and the position is short volatility, which is exactly the exposure a price-only grid cannot see",
       "mono": true
      }
     ],
     "notes": [
      "The worked figures above are an illustration of the volatility-shock principle computed from this site's own reference inputs. They are not SPAN parameters, and SPAN's actual scenario weights, ranges and floors are set per product by the clearinghouse.",
      "Because SPAN shocks volatility, a short-option book is charged for the exposure that a price-only grid understates. That is the single most consequential structural difference between the two frameworks.",
      "The short option minimum exists because scanning risk on a deep out-of-the-money short can round to nearly nothing, while the position can still be assigned. It is a floor against the model, not a component of it."
     ],
     "source": "CME SPAN methodology"
    },
    {
     "id": "capital-efficiency-spread-vs-naked",
     "term": "The capital-efficiency ratio between a defined-risk spread and its naked equivalent",
     "definition": "A naked short option carries a higher return on committed capital than the spread built around it, and a far higher loss per dollar of capital committed. Both ratios are computable at entry from the same three numbers, and quoting either one alone is incomplete.",
     "formula": "RoC = MaxProfit/BPR;  Loss per dollar of capital = MaxLoss/BPR;  Capital-efficiency ratio = RoC_naked/RoC_spread",
     "fields": [
      {
       "label": "Credit vertical",
       "value": "BPR = (W - C)*multiplier, and MaxLoss equals BPR, so loss per dollar of capital is exactly 1.00",
       "mono": true
      },
      {
       "label": "Naked short put",
       "value": "BPR = (P + max(0.20*U - OTM, 0.10*K))*multiplier, and MaxLoss = (K - P)*multiplier, which is far larger",
       "mono": true
      },
      {
       "label": "Both ratios needed",
       "value": "RoC alone favours the naked position; loss per dollar of capital alone favours the spread. They are the same trade seen from two sides",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "Underlying at 100. A 90/95 bull put spread collected for 1.15: BPR = (5.00 minus 1.15)*100 = 385.00, maximum profit 115.00, RoC 29.87 percent, maximum loss 385.00, loss per dollar of capital 1.0000. The naked 95 put alone collected for 2.05: BPR = (2.05 plus 15.00)*100 = 1,705.00, maximum profit 205.00, RoC 12.02 percent, maximum loss 9,295.00, loss per dollar of capital 5.4516. So the spread has 2.48 times the return on capital and the naked has 24.14 times the maximum loss, on 4.43 times the capital. The naked position risks 5.45 dollars per dollar committed and the spread risks exactly 1.00",
       "mono": true
      }
     ],
     "notes": [
      "At these Regulation T figures the spread has the higher return on capital as well as the lower loss, because the 20-percent uncovered charge is large relative to the credit. That ordering is not universal and flips under portfolio margin, where the naked requirement can fall below the spread's.",
      "Loss per dollar of capital is the number the requirement itself is hiding. A defined-risk structure is the only case where it is exactly one, and that is the entire meaning of defined risk in capital terms.",
      "Comparing two structures on return on capital alone is comparing numerators while ignoring that the denominators are computed by different formulas from different quantities."
     ],
     "source": "Reg T / 12 CFR 220; FINRA Rule 4210"
    },
    {
     "id": "assignment-cascade-arithmetic",
     "term": "Assignment cascade arithmetic",
     "definition": "Assignment replaces an option requirement with a stock requirement, and the stock requirement is computed on the full notional. When the option requirement was a small percentage of the strike, the substitution creates an immediate deficiency, and the deficiency is computable before the assignment happens.",
     "formula": "Deficiency = InitialStockRequirement - (PreAssignmentRequirement + CreditReceived), with InitialStockRequirement = 0.50*K*shares under the Reg T baseline",
     "fields": [
      {
       "label": "Pre-assignment",
       "value": "An uncovered put requirement, a small multiple of the premium",
       "mono": false
      },
      {
       "label": "Post-assignment",
       "value": "A long stock position at the strike, requiring 50 percent initial and 25 percent maintenance under the FINRA baseline",
       "mono": true
      },
      {
       "label": "Cash movement",
       "value": "The full strike times shares leaves the account on assignment, regardless of the margin treatment",
       "mono": true
      },
      {
       "label": "Scaling",
       "value": "Linear in contracts, so a position sized to the option requirement is over-sized by the same factor for the stock requirement",
       "mono": false
      },
      {
       "label": "Worked",
       "value": "One short 95 put sold for 2.40 with the underlying at 100. Regulation T uncovered requirement = (2.40 plus max(20.00 minus 5.00, 9.50))*100 = 1,740.00. On assignment the account buys 100 shares at 95, a cash movement of 9,500.00. The Reg T initial requirement on that stock is 0.50*9,500.00 = 4,750.00 and maintenance is 0.25 of market value, which at S = 90 is 2,250.00. An account that held only the 1,740.00 requirement plus the 240.00 credit has 1,980.00 of equity against a 4,750.00 initial figure - a deficiency of 2,770.00, which is 11.5 times the credit collected. At ten contracts the numbers are 1,000 shares, 95,000.00 of cash and 47,500.00 of initial requirement against 19,800.00 of equity",
       "mono": true
      }
     ],
     "notes": [
      "The deficiency is 11.5 times the credit collected in the worked case. The position was never sized against the stock requirement, and the assignment does not ask.",
      "A cash-secured put has no cascade, because the cash was already set aside at the strike. The cascade is entirely a consequence of margining the put rather than securing it.",
      "The cascade is worst on the day of assignment and resolves as soon as the stock is sold, so its cost is a forced liquidation at whatever price exists that morning rather than a permanent requirement."
     ],
     "source": "Reg T / 12 CFR 220; FINRA Rule 4210"
    }
   ],
   "reviewed": "2026-08-27"
  },
  {
   "slug": "probability",
   "title": "Probability and expectancy",
   "lede": "Probability of touch, probability in the money, probability of profit, and the expectancy algebra that connects them.",
   "intro": "Three different probabilities are routinely quoted for the same position and they answer three different questions. All closed forms below are risk-neutral, meaning they are derived from the pricing model rather than estimated from history, and they are not forecasts. Expectancy figures take the probability as a stated input; the arithmetic cannot manufacture an edge that the probability input does not contain.",
   "tables": [
    {
     "title": "Three probabilities, three different questions",
     "columns": [
      "Measure",
      "Question it answers",
      "Closed form",
      "Worked at K = 105"
     ],
     "rows": [
      [
       "Probability in the money",
       "Will S be beyond K at expiration?",
       "N(d2) for a call; N(-d2) for a put",
       "0.330729"
      ],
      [
       "Probability of touch",
       "Will S reach K at any time before expiration?",
       "Approximately 2 * N(d2) for a driftless underlying, capped at 1",
       "0.661458"
      ],
      [
       "Probability of profit",
       "Will the position finish above its breakeven?",
       "N(d2) evaluated at the breakeven price rather than at the strike",
       "Depends on the structure; see the entries"
      ],
      [
       "Delta",
       "How much does value change per 1.00 move in S?",
       "exp(-q*T)*N(d1)",
       "0.367719"
      ]
     ]
    },
    {
     "title": "Risk-neutral probabilities at fixed inputs",
     "intro": "Reference inputs: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. N(d2) is the risk-neutral probability that S exceeds the level in the left column at expiration. These are model outputs from stated inputs, not forecasts.",
     "columns": [
      "Level",
      "d2",
      "P(S_T &gt; level) = N(d2)",
      "P(S_T &lt; level) = N(-d2)",
      "P(touch) approx"
     ],
     "rows": [
      [
       "93.40",
       "0.732788",
       "0.768156",
       "0.231844",
       "0.463687"
      ],
      [
       "93.85",
       "0.684724",
       "0.753241",
       "0.246759",
       "0.493518"
      ],
      [
       "95",
       "0.562933",
       "0.713260",
       "0.286740",
       "0.573481"
      ],
      [
       "100",
       "0.050000",
       "0.519939",
       "0.480061",
       "0.960122"
      ],
      [
       "105",
       "-0.437902",
       "0.330729",
       "0.669271",
       "0.661458"
      ],
      [
       "106.60",
       "-0.589133",
       "0.277886",
       "0.722114",
       "0.555772"
      ]
     ]
    },
    {
     "title": "Win rate required by payoff ratio",
     "intro": "The breakeven win rate for a two-outcome defined-risk position, computed as MaxLoss / (MaxProfit + MaxLoss), equivalently 1 / (1 + b) where b is the payoff ratio MaxProfit / MaxLoss. Arithmetic only; it says nothing about whether any win rate is achievable.",
     "columns": [
      "Max profit",
      "Max loss",
      "Payoff ratio b",
      "Breakeven win rate",
      "Win rate needed for EV = +0.10 per share"
     ],
     "rows": [
      [
       "1.00",
       "4.00",
       "0.25",
       "80.00 percent",
       "82.00 percent"
      ],
      [
       "1.60",
       "3.40",
       "0.470588",
       "68.00 percent",
       "70.00 percent"
      ],
      [
       "2.10",
       "2.90",
       "0.724138",
       "58.00 percent",
       "60.00 percent"
      ],
      [
       "2.50",
       "2.50",
       "1.000000",
       "50.00 percent",
       "52.00 percent"
      ],
      [
       "3.10",
       "1.90",
       "1.631579",
       "38.00 percent",
       "40.00 percent"
      ],
      [
       "3.80",
       "1.20",
       "3.166667",
       "24.00 percent",
       "26.00 percent"
      ]
     ]
    }
   ],
   "entries": [
    {
     "id": "probability-itm",
     "term": "Probability of finishing in the money",
     "definition": "The risk-neutral probability that the underlying is beyond the strike at expiration. It is N(d2), not N(d1), and therefore not delta.",
     "formula": "P(S_T > K) = N(d2);  P(S_T < K) = N(-d2)",
     "fields": [
      {
       "label": "Call ITM",
       "value": "N(d2)",
       "mono": true
      },
      {
       "label": "Put ITM",
       "value": "N(-d2)",
       "mono": true
      },
      {
       "label": "Relation to delta",
       "value": "Delta uses d1 = d2 + sigma*sqrt(T), so delta always exceeds N(d2) for a call",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. At K = 105: d2 = -0.437902, so N(d2) = 0.330729. Call delta at the same strike is 0.367719. The gap is 0.036990, so using delta as the probability overstates it by 3.7 percentage points at this strike",
       "mono": true
      }
     ],
     "notes": [
      "The gap between delta and N(d2) widens with sigma and with T, because it is driven by sigma*sqrt(T). On a long-dated or high-volatility contract the delta proxy is badly wrong.",
      "This is a risk-neutral probability. It is the probability under the measure that prices the option, which is not the probability under which the world evolves, and the two differ by the risk premium.",
      "A quoted \"probability ITM\" from a broker platform is normally N(d2) computed from that platform implied volatility. Changing the volatility input changes the number."
     ]
    },
    {
     "id": "probability-touch",
     "term": "Probability of touch",
     "definition": "The probability that the underlying reaches a level at any time before expiration, rather than merely finishing beyond it. For a driftless underlying it is approximately twice the probability of finishing beyond the level, by the reflection principle.",
     "formula": "P(touch K) approx 2 * P(S_T beyond K) = 2 * N(d2), capped at 1",
     "fields": [
      {
       "label": "Basis",
       "value": "Reflection principle for Brownian motion: every path finishing beyond the barrier has touched it, and paths that touch and return contribute the second half",
       "mono": true
      },
      {
       "label": "Cap",
       "value": "The approximation must be capped at 1; it breaks down for levels close to spot",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. At K = 105, N(d2) = 0.330729, so P(touch) is approximately 0.661458, twice the 0.330729 probability of finishing above. At K = 100 the formula gives 0.960122, which is near its cap and should be read as \"almost certainly\"",
       "mono": true
      }
     ],
     "notes": [
      "Probability of touch is roughly double probability in the money for out-of-the-money levels. Any position that can be closed or assigned before expiration is exposed to touch, not to terminal probability.",
      "The doubling is exact only with zero drift and a constant volatility. With a drift term the two halves of the reflection are no longer equal.",
      "For a short option that will be managed rather than held to expiry, touch is the operative probability and terminal probability is the irrelevant one."
     ]
    },
    {
     "id": "probability-of-profit",
     "term": "Probability of profit",
     "definition": "The probability that a position finishes on the profitable side of its breakeven, which is a different level from any strike in the structure. It is computed by evaluating the terminal distribution at the breakeven price, not at a strike.",
     "formula": "POP for a single breakeven B, profitable above = N(d2 evaluated at K = B)",
     "fields": [
      {
       "label": "Two-sided structures",
       "value": "POP = N(d2 at lower breakeven) - N(d2 at upper breakeven)",
       "mono": true
      },
      {
       "label": "Long premium structures",
       "value": "POP is the complement: the probability of finishing outside the breakevens",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. Bull put spread 90/95 collected for 1.15 has breakeven 93.85. POP = N(d2 at 93.85) = 0.753241. The 90/95/105/110 iron condor collected for 1.60 has breakevens 93.40 and 106.60, so POP = 0.768156 - 0.277886 = 0.490270",
       "mono": true
      }
     ],
     "notes": [
      "POP and probability of maximum profit are different numbers. The condor above has a 0.490270 probability of any profit and a smaller probability of the full 160.00.",
      "A high POP with a small maximum profit and a large maximum loss carries no information on its own. Pair it with the breakeven win rate from the payoff ratio before it means anything.",
      "The condor worked example has a risk-neutral POP of 0.490270 against a breakeven win rate of 0.68. Those two figures being inconsistent is a signal about the premiums used in the example, which are stated inputs rather than model prices, not a signal about the structure."
     ]
    },
    {
     "id": "expected-value-defined-risk",
     "term": "Expected value of a defined-risk position",
     "definition": "The probability-weighted average outcome. For a two-outcome simplification it reduces to one line; for the true continuum it is an integral over the terminal distribution.",
     "formula": "EV = p * MaxProfit - (1 - p) * MaxLoss",
     "fields": [
      {
       "label": "Two-outcome form",
       "value": "EV = p*MaxProfit - (1-p)*MaxLoss",
       "mono": true
      },
      {
       "label": "General form",
       "value": "EV = integral over S of Payoff(S) * f(S) dS, where f is the terminal density",
       "mono": true
      },
      {
       "label": "Breakeven probability",
       "value": "p* = MaxLoss / (MaxProfit + MaxLoss)",
       "mono": true
      },
      {
       "label": "Equivalent form",
       "value": "p* = 1 / (1 + b), where b = MaxProfit / MaxLoss",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "MaxProfit 1.60, MaxLoss 3.40. b = 0.470588. p* = 3.40 / 5.00 = 0.68 exactly, and 1 / 1.470588 = 0.68 confirms it. At p = 0.70: EV = 0.70 * 1.60 - 0.30 * 3.40 = 1.12 - 1.02 = +0.10 per share, 10.00 per contract. At p = 0.68: EV = 1.088 - 1.088 = 0.00. At p = 0.60: EV = 0.96 - 1.36 = -0.40",
       "mono": true
      }
     ],
     "notes": [
      "The two-outcome form ignores every partial outcome between the breakevens and the wings, and for a condor or butterfly those are a large share of the distribution. It is an upper-bound sketch, not the expectancy.",
      "Under the pricing model own measure a fairly priced position has an expected value of zero net of carry. Every positive EV produced by this arithmetic comes from the probability input, which is an assumption supplied from outside the model.",
      "EV per contract is EV per share times the multiplier. EV per unit of capital is EV divided by the buying-power reduction, and it is the only version comparable across structures."
     ]
    },
    {
     "id": "kelly-sizing",
     "term": "Kelly sizing applied to a defined-risk options position",
     "definition": "The fraction of capital that maximises the expected logarithm of wealth for a repeated bet with known probability and known payoff ratio. For a defined-risk position the payoff ratio is fixed at entry, so only the probability is an assumption.",
     "formula": "f* = (p*b - (1 - p)) / b, where b = MaxProfit / MaxLoss",
     "fields": [
      {
       "label": "Equivalent form",
       "value": "f* = p - (1 - p) / b",
       "mono": true
      },
      {
       "label": "Interpretation of f*",
       "value": "Fraction of capital placed at risk, meaning the fraction exposed to MaxLoss, not the notional",
       "mono": true
      },
      {
       "label": "Contracts implied",
       "value": "floor(f* * Capital / (MaxLoss * multiplier))",
       "mono": true
      },
      {
       "label": "Negative f*",
       "value": "Occurs whenever p is below the breakeven win rate, and indicates no size satisfies the criterion",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "MaxProfit 1.60, MaxLoss 3.40, so b = 0.470588. At p = 0.70: f* = (0.70 * 0.470588 - 0.30) / 0.470588 = 0.029412 / 0.470588 = 0.0625, i.e. 6.25 percent of capital at risk. On 50,000.00 of capital that is 3,125.00 at risk, which at 340.00 of maximum loss per contract is 9 contracts. At p = 0.68 the formula returns 0.0000 and at p = 0.60 it returns -0.250000",
       "mono": true
      }
     ],
     "notes": [
      "Kelly assumes the probability is known, the bet is repeatable, and outcomes are independent. Options positions on correlated underlyings violate the independence assumption, and the probability is never known.",
      "The criterion is extremely sensitive to the probability input near the breakeven win rate. In the worked case a two-point error in p moves f* from 6.25 percent to zero.",
      "A fractional Kelly - half of f*, for instance 3.125 percent in the worked case - reduces growth rate modestly and reduces drawdown substantially. That trade-off is arithmetic, not judgement."
     ],
     "source": "Kelly 1956"
    },
    {
     "id": "win-rate-payoff-algebra",
     "term": "Win rate versus payoff ratio",
     "definition": "The two figures are jointly constrained: for a fixed expected value, a change in the payoff ratio implies an exact change in the required win rate. Neither number is informative alone.",
     "formula": "p_required = (EV_target + MaxLoss) / (MaxProfit + MaxLoss)",
     "fields": [
      {
       "label": "For EV = 0",
       "value": "p* = MaxLoss / (MaxProfit + MaxLoss) = 1 / (1 + b)",
       "mono": true
      },
      {
       "label": "Sensitivity",
       "value": "dp*/db = -1 / (1 + b)^2",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "MaxProfit 1.60, MaxLoss 3.40, total 5.00. For EV = 0: p* = 3.40 / 5.00 = 0.6800. For EV = +0.10: p = (0.10 + 3.40) / 5.00 = 0.7000. For EV = +0.25: p = 3.65 / 5.00 = 0.7300. Sensitivity at b = 0.470588: dp*/db = -1 / 1.470588^2 = -0.4624, so a 0.10 increase in the payoff ratio lowers the required win rate by about 4.6 percentage points",
       "mono": true
      }
     ],
     "notes": [
      "A high win rate and a low payoff ratio can describe exactly the same expectancy as the reverse. Any comparison quoting one without the other is incomplete by construction.",
      "The sensitivity term is largest at small b, so structures with a small maximum profit relative to maximum loss are the ones whose required win rate moves most for a small change in the payoff ratio."
     ]
    },
    {
     "id": "expected-move-vs-breakeven",
     "term": "Expected move compared to breakeven distance",
     "definition": "The comparison that decides whether a structure needs more movement than the premium is charging for. Both sides are computable from stated inputs and neither requires a market view.",
     "formula": "One-standard-deviation move = S * sigma * sqrt(T);  Breakeven distance = |Breakeven - S|",
     "fields": [
      {
       "label": "One-sigma move",
       "value": "S * sigma * sqrt(T)",
       "mono": true
      },
      {
       "label": "Expected absolute move",
       "value": "S * sigma * sqrt(2*T/pi), approximately 0.7979 * the one-sigma figure",
       "mono": true
      },
      {
       "label": "Ratio to compare",
       "value": "Breakeven distance / one-sigma move, expressed in standard deviations",
       "mono": true
      },
      {
       "label": "Worked",
       "value": "Reference inputs: S = 100, r = 0.04, q = 0, sigma = 0.20, T = 0.25. One-sigma move = 100 * 0.20 * 0.5 = 10.0000. Expected absolute move = 100 * 0.20 * 0.398942 = 7.9788. A long 100 straddle for 6.00 has breakevens at 106.00 and 94.00, a distance of 6.00, which is 0.60 standard deviations. A long 95/105 strangle for 3.00 has breakevens at 108.00 and 92.00, a distance of 8.00, which is 0.80 standard deviations",
       "mono": true
      }
     ],
     "notes": [
      "Breakeven distance measured in standard deviations is the only form comparable across underlyings and tenors. Measured in points or in percent it is not.",
      "The expected absolute move is 0.7979 of the one-sigma move for a normal distribution, so a breakeven inside one standard deviation is not the same as a breakeven inside the expected move.",
      "These figures follow from the volatility input. Changing sigma changes both sides of the comparison, which is why the comparison is a statement about the input, not a prediction."
     ]
    }
   ],
   "reviewed": "2026-08-27"
  }
 ]
}