max pain options calcul SPY
Le max pain est le strike où les détenteurs d'options perdent le plus à l'échéance. Voyez le calcul sur une chaîne SPY réelle et la proximité du règlement effectif.
La douleur maximale (max pain) est le prix d'exercice auquel la plus grande valeur en dollars des options en circulation expirerait sans valeur. Elle appartient à un seul sous-jacent et à une seule date d'expiration, et résulte d'une recherche sur l'intérêt ouvert : tester chaque prix d'exercice coté comme prix de règlement hypothétique, additionner ce que chaque call et put en circulation paierait à son détenteur à ce prix, et retenir le prix où le total est le plus faible. Le nom décrit le côté du grand livre des détenteurs d'options. Cette page détaille le calcul sur une chaîne SPY réelle, puis mesure à quel point le règlement s'est réellement approché sur les échéances mensuelles standard de 2026.
Comment la douleur maximale est-elle calculée ?
La douleur maximale est une recherche plutôt qu'une formule. Cinq étapes :
- Collecter l'intérêt ouvert, le nombre de contrats encore en circulation, à chaque prix d'exercice pour l'échéance, en séparant les calls et les puts.
- Choisir un prix de règlement candidat. Les prix d'exercice cotés eux-mêmes constituent l'ensemble de candidats habituel.
- Valoriser chaque call au prix candidat moins son strike, plancher à zéro, et chaque put à son strike moins le prix candidat, plancher à zéro.
- Multiplier chaque valeur par l'intérêt ouvert de ce strike et par le multiplicateur de contrat de 100 actions, puis additionner l'ensemble de la chaîne en un seul chiffre en dollars.
- Répéter pour chaque candidat et conserver le total le plus faible. Ce candidat est le strike de douleur maximale.
Un exemple hypothétique fixe la mécanique. Disons que 1 000 calls sont ouverts à un strike de 95 $ et que le règlement se fixe à 100 $. Chaque contrat paie à son détenteur 5 $ par action, donc le bloc paie 500 000 $ sur 1 000 contrats de 100 actions. Faites glisser le règlement à 95 $ et ce bloc ne paie rien, tandis que chaque put dont le strike est supérieur à 95 $ commence à payer. En parcourant le prix candidat de haut en bas de l'échelle, on trace une courbe avec un creux, et ce creux est le nombre que les gens citent.
Deux propriétés découlent directement de la définition. Le minimum se situe là où la valeur des calls et la valeur des puts s'équilibrent à peu près en termes de dollars, ce qui le place près des strikes portant l'intérêt ouvert le plus lourd. Et le chiffre décrit une chaîne à un instant donné : recalculez-le après une autre séance de trading et la réponse change.
Où se situent les contrats sur l'échelle des strikes
L'intérêt ouvert est publié une fois par séance à partir des données de compensation après la clôture. Les panneaux ici utilisent le volume de contrats négociés sur la durée de vie d'une échéance comme substitut visible de ce fichier, et l'objet a la même forme : un tas de contrats empilés à quelques dollars du prix du sous-jacent. Chaque contrat sur la chaîne SPY expirant le vendredi 17 juillet 2026, regroupé par strike :
Le SQL exact derrière chaque chiffre
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_usdL'échelle s'incline lorsqu'elle traverse la monnaie. Au strike 736, les puts surpassaient les calls de 113.2 mille à 8 mille. À 757, l'inclinaison va dans l'autre sens, 131.7 mille calls contre 8.1 mille puts. Les puts s'empilent en dessous du prix du sous-jacent et les calls au-dessus, et les deux côtés se croisent quelque part au milieu. Cette zone de croisement est l'endroit où un chiffre de douleur maximale atterrira avant même tout calcul, ce qui est la première chose utile à savoir sur cette statistique. Les contrats négociés et les contrats en circulation sont des décomptes différents, et le volume d'options par rapport à l'intérêt ouvert sépare les deux.
La courbe de paiement et son creux
L'exécution des étapes 3 à 5 sur des prix de règlement candidats allant de 730 $ à 765 $ dessine la forme que la recherche calcule :
Le SQL exact derrière chaque chiffre
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_priceUn règlement à 730 $ paierait aux détenteurs 11149.2 millions de dollars sur cette chaîne, presque entièrement aux détenteurs de puts. Un règlement à 765 $ paierait 11083.9 millions de dollars, presque entièrement aux détenteurs de calls. Entre les extrémités, la courbe descend dans un bassin peu profond. Classer ces mêmes totaux du plus petit au plus grand nomme le strike :
Le SQL exact derrière chaque chiffre
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 6Le minimum se situe à $746, à 1898.2 millions de dollars. Regardez à quel point le bassin est plat plutôt que seulement où il atteint son creux. Le deuxième, $747, arrive à 1940.2 millions de dollars, et le sixième candidat classé $749 à 2272.8 millions de dollars. Six prix candidats couvrant quelques dollars sur un instrument à plus de 700 $ sont proches les uns des autres, donc une révision modeste de la chaîne déplace le strike publié alors que rien n'a changé sur le marché.
Ce que la théorie prétend
La version populaire dit qu'un sous-jacent gravite vers son strike de douleur maximale à l'approche de l'échéance, les vendeurs d'options le poussant dans cette direction. Deux affirmations distinctes sont empilées dans cette phrase. La première est statistique : les prix de règlement se regroupent près du strike de douleur maximale. La seconde est mécanique : quelqu'un pousse.
La seconde affirmation est la plus faible. Un chiffre de douleur maximale agrège l'intérêt ouvert sans aucune information sur la contrepartie qui est longue et celle qui est courte à chaque strike, donc les vendeurs dans l'histoire sont une hypothèse plutôt qu'une observation. Un participant capable de déplacer un ETF de marché large vers un strike choisi aurait besoin d'une taille dépassant les flux de couverture que l'ensemble de la chaîne génère. Lorsqu'un mécanisme de couverture réel a été décrit, c'est celui du gamma : un carnet de teneur de marché portant un gamma positif ajuste sa couverture en vendant dans la force et en achetant dans la faiblesse, un ensemble de règles que les praticiens appellent l'amortissement ou l'ancrage près des strikes lourdement négociés. Notre explication de l'exposition gamma détaille cette estimation et les hypothèses qui la sous-tendent.
La première affirmation tient mieux, avec une grande réserve couverte dans la section suivante. Les travaux académiques sur l'ancrage à l'échéance documentent l'effet le plus clairement sur les actions individuelles dont l'intérêt ouvert sur options est important par rapport à leurs actions négociables, et le mesurent en cents plutôt qu'en dollars.
À quel point le strike atterrit-il réellement ?
Six échéances mensuelles standard ont eu lieu sur SPY entre février et juillet 2026. Pour chacune, le panneau calcule le strike minimisant à partir des contrats de la semaine d'échéance, imprime le prix de clôture réel de la séance d'échéance, et place à côté un contrôle naïf : la propre clôture de SPY une semaine plus tôt, mesurée par rapport au même prix de règlement.
Le SQL exact derrière chaque chiffre
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.expiryL'écart entre le strike minimisant et la clôture allait de 0.07% sur l'échéance de Jun 18 à 0.53% sur celle de Mar 20, restant en dessous de six dixièmes de pour cent chaque mois. Pris isolément, cela ressemble à un taux de réussite élevé. Deux caractéristiques de la mesure le réduisent.
L'échelle des candidats est centrée sur le prix du sous-jacent par construction. Les strikes sont cotés autour de la monnaie, et les contrats alimentant la somme s'y concentrent également, donc le calcul commence à l'intérieur d'une bande étroite autour du spot et ne peut pas renvoyer une réponse loin en dehors. La deuxième caractéristique est le timing : les contrats alimentant chaque ligne ici ont été négociés jusqu'à et y compris la séance d'échéance, en même temps que la clôture à laquelle ils sont comparés. Un chiffre calculé à partir de la même fenêtre contre laquelle il est mesuré décrit cette fenêtre, il ne la prédit pas à l'avance.
La dernière colonne est le contrôle qui vaut la peine d'être lu. La clôture de SPY une semaine avant Apr 17 a manqué le prix de règlement de 4.32%, contre 0.42% pour le strike minimisant. En May 15, les deux sont arrivés à une fraction l'un de l'autre, 0.21% contre 0.12%. Une statistique calculée le jour de l'échéance devrait battre un prix vieux d'une semaine d'une large marge. Le test honnête, que ce panneau ne tente pas, fige la chaîne une semaine avant et demande si ce strike prédit la clôture mieux que le prix affiché à l'écran le même jour.
Lire un chiffre de douleur maximale publié
- Demandez quels contrats y sont entrés. Les éditeurs diffèrent sur les séries hebdomadaires par rapport aux séries mensuelles, et sur les chaînes d'indices par rapport aux chaînes d'ETF suivant le même indice de référence.
- Demandez quand l'intérêt ouvert a été extrait. Le fichier de compensation est mis à jour une fois par séance, donc un chiffre intrajournalier qui bouge est recalculé à partir d'autre chose.
- Demandez à quoi ressemble la courbe entière, pas seulement où se trouve le creux. Un bassin plat signifie que le strike publié est l'un des plusieurs réponses presque égales.
- Comparez avec une alternative naïve avant de lire la proximité comme une compétence.
Les mécanismes d'expiration décident quels contrats sont encore dans la somme un jour donné, et le moment de l'expiration des options couvre ce calendrier. Pour une deuxième statistique de positionnement construite à partir de la même chaîne, le ratio put call mesure le mélange de calls et de puts directement.
FAQ sur la douleur maximale
Que signifie la douleur maximale dans le trading d'options ?
La douleur maximale est le prix d'exercice auquel le paiement total aux détenteurs d'options en circulation sur une seule échéance serait le plus faible. Elle est calculée à partir de l'intérêt ouvert en testant chaque prix d'exercice coté comme prix de règlement hypothétique et en conservant le moins cher. Le nombre décrit la forme d'une chaîne d'options et ne contient aucune prévision.
Les actions clôturent-elles toujours au strike de douleur maximale ?
Non. Sur les six échéances mensuelles SPY mesurées ci-dessus, le strike minimisant se situait dans une fourchette de 0.53% de la clôture au maximum, ce qui semble serré jusqu'à ce que le chiffre soit comparé à un indice de référence naïf et au fait que les strikes candidats se regroupent déjà autour du prix. La proximité sur une échelle centrée sur le spot est un test faible.
À quelle fréquence un chiffre de douleur maximale change-t-il ?
L'intérêt ouvert est publié une fois par séance de trading à partir des données de compensation après la clôture, donc la plupart des chiffres de douleur maximale publiés bougent au maximum une fois par jour. Un tableau de bord dont le chiffre bouge pendant la séance recalcule à partir du volume négocié ou d'un instantané de chaîne intrajournalier au lieu de l'intérêt ouvert réglé.
La douleur maximale est-elle la même chose que l'exposition gamma ?
Non. Les deux lisent la même chaîne d'options et répondent à des questions différentes. La douleur maximale nomme un prix, en utilisant uniquement l'intérêt ouvert sans modèle de valorisation. L'exposition gamma dimensionne un flux de couverture en dollars par pour cent de mouvement, et elle nécessite une surface de volatilité implicite plus une hypothèse sur le côté de chaque contrat que les teneurs de marché détiennent.
La douleur maximale fonctionne-t-elle sur les actions individuelles ?
Le calcul s'exécute sur n'importe quelle chaîne cotée. Son résultat devient bruyant sur les chaînes peu liquides où une poignée de strikes portent la quasi-totalité de l'intérêt ouvert, et la recherche sur l'ancrage soutenant une partie de la théorie se concentre sur les noms dont l'intérêt ouvert sur options est important par rapport aux actions disponibles à la négociation.
Chaque panneau ci-dessus est une requête stockée avec son SQL à un clic. Exécutez la même analyse strike par strike sur n'importe quelle chaîne sur le terminal Strasmore.