Cos'è il put-call ratio e come si calcola
Analisi del put-call ratio tramite il volume di put e call scambiati. Scopri i dati storici su index e equity per un decennio di opzioni USA.
Il put-call ratio è il rapporto tra il volume delle put e il volume delle call della giornata: indica quanti contratti bearish sono stati scambiati per ogni contratto bullish. Un valore superiore a 1.0 indica che sono state scambiate più put rispetto alle call; un valore ben al di sotto di 1.0 indica la dominanza delle call. La maggior parte delle analisi si limita alla definizione e a una regola empirica. Questa pagina calcola il dato reale — per ogni contratto option quotato negli USA, giorno per giorno — e lo suddivide secondo i criteri professionali: index rispetto a equity, per ogni scadenza, e confrontandolo con un decennio di dati storici.
Come si calcola il put-call ratio?
Si prende ogni operazione sulle opzioni in una sessione, si somma il volume dei contratti put, si somma quello dei call e si divide. Un put aumenta di valore quando il sottostante scende; un call aumenta quando il sottostante sale — quindi il ratio indica l'orientamento delle posizioni tra ribassiste e rialziste.
Il calcolo è volutamente semplice. Supponiamo che un titolo scambi 40.000 contratti put e 60.000 contratti call in una sessione: 40.000 ÷ 60.000 = 0,67, due put per ogni tre call. Mantenendo i call a 60.000 e portando i put a 90.000, il ratio diventa 1,5. Questa è l'intera formula; la difficoltà risiede nell'interpretazione, non nella divisione.
Due dettagli sono contenuti nel termine "volume":
- Volume, non open interest. Il ratio standard conta i contratti scambiati durante la giornata. Una variante utilizza l open interest — i contratti in essere — che varia molto più lentamente. Verificate quale dei due stia mostrando il grafico.
- Ogni operazione ha due lati. Un put acquistato per aprire una posizione, un put venduto per chiudere un hedge e un put scritto per generare reddito registrano tutti lo stesso volume. Il ratio misura l'attività, non l'intento.
Qual è l'andamento del put-call ratio di mercato?
Calcolato giornalmente su ogni opzione su azioni US, ETF e indici quotati, dal primo giugno all'ultima sessione completa del nostro database:
L'esatto SQL dietro ogni numero
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
concat(monthName(day), ' ', toString(toDayOfMonth(day))) AS day_label,
round(sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'P')
/ sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'C'), 3) AS put_call_ratio,
round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-06-01 04:00:00'
AND window_start < '2026-07-11 04:00:00'
GROUP BY day
ORDER BY dayLa serie ha aperto il periodo al 0.589 del June 1, si è chiusa al 0.686 del July 10 e non ha mai incrociato il valore 1.0 nell'intervallo — le call hanno registrato volumi superiori alle put in tutte le 28 sessioni. Questo è il primo insegnamento pratico: 1.0 non è il punto medio neutrale ipotizzato da un principiante. L'informazione risiede nel movimento del ratio all'interno del proprio range. Ecco il range per il mese di giugno completato:
L'esatto SQL dietro ogni numero
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'P')
/ sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'C') AS ratio
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-06-01 04:00:00'
AND window_start < '2026-07-01 04:00:00'
GROUP BY day
)
SELECT round(quantileDeterministic(0.5)(ratio, cityHash64(toString(day))), 3) AS june_median,
round(max(ratio), 3) AS june_high,
concat(monthName(argMax(day, ratio)), ' ', toString(toDayOfMonth(argMax(day, ratio)))) AS june_high_day,
round(min(ratio), 3) AS june_low,
concat(monthName(argMin(day, ratio)), ' ', toString(toDayOfMonth(argMin(day, ratio)))) AS june_low_day
FROM dailyLa mediana di giugno si è attestata a 0.793, all'interno di una banda che va da 0.589 (il June 1) fino a 0.923 (il June 25). La sessione che tutti ricordano del mese è stata il selloff del 5 giugno, documentato nel riepilogo di giugno 2026. Sono stati scambiati 103.1 milioni di contratti nelle opzioni, la sessione più intensa del periodo, e il ratio è salito a 0.866 rispetto allo 0.679 del giorno precedente. Il selloff e la sessione con volumi record e prevalenza di put sono stati la stessa sessione: il ratio ha registrato l'impennata del posizionamento al ribasso mentre accadeva.
Due note pratiche. Il livello oscilla in base al mix di prodotti scambiati in quella settimana, quindi piccoli movimenti giornalieri all'interno della banda hanno poco significato da soli. Inoltre, il volume totale è un contesto essenziale: lo stesso ratio con il doppio dei contratti è un segnale molto più forte, motivo per cui il pannello riporta il numero di contratti insieme al ratio.
CBOE, ISEE e gli altri benchmark put-call
Se il broker o un grafico di news finanziarie riporta "il" put-call ratio, sta quasi certamente citando una delle molte serie pubblicate — e queste misurano popolazioni differenti:
- $CPC — il put/call ratio totale del CBOE: ogni option scambiata sulle borse CBOE, rapporto tra puts e calls.
- $CPCE — il ratio relativo solo alle equity: option su singoli titoli. Le option su ETF con regolamento fisico come SPY rientrano nella categoria equity, nonostante i trader le utilizzino come prodotti indicizzati.
- $CPCI — il ratio relativo solo agli index: option su indici con regolamento in contanti (SPX, NDX, RUT, VIX e simili).
- ISEE — l'ISE Sentiment Index, calcolato in modo inverso: calls divise per puts, moltiplicate per cento, basato solo sugli acquisti long dei clienti all'apertura. Un valore ISEE elevato indica una prevalenza di call; un valore $CPC elevato indica una prevalenza di puts. Leggerne uno come se fosse l'altro inverte il segnale.
La linea equity/index del CBOE colloca le option su ETF come SPY nella categoria equity. Il pannello sottostante definisce il confine diversamente, separando gli ETF broad-market dai singoli titoli: i due gruppi non sono affatto comparabili. Ogni contratto per giugno 2026, suddiviso in tre popolazioni:
L'esatto SQL dietro ogni numero
WITH substring(ticker, 3, length(ticker) - 17) AS root
SELECT multiIf(root IN ('SPX', 'SPXW', 'XSP', 'NDX', 'NDXP', 'RUT', 'RUTW', 'VIX', 'VIXW', 'DJX', 'OEX', 'XEO'), 'Index options (SPX, VIX, NDX)',
root IN ('SPY', 'QQQ', 'IWM', 'DIA'), 'Broad-market ETFs (SPY, QQQ, IWM, DIA)',
'Single stocks and other ETFs') AS population,
round(sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'P')
/ sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'C'), 3) AS put_call_ratio,
round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
round(100 * sum(toFloat64(volume)) / sum(sum(toFloat64(volume))) OVER (), 1) AS pct_of_volume
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-06-01 04:00:00'
AND window_start < '2026-07-01 04:00:00'
GROUP BY population
ORDER BY put_call_ratio DESCEntrambe le popolazioni legate agli index mostravano una prevalenza di puts — gli ETF broad-market al 1.175 e le option su indici con regolamento in contanti al 1.096, entrambi sopra 1.0 — mentre i singoli titoli e tutto il resto registravano 0.588, poco più di una put per ogni due call. Il meccanismo è strutturale: i prodotti indicizzati sono i veicoli standard per il hedging di portafoglio, e il hedging si effettua con le puts; i singoli titoli attirano l'acquisto speculativo di call. Anche la quota di volume è rilevante — i singoli titoli e altri ETF hanno registrato il 59.9% dei contratti di giugno, quindi un ratio "totale" è principalmente un ratio equity con un'impostazione da index.
Il rapporto dipende dall'asset analizzato
Analizziamo un livello più nel dettaglio. Utilizzando lo stesso parametro per giugno 2026 su cinque dei titoli più attivi:
L'esatto SQL dietro ogni numero
SELECT multiIf(ticker LIKE 'O:SPY2%', 'SPY',
ticker LIKE 'O:QQQ2%', 'QQQ',
ticker LIKE 'O:NVDA2%', 'NVDA',
ticker LIKE 'O:TSLA2%', 'TSLA',
'AAPL') AS underlying,
round(sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'P')
/ sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'C'), 2) AS put_call_ratio,
round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-06-01 04:00:00'
AND window_start < '2026-07-01 04:00:00'
AND (ticker LIKE 'O:SPY2%' OR ticker LIKE 'O:QQQ2%' OR ticker LIKE 'O:NVDA2%'
OR ticker LIKE 'O:TSLA2%' OR ticker LIKE 'O:AAPL2%')
GROUP BY underlying
ORDER BY put_call_ratio DESCSPY ha registrato il rapporto con più put tra i cinque al 1.16; NVDA si è attestato a solo 0.56. Confrontare il rapporto di un ticker con quello di un altro è quasi privo di significato; il confronto utile consiste nel confrontare un ticker con la propria serie storica.
Il put-call ratio cambia con la scadenza?
Il volume giornaliero non è un blocco omogeneo: alcuni contratti scadono tra poche ore, altri tra anni. Dividere il volume di giugno in base ai giorni alla scadenza — vedi cosa significa DTE — permette di distinguere gli hedge dai biglietti della lotteria:
L'esatto SQL dietro ogni numero
WITH toDate(toTimeZone(window_start, 'America/New_York')) AS trade_day,
toDate(concat('20', substring(ticker, length(ticker) - 14, 2), '-',
substring(ticker, length(ticker) - 12, 2), '-',
substring(ticker, length(ticker) - 10, 2))) AS expiry,
dateDiff('day', trade_day, expiry) AS dte
SELECT multiIf(dte <= 0, '0DTE (expires today)', dte <= 7, '1-7 days', dte <= 30, '8-30 days',
dte <= 90, '31-90 days', '91+ days') AS expiry_bucket,
round(sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'P')
/ sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'C'), 3) AS put_call_ratio,
round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
round(100 * sum(toFloat64(volume)) / sum(sum(toFloat64(volume))) OVER (), 1) AS pct_of_volume
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-06-01 04:00:00'
AND window_start < '2026-07-01 04:00:00'
GROUP BY expiry_bucket
ORDER BY min(dte)Il ratio diminuisce progressivamente man mano che ci si allontana nel calendario. I contratti con scadenza in giornata — opzioni 0DTE — hanno registrato 0.957, il bucket con la maggiore concentrazione di put tra i cinque, e da soli hanno rappresentato 34.3% del volume totale di giugno. Con una scadenza da uno a sette giorni, il ratio scende a 0.756; tra 8 e 30 giorni è pari a 0.717; tra 31 e 90 giorni è 0.634; e nel bucket dai 91 giorni in poi, la parte finale della curva dei LEAPS, tocca il minimo a 0.564 — l'area del mercato con la maggiore concentrazione di call.
Questa tabella smentisce silenziosamente l'interpretazione comune. Un ratio riferito all'intero mercato è una media di diverse scadenze la cui composizione cambia di settimana in settimana: una scadenza di venerdì intensa sposta il peso verso la parte breve della curva e modifica il dato principale, senza che cambi il livello di ansia degli operatori. È necessario confrontare dati omogenei.
Quanto è estremo un valore, storicamente?
Sei settimane non sono sufficienti per determinare se un valore sia raro. Per farlo servono anni; ecco quindi la famiglia di opzioni più longeva e scambiata sul mercato, SPY, con la mediana, il minimo e il massimo del suo put-call ratio giornaliero per ogni anno intero presente nel nostro database di opzioni:
L'esatto SQL dietro ogni numero
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'P')
/ sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'C') AS ratio
FROM global_markets.options_minute_aggs
WHERE ticker LIKE 'O:SPY%'
GROUP BY day
HAVING sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'C') > 0
)
SELECT toYear(day) AS year,
count() AS sessions,
round(quantileDeterministic(0.5)(ratio, cityHash64(toString(day))), 3) AS median_ratio,
round(min(ratio), 3) AS low,
round(max(ratio), 3) AS high
FROM daily
WHERE toYear(day) >= 2015
GROUP BY year
ORDER BY yearNe derivano tre conclusioni. In primo luogo, la mediana del rapporto giornaliero di SPY è finita sopra 1.0 in ogni anno riportato: la propensione verso i put per l'hedging degli indici non è un fenomeno passeggero del 2026, ma lo stato naturale del prodotto. In secondo luogo, il livello è diminuito nel corso del decennio: la mediana era 1.754 in 2015 e 1.168 in 2025, parallelamente alla crescita del trading di call a breve scadenza. Terzo, i range annuali sono ampi: 2026 finora copre da 0.848 a 1.751 su 130 sessioni. Questa è la risposta onesta alla domanda "il valore di oggi è estremo?": va giudicato rispetto alla distribuzione del proprio prodotto, mai rispetto a 1.0.
Come monitorare il put-call ratio per un singolo titolo
I pannelli sopra riportati sono modelli configurabili, non report fissi. Per calcolare il ratio per un titolo in portafoglio:
- Selezionare la popolazione. Utilizzare le opzioni di un singolo ticker, non "il mercato" — la combinazione di diversi asset rende i dati medi non leggibili.
- Sommare il volume giornaliero delle put e delle call per ogni strike e scadenza di quel ticker, quindi dividere. Nel simbolo dell'opzione, la nona lettera partendo dalla fine è
PoC— quel singolo carattere definisce l'intera classificazione. - Costruire lo storico prima di valutare il livello. Un valore di 0.9 in un singolo giorno non significa nulla finché non si conosce la mediana e il range specifici di quel ticker — come avviene nel pannello SPY anno per anno.
- Analizzare il volume insieme al ratio. Un picco con volumi ordinari è rumore; lo stesso picco sulla sessione più attiva degli ultimi sei settimane è la sessione del 5 giugno riportata sopra.
- Fissare l'ambito delle scadenze. Tutte le scadenze, o solo quelle a breve termine? Entrambe le opzioni sono valide; mescolarle tra diversi giorni non lo è.
Come lo interpretano i trader — e i limiti reali
Da considerarsi come interpretazioni, non leggi assolute: un rapporto in crescita indica una maggiore domanda di hedge; un picco estremo viene invece interpretato dai contrarian come capitulazione — la massa ha finalmente acquistato la propria assicurazione. La sessione del 5 giugno mostra chiaramente il meccanismo: il rapporto è aumentato durante il selloff, non prima. In questo intervallo temporale si è comportato come un termometro coincidente, non come un indicatore predittivo. Verificate ogni regola empirica confrontandola con la serie storica reale — e ricordate che il volume 0DTE continua a modificare la definizione di "normale".
FAQ
Qual è un put-call ratio normale?
Dipende interamente dal campione analizzato. Per tutte le opzioni quotate negli Stati Uniti a giugno 2026, la mediana giornaliera dell'intero mercato era 0.793, con un intervallo tra 0.589 e 0.923 — mai superiore a 1.0. Le opzioni sugli ETF del mercato ampio hanno registrato 1.175 nello stesso mese, mentre i singoli titoli e altri ETF hanno registrato 0.588. Il valore "normale" per SPY non è normale per un singolo titolo.
Un put-call ratio elevato è bullish o bearish?
Entrambe le interpretazioni sono valide e nessuna delle due è una regola fissa. Preso letteralmente, un volume elevato di put indica posizioni ribassiste; i contrarian leggono i picchi estremi come un segnale che la massa dei venditori è già completamente posizionata. Nei dati di giugno 2026, il picco si è verificato proprio durante il giorno del selloff — si è trattato di una coincidenza, non di un segnale predittivo.
Il put-call ratio è uguale al VIX o alla volatilità implicita?
No, ed è l'errore più comune. Il put-call ratio è calcolato sul volume — ovvero su quanti contratti sono stati scambiati. Il VIX e la volatilità implicita derivano dai prezzi delle opzioni: dal costo di quei contratti, espresso come volatilità annualizzata. L'implied-volatility skew confronta il prezzo delle put ribassiste con quello delle call rialziste. Un volume elevato di put può scambiare a prezzi calmi, mentre un volume ridotto può scambiare a prezzi di panico — i due indicatori possono divergere e entrambi possono essere corretti.
Cosa sono $CPC, $CPCE e $CPCI?
Sono i put-call ratio pubblicati dal CBOE: $CPC per il volume totale, $CPCE per le opzioni equity (dove SPY e altri ETF sono contati come equity) e $CPCI per le opzioni su indici con regolamento in contanti. La distinzione è importante. La nostra versione a tre livelli, che separa gli ETF del mercato ampio sia dalle opzioni su indici che dai singoli titoli invece di seguire la divisione a due livelli del CBOE, ha misurato a giugno 2026 un valore di 1.175 per gli ETF del mercato ampio e 1.096 per le opzioni su indici, entrambi superiori a 1.0, contro 0.588 per i singoli titoli e altri ETF. L'ISEE di ISE è un indice separato e invertito: rapporto tra call e put, riferito solo agli acquisti degli utenti in apertura.
Il put-call ratio utilizza il volume o l'open interest?
Il rapporto standard utilizza il volume scambiato durante la giornata. Esiste una variante basata sull'open interest che si muove molto più lentamente; i due indicatori possono puntare in direzioni diverse nella stessa giornata — volume vs open interest spiega la distinzione.
Ogni valore riportato deriva da una query salvata sull'intero tape delle opzioni — è possibile espandere la SQL di qualsiasi pannello o calcolare il ratio per la propria watchlist sulla terminale Strasmore.