max pain opties berekenen uitleg
Max pain is de uitoefenprijs waarbij optiehouders het minste ontvangen bij expiratie. Bekijk de berekening op een echte SPY-keten en hoe dicht de afwikkeling lag.
Max pain is de uitoefenprijs waarbij de grootste dollarbedrag aan uitstaande opties waardeloos zou aflopen. Het hoort bij één onderliggende waarde en één vervaldatum, en komt voort uit een zoektocht over open interest: test elke genoteerde uitoefenprijs als een hypothetische afwikkelingsprijs, tel op wat elke uitstaande call en put aan de houder zou uitbetalen bij die prijs, en behoud de prijs waarbij het totaal het kleinst is. De naam beschrijft de kant van de optiehouders in het grootboek. Deze pagina doorloopt de rekenkunde op een echte SPY-keten en meet vervolgens hoe dicht de afwikkeling daadwerkelijk lag bij de standaard maandelijkse vervaldata van 2026.
Hoe wordt max pain berekend?
Max pain is een zoektocht, geen formule. Vijf stappen:
- Verzamel open interest, het aantal nog uitstaande contracten, bij elke uitoefenprijs op de vervaldatum, met calls en puts apart gehouden.
- Kies een kandidaat-afwikkelingsprijs. De genoteerde uitoefenprijzen zelf zijn de gebruikelijke kandidaatset.
- Waardeer elke call als de kandidaatprijs minus de uitoefenprijs, met een minimum van nul, en elke put als de uitoefenprijs minus de kandidaatprijs, met een minimum van nul.
- Vermenigvuldig elke waarde met de open interest van die uitoefenprijs en met de contractvermenigvuldiger van 100 aandelen, en tel de hele keten op tot één dollarbedrag.
- Herhaal dit voor elke kandidaat en behoud het kleinste totaal. Die kandidaat is de max pain-uitoefenprijs.
Een hypothetisch voorbeeld maakt de werking duidelijk. Stel dat er 1.000 calls openstaan bij een uitoefenprijs van $95 en de afwikkeling komt uit op $100. Elk contract betaalt de houder $5 per aandeel, dus het blok betaalt $500.000 over 1.000 contracten van 100 aandelen. Schuif de afwikkeling naar $95 en dat blok betaalt niets, terwijl elke put met een uitoefenprijs boven $95 begint uit te betalen. Het doorlopen van de kandidaatprijs omhoog en omlaag over de ladder tekent een curve met een bodem, en die bodem is het getal dat mensen noemen.
Twee eigenschappen volgen rechtstreeks uit de definitie. Het minimum ligt waar de callwaarde en putwaarde in dollartermen ongeveer in evenwicht zijn, wat het plaatst in de buurt van de uitoefenprijzen met de zwaarste open interest. En het getal beschrijft een keten op een moment: herbereken het na een volgende handelssessie en het antwoord verschuift.
Waar de contracten op de uitoefenprijsladder zitten
Open interest wordt eenmaal per sessie gepubliceerd uit clearingdata na de slotnotering. De panelen hier gebruiken het verhandelde contractvolume over de looptijd van één vervaldatum als een zichtbare vervanger voor dat bestand, en het object heeft dezelfde vorm: een stapel contracten binnen een paar dollar van de prijs van de onderliggende waarde. Elk contract op de SPY-keten dat afloopt op vrijdag 17 juli 2026, gegroepeerd per uitoefenprijs:
De exacte SQL achter elk getal
SELECT toString(strike_usd) AS strike,
round(sumIf(contracts, opt_type = 'C') / 1e3, 1) AS call_contracts_k,
round(sumIf(contracts, opt_type = 'P') / 1e3, 1) AS put_contracts_k
FROM (
SELECT intDiv(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)), 1000) AS strike_usd,
substring(ticker, length(ticker) - 8, 1) AS opt_type,
sum(toFloat64(volume)) AS contracts
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-06-18 08:00:00')
AND window_start < toDateTime('2026-07-18 04:00:00')
AND startsWith(ticker, 'O:SPY260717')
AND intDiv(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)), 1000) BETWEEN 736 AND 757
GROUP BY strike_usd, opt_type
)
GROUP BY strike_usd, strike
ORDER BY strike_usdDe ladder helt over naarmate hij het geld kruist. Bij de uitoefenprijs van $736 overtroffen puts calls met 113.2 duizend tegen 8 duizend. Bij $757 helt de helling de andere kant op, 131.7 duizend calls tegen 8.1 duizend puts. Puts stapelen zich onder de prijs van de onderliggende waarde en calls stapelen zich erboven, en de twee zijden kruisen elkaar ergens in het midden. Dat kruisingsgebied is waar een max pain-getal zal landen voordat er enige rekenkunde wordt uitgevoerd, wat het eerste is dat de moeite waard is om te weten over de statistiek. Verhandelde contracten en uitstaande contracten zijn verschillende tellingen, en options volume vs open interest scheidt de twee.
De uitbetalingscurve en de bodem ervan
Het doorlopen van stappen 3 tot en met 5 over kandidaat-afwikkelingsprijzen van $730 tot $765 tekent de vorm die de berekening zoekt:
De exacte SQL achter elk getal
WITH chain AS (
SELECT intDiv(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)), 1000) AS strike,
substring(ticker, length(ticker) - 8, 1) AS opt_type,
sum(toFloat64(volume)) AS contracts
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-06-18 08:00:00')
AND window_start < toDateTime('2026-07-18 04:00:00')
AND startsWith(ticker, 'O:SPY260717')
GROUP BY strike, opt_type
),
candidates AS (
SELECT DISTINCT strike AS settle FROM chain WHERE strike BETWEEN 730 AND 765
)
SELECT candidates.settle AS settle_price,
round(sum(multiIf(chain.opt_type = 'C' AND chain.strike < candidates.settle,
chain.contracts * (candidates.settle - chain.strike),
chain.opt_type = 'P' AND chain.strike > candidates.settle,
chain.contracts * (chain.strike - candidates.settle),
0)) * 100 / 1e6, 1) AS holder_payout_usd_mm
FROM candidates CROSS JOIN chain
GROUP BY settle_price
ORDER BY settle_priceEen afwikkeling van $730 zou houders 11149.2 miljoen dollar uitbetalen op deze keten, bijna allemaal aan puthouders. Een afwikkeling van $765 zou 11083.9 miljoen dollar uitbetalen, bijna allemaal aan callhouders. Tussen de uiteinden daalt de curve in een ondiep bekken. Het rangschikken van dezelfde totalen van klein naar groot noemt de uitoefenprijs:
De exacte SQL achter elk getal
WITH chain AS (
SELECT intDiv(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)), 1000) AS strike,
substring(ticker, length(ticker) - 8, 1) AS opt_type,
sum(toFloat64(volume)) AS contracts
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-06-18 08:00:00')
AND window_start < toDateTime('2026-07-18 04:00:00')
AND startsWith(ticker, 'O:SPY260717')
GROUP BY strike, opt_type
),
candidates AS (
SELECT DISTINCT strike AS settle FROM chain WHERE strike BETWEEN 730 AND 765
)
SELECT concat('$', toString(candidates.settle)) AS candidate_strike,
round(sum(multiIf(chain.opt_type = 'C' AND chain.strike < candidates.settle,
chain.contracts * (candidates.settle - chain.strike),
chain.opt_type = 'P' AND chain.strike > candidates.settle,
chain.contracts * (chain.strike - candidates.settle),
0)) * 100 / 1e6, 1) AS holder_payout_usd_mm
FROM candidates CROSS JOIN chain
GROUP BY candidate_strike
ORDER BY holder_payout_usd_mm ASC
LIMIT 6Het minimum ligt bij $746, op 1898.2 miljoen dollar. Kijk naar hoe vlak het bekken is, niet alleen naar waar het bodemt. De nummer twee, $747, komt uit op 1940.2 miljoen dollar, en de zesde kandidaat $749 op 2272.8 miljoen dollar. Zes kandidaatprijzen die een paar dollar beslaan op een instrument van meer dan $700 liggen dicht bij elkaar, dus een bescheiden herziening van de keten verplaatst de gepubliceerde uitoefenprijs terwijl er niets aan de markt is veranderd.
Wat de theorie beweert
De populaire versie zegt dat een onderliggende waarde naar zijn max pain-uitoefenprijs neigt richting vervaldatum, waarbij optieverkopers het daarheen duwen. Twee afzonderlijke beweringen zijn in die zin gestapeld. De eerste is statistisch: afwikkelingsprijzen clusteren in de buurt van de max pain-uitoefenprijs. De tweede is mechanisch: iemand is aan het duwen.
De tweede bewering is de zwakkere. Een max pain-getal aggregeert open interest zonder informatie over welke tegenpartij long en welke short is bij een uitoefenprijs, dus de verkopers in het verhaal zijn een aanname, geen observatie. Een partij die in staat is een breed-markt ETF naar een gekozen uitoefenprijs te bewegen, zou omvang nodig hebben die verder gaat dan de hedgingstromen die de hele keten genereert. Waar een echt hedgingmechanisme is beschreven, is het de gamma: een dealerboek met positief gamma past zijn hedge aan door te verkopen bij kracht en te kopen bij zwakte, een spelregel die beoefenaars demping of pinnen in de buurt van zwaar verhandelde uitoefenprijzen noemen. Onze gamma exposure explainer legt die schatting en de onderliggende aannames uit.
De eerste bewering houdt beter stand, met een grote kanttekening die in de volgende sectie wordt behandeld. Academisch werk over expiratie-pinning documenteert het effect het duidelijkst bij individuele aandelen waarvan de open interest in opties groot is in verhouding tot hun verhandelbare aandelen, en meet het in centen in plaats van dollars.
Hoe dicht ligt de uitoefenprijs daadwerkelijk?
Zes standaard maandelijkse vervaldata liepen op SPY tussen februari en juli 2026. Voor elke vervaldatum berekent het paneel de minimaliserende uitoefenprijs uit de contracten van die vervalweek, drukt de werkelijke slotkoers op de vervalsessie af, en plaatst er een naïeve controle naast: SPY's eigen slotkoers een week eerder, gemeten tegen dezelfde afwikkelingsprijs.
De exacte SQL achter elk getal
WITH expiries AS (
SELECT arrayJoin([toDate('2026-02-20'), toDate('2026-03-20'), toDate('2026-04-17'),
toDate('2026-05-15'), toDate('2026-06-18'), toDate('2026-07-17')]) AS expiry
),
chain AS (
SELECT toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) AS expiry,
intDiv(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)), 1000) AS strike,
substring(ticker, length(ticker) - 8, 1) AS opt_type,
sum(toFloat64(volume)) AS contracts
FROM global_markets.options_minute_aggs
WHERE ((window_start >= toDateTime('2026-02-16 08:00:00') AND window_start < toDateTime('2026-02-21 04:00:00'))
OR (window_start >= toDateTime('2026-03-16 08:00:00') AND window_start < toDateTime('2026-03-21 04:00:00'))
OR (window_start >= toDateTime('2026-04-13 08:00:00') AND window_start < toDateTime('2026-04-18 04:00:00'))
OR (window_start >= toDateTime('2026-05-11 08:00:00') AND window_start < toDateTime('2026-05-16 04:00:00'))
OR (window_start >= toDateTime('2026-06-15 08:00:00') AND window_start < toDateTime('2026-06-19 04:00:00'))
OR (window_start >= toDateTime('2026-07-13 08:00:00') AND window_start < toDateTime('2026-07-18 04:00:00')))
AND startsWith(ticker, 'O:SPY26')
AND toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) IN (SELECT expiry FROM expiries)
GROUP BY expiry, strike, opt_type
),
curve AS (
SELECT c1.expiry AS expiry,
c1.strike AS settle,
sum(multiIf(c2.opt_type = 'C' AND c2.strike < c1.strike, c2.contracts * (c1.strike - c2.strike),
c2.opt_type = 'P' AND c2.strike > c1.strike, c2.contracts * (c2.strike - c1.strike),
0)) AS payout
FROM chain AS c1 INNER JOIN chain AS c2 ON c1.expiry = c2.expiry
GROUP BY c1.expiry, c1.strike
),
pain AS (
SELECT expiry, argMin(settle, payout) AS pain_strike FROM curve GROUP BY expiry
),
px AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(close, window_start) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-02-05')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-17')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
),
prior AS (
SELECT expiries.expiry AS expiry, argMax(px.close_px, px.d) AS week_earlier_px
FROM expiries CROSS JOIN px
WHERE px.d <= expiries.expiry - 7
GROUP BY expiries.expiry
)
SELECT formatDateTime(pain.expiry, '%b %e') AS expiry_label,
pain.pain_strike AS min_payout_strike,
round(px.close_px, 2) AS settlement_close,
round(abs(px.close_px - pain.pain_strike) / px.close_px * 100, 2) AS max_pain_miss_pct,
round(abs(px.close_px - prior.week_earlier_px) / px.close_px * 100, 2) AS week_earlier_miss_pct
FROM pain
INNER JOIN px ON pain.expiry = px.d
INNER JOIN prior ON pain.expiry = prior.expiry
ORDER BY pain.expiryDe kloof tussen de minimaliserende uitoefenprijs en de slotkoers liep van 0.07% op de Jun 18-vervaldatum tot 0.53% op Mar 20, en bleef in elke maand onder zes tiende procent. Op zichzelf genomen lijkt dat een sterke trefkans. Twee kenmerken van de meting halen het omlaag.
De kandidaatladder is per constructie gecentreerd rond de prijs van de onderliggende waarde. Uitoefenprijzen worden genoteerd rond het geld, en de contracten die de som voeden concentreren zich daar ook, dus de rekenkunde begint binnen een smalle band rond spot en kan geen antwoord ver buiten die band teruggeven. Het tweede kenmerk is timing: de contracten die elke rij hier voeden, zijn verhandeld tot en met de vervalsessie, samen met de slotkoers waarmee wordt vergeleken. Een getal berekend uit hetzelfde venster waartegen het wordt gemeten, beschrijft dat venster, niet dat het het van tevoren voorspelt.
De laatste kolom is de controle die het lezen waard is. SPY's slotkoers een week voor Apr 17 miste de afwikkelingsprijs met 4.32%, tegen 0.42% voor de minimaliserende uitoefenprijs. In May 15 kwamen de twee binnen een fractie van elkaar, 0.21% tegen 0.12%. Een statistiek berekend op de vervaldag zou een week oude prijs ruim moeten verslaan. De eerlijke test, die dit paneel niet probeert, bevriest de keten een week van tevoren en vraagt of die uitoefenprijs de slotkoers beter voorspelt dan de prijs die dezelfde dag op het scherm staat.
Het lezen van een gepubliceerd max pain-getal
- Vraag welke contracten erin zijn gegaan. Uitgevers verschillen over wekelijkse versus maandelijkse series, en over indexketens versus ETF-ketens die dezelfde benchmark volgen.
- Vraag wanneer de open interest is opgehaald. Het clearingbestand wordt eenmaal per sessie bijgewerkt, dus een intraday-getal dat beweegt, herberekent op basis van iets anders.
- Vraag hoe de hele curve eruitziet, niet alleen waar de bodem zit. Een vlak bekken betekent dat de gepubliceerde uitoefenprijs een van meerdere bijna gelijke antwoorden is.
- Vergelijk met een naïef alternatief voordat u nabijheid als vaardigheid leest.
Vervalmechanismen bepalen welke contracten op een bepaalde dag nog in de som zitten, en when options expire behandelt die kalender. Voor een tweede positioneringsstatistiek gebouwd uit dezelfde keten, meet the put call ratio de call- en putmix direct.
Max pain FAQ
Wat betekent max pain in optiehandel?
Max pain is de uitoefenprijs waarbij de totale uitbetaling aan houders van uitstaande opties op één enkele vervaldatum het kleinst zou zijn. Het wordt berekend uit open interest door elke genoteerde uitoefenprijs te testen als een hypothetische afwikkelingsprijs en de goedkoopste te behouden. Het getal beschrijft de vorm van een optieketen en bevat geen voorspelling.
Sluiten aandelen altijd op de max pain-uitoefenprijs?
Nee. Op de zes hierboven gemeten SPY-maandelijkse vervaldata lag de minimaliserende uitoefenprijs op zijn breedst binnen 0.53% van de slotkoers, wat strak klinkt totdat het getal wordt vergeleken met een naïeve benchmark en met het feit dat de kandidaat-uitoefenprijzen al rond de prijs clusteren. Nabijheid op een ladder gecentreerd op spot is een zwakke test.
Hoe vaak verandert een max pain-getal?
Open interest wordt eenmaal per handelssessie gepubliceerd uit clearingdata na de slotnotering, dus de meeste gepubliceerde max pain-getallen bewegen hoogstens eenmaal per dag. Een dashboard waarvan het getal tijdens de sessie beweegt, herberekent op basis van verhandeld volume of van een intraday-ketensnapshot in plaats van afgewikkelde open interest.
Is max pain hetzelfde als gamma exposure?
Nee. Beide lezen dezelfde optieketen en beantwoorden verschillende vragen. Max pain noemt een prijs, waarbij alleen open interest wordt gebruikt zonder prijsmodel. Gamma exposure kwantificeert een hedgingstroom in dollars per één procent beweging, en heeft een implied volatility-oppervlak nodig plus een aanname over welke kant van elk contract dealers aanhouden.
Werkt max pain op individuele aandelen?
De rekenkunde werkt op elke genoteerde keten. De uitvoer wordt ruisachtig op dunne ketens waar een handvol uitoefenprijzen bijna alle open interest dragen, en het pinning-onderzoek dat enig deel van de theorie ondersteunt, concentreert zich op namen waarvan de open interest in opties groot is in verhouding tot de beschikbare aandelen om te verhandelen.
Elk paneel hierboven is een opgeslagen query met de SQL één klik verwijderd. Voer dezelfde uitoefenprijs-voor-uitoefenprijs-wandeling uit op elke keten op de Strasmore-terminal.