Come leggere un simbolo di opzione in formato OSI
Scopri come decodificare root, scadenza, call o put e strike a otto cifre, con adjusted root, SPXW e il significato di 00007500 ($7,50).
Un simbolo di opzione è un’unica stringa che contiene quattro informazioni: il root del sottostante, la data di scadenza, l’indicazione call o put e lo strike price. Il formato si chiama OSI, dall’Options Symbology Initiative adottata dal mercato statunitense delle opzioni nel 2010. Ogni order ticket e ogni data feed si basano su questo formato. Una volta appresi i quattro campi, è possibile decodificare a colpo d’occhio qualsiasi simbolo di opzione quotata negli Stati Uniti.
Quali sono i quattro campi di un simbolo di opzione?
Un simbolo OSI canonico contiene 21 caratteri, in un ordine fisso:
- Il root, composto da sei caratteri, allineato a sinistra e completato a destra con spazi quando il root del sottostante è più corto di sei caratteri.
- La scadenza, composta da sei cifre nel formato YYMMDD. 260116 corrisponde al 16 gennaio 2026.
- Il diritto, un carattere: C per una call, P per una put.
- Lo strike, composto da otto cifre, espresso in millesimi di dollaro e senza separatore decimale.
La maggior parte dei broker e dei siti web elimina gli spazi di completamento e mostra il formato compatto. Alcuni feed inseriscono davanti alla stringa un indicatore come O:. Questo non modifica l’interpretazione. Gli ultimi 15 caratteri sono sempre la data, il diritto e lo strike. Il root è quindi tutto ciò che precede questi caratteri. Il pannello qui sotto scompone contratti reali secondo questa regola e affianca i campi così ottenuti alla scadenza riportata dal record del contratto.
| contratto | root | campo di scadenza | codice del diritto | campo dello strike | strike in dollari | scadenza quotata |
|---|---|---|---|---|---|---|
| SPY260116C00500000 | SPY | 260116 | C | 00500000 | 500 | Jan 16, 2026 |
| SPY260116P00500000 | SPY | 260116 | P | 00500000 | 500 | Jan 16, 2026 |
| SPY260116C00600000 | SPY | 260116 | C | 00600000 | 600 | Jan 16, 2026 |
| SPY260116P00600000 | SPY | 260116 | P | 00600000 | 600 | Jan 16, 2026 |
| SPY260116C00650000 | SPY | 260116 | C | 00650000 | 650 | Jan 16, 2026 |
| SPY260116P00650000 | SPY | 260116 | P | 00650000 | 650 | Jan 16, 2026 |
| SPY260116C00700000 | SPY | 260116 | C | 00700000 | 700 | Jan 16, 2026 |
| SPY260116P00700000 | SPY | 260116 | P | 00700000 | 700 | Jan 16, 2026 |
L'esatto SQL dietro ogni numero
SELECT
contract,
substring(contract, 1, length(contract) - 15) AS root,
substring(contract, length(contract) - 14, 6) AS expiry_field,
substring(contract, length(contract) - 8, 1) AS right_code,
substring(contract, length(contract) - 7, 8) AS strike_field,
toFloat64(substring(contract, length(contract) - 7, 8)) / 1000 AS strike_dollars,
listed_expiration
FROM
(
SELECT
replaceRegexpOne(ticker, '^O:', '') AS contract,
formatDateTime(any(expiration_date), '%b %e, %Y') AS listed_expiration
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND expiration_date = '2026-01-16'
AND toFloat64(strike_price) IN (500, 600, 650, 700)
AND date >= '2025-12-01'
AND date < '2026-01-01'
GROUP BY contract
)
ORDER BY strike_dollars ASC, right_code ASCLa prima riga corrisponde a un root pari a SPY, a un campo data pari a 260116, a un diritto pari a C e a un campo strike pari a 00500000, che diviso per il relativo fattore corrisponde a uno strike di $500. Il record di scadenza del contratto riporta Jan 16, 2026, in linea con le sei cifre contenute nella stringa. Il pannello contiene 8 contratti: gli stessi strike quotati sia come call sia come put. Un solo carattere distingue una call dalla put corrispondente. Per questo è il carattere da verificare due volte nell’order ticket. Se questi campi ti sono familiari perché li vedi sulla schermata del broker, leggere una option chain illustra le colonne che li affiancano.
Come leggere un simbolo di opzione dalla command line
L’interpretazione non richiede librerie né accesso alla rete. I campi hanno una larghezza fissa e si misurano partendo da destra. In bash è quindi sufficiente un’espansione di sottostringa. Incolla questo comando in un terminale:
SYM=SPY260116C00650000
echo "root ${SYM:0:$(( ${#SYM} - 15 ))}"
echo "expiry ${SYM: -15:6}"
echo "right ${SYM: -9:1}"
echo "strike ${SYM: -8}"
Lo spazio davanti a ciascun offset negativo è necessario. Senza di esso, bash interpreta :- come un’espansione con valore predefinito e restituisce un risultato errato.
Per un elenco di simboli, awk esegue lo stesso calcolo usando posizioni che partono da uno:
awk '{
n = length($0)
root = substr($0, 1, n - 15)
expiry = substr($0, n - 14, 6)
right = substr($0, n - 8, 1)
strike = substr($0, n - 7, 8)
printf "%-6s 20%s-%s-%s %-4s $%.3f\n",
root,
substr(expiry, 1, 2), substr(expiry, 3, 2), substr(expiry, 5, 2),
(right == "C" ? "call" : "put"),
strike / 1000
}' <<'EOF'
SPY260116C00650000
SPY260116P00650000
SPXW260116C05500000
XYZ1260116C00007500
EOF
Una versione in python3 gestisce nello stesso modo il formato padded a 21 caratteri e il prefisso del feed, usando soltanto la standard library:
from datetime import datetime
def parse_osi(symbol):
s = symbol.strip()
if s.startswith("O:"):
s = s[2:]
s = s.replace(" ", "")
return {
"root": s[:-15],
"expiry": datetime.strptime(s[-15:-9], "%y%m%d").date(),
"right": "call" if s[-9] == "C" else "put",
"strike": int(s[-8:]) / 1000,
}
samples = [
"SPY 260116C00650000",
"O:SPY260116P00650000",
"SPXW 260116C05500000",
"XYZ1 260116C00007500",
]
for sym in samples:
f = parse_osi(sym)
print("{:<6} {} {:<4} ${:,.3f}".format(f["root"], f["expiry"], f["right"], f["strike"]))
Entrambi gli snippet funzionano su un’immagine Ubuntu standard senza altri componenti installati oltre ad awk e python3. Nessuno dei due accede alla rete. L’output è quindi identico oggi e tra cinque anni.
Perché uno strike pari a 00007500 significa $7.50?
Il campo dello strike contiene otto cifre senza separatore decimale. L’unità è un millesimo di dollaro. Per ottenere il valore in dollari, si divide per 1.000. 00007500 equivale a 7.500 millesimi, cioè $7.50. 07500000 equivale a 7.500.000 millesimi, cioè $7,500. I due valori differiscono per tre zeri inseriti in una sequenza di zeri. È questo l’errore di lettura più comune dell’intero formato. La larghezza fissa mantiene tutti i simboli della stessa lunghezza. L’unità in millesimi consente inoltre di rappresentare strike che, dopo un’azione societaria, ricadono su frazioni di centesimo.
Un solo campo deve coprire ogni strike quotato, da un’azione a basso prezzo fino a un livello di indice a quattro cifre. Il pannello qui sotto legge lo strike minimo e massimo per diversi sottostanti e mostra le otto cifre esattamente come compaiono nel simbolo.
| sottostante | strike minimo | campo dello strike minimo | strike massimo | campo dello strike massimo | numero di strike |
|---|---|---|---|---|---|
| KO | 32.5 | 00032500 | 135 | 00135000 | 57 |
| NVDA | 2.5 | 00002500 | 460 | 00460000 | 225 |
| AAPL | 5 | 00005000 | 670 | 00670000 | 119 |
| SPY | 50 | 00050000 | 1480 | 01480000 | 457 |
L'esatto SQL dietro ogni numero
SELECT
underlying,
round(toFloat64(min(strike)), 2) AS lowest_strike,
argMin(strike_field, strike) AS lowest_strike_field,
round(toFloat64(max(strike)), 2) AS highest_strike,
argMax(strike_field, strike) AS highest_strike_field,
uniqExact(strike) AS strike_count
FROM
(
SELECT
underlying_symbol AS underlying,
strike_price AS strike,
substring(replaceRegexpOne(ticker, '^O:', ''),
length(replaceRegexpOne(ticker, '^O:', '')) - 7, 8) AS strike_field
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('KO', 'NVDA', 'AAPL', 'SPY', 'SPX')
AND date >= today() - 7
)
GROUP BY underlying
ORDER BY highest_strike ASCNelle sedute considerate, KO quota strike da $32.5 a $135, rappresentati nel simbolo come 00032500 e 00135000. All’estremo superiore del pannello, SPY arriva a $1480, pari a 01480000, distribuiti su 457 strike distinti. Le otto cifre e il divisore restano gli stessi, indipendentemente dal livello del prezzo.
Opzioni adjusted: cosa significa un numero alla fine del root
Un’opzione azionaria standard dà diritto a ricevere 100 azioni. Le azioni societarie possono modificare questo rapporto: uno split con un rapporto non intero, una fusione pagata in parte in contanti, uno spinoff o un dividendo straordinario in contanti oltre la soglia prevista. L’OCC rettifica i contratti aperti e assegna loro un nuovo root, ottenuto aggiungendo una cifra al root precedente. Il root ABC diventa ABC1 alla prima rettifica e ABC2 alla seconda. Il formato non cambia, quindi il parser continua a funzionare. Cambia invece il deliverable del contratto, e il simbolo non lo indica.
Una cifra alla fine del root identifica anche i mini contract, contrassegnati dal 7, che coprono 10 azioni anziché 100. In entrambi i casi, il numero segnala che è necessario leggere i termini del contratto prima di confrontare lo strike con qualsiasi altro valore. La nostra nota su come gli stock split influenzano le opzioni illustra i calcoli del rapporto sia per lo strike sia per il deliverable.
Le serie adjusted raramente vengono estese con nuove scadenze. Un root come ABC1 si riduce man mano che le date quotate giungono a scadenza, anziché ricevere nuove scadenze. Può scomparire completamente dalla chain una volta scaduta l’ultima. I termini del contratto sono indicati nel memo di rettifica dell’OCC relativo a quel contratto, non nella stringa. Il memo specifica il deliverable modificato, l’eventuale componente in contanti e il multiplier applicabile. Finché il memo non viene consultato, uno strike adjusted e uno strike standard sullo stesso sottostante sono due elementi diversi che riportano le stesse otto cifre.
SPX, SPXW e il significato della W
Le opzioni su indici hanno root propri. Il complesso S&P 500 è quello che la maggior parte degli operatori incontra per primo. SPX e SPXW fanno riferimento allo stesso indice e condividono lo stesso formato a 21 caratteri. La W non indica più una quotazione weekly, nonostante quanto suggerisca il nome. SPX è il root con regolamento AM: il contratto del terzo venerdì, il cui valore di settlement è calcolato sui primi prezzi di apertura dei componenti dell’indice nella giornata di scadenza. Le contrattazioni terminano il giovedì precedente. SPXW è il root con regolamento PM e comprende tutte le altre date del calendario: dalle scadenze daily dal lunedì al venerdì fino ai contratti di fine mese. Ogni contratto resta negoziabile fino alla chiusura della propria giornata di scadenza.
Anche il calendario segue la stessa distinzione. Ogni ciclo mensile include un contratto con regolamento AM sul terzo venerdì, associato al root SPX. Tutte le altre date future dell’indice appartengono a SPXW. In una chain completa, rappresentano la maggior parte delle scadenze visualizzate. La stringa non mostra direttamente queste informazioni: il root è un’indicazione, mentre la specifica del contratto è la fonte autorevole. Due root, un unico indice, una sola schermata e meccanismi di settlement che le opzioni con regolamento AM e PM analizza in dettaglio.
Cosa non indica mai un simbolo di opzione
I quattro campi identificano completamente un contratto, ma ne descrivono solo in minima parte le caratteristiche. In particolare:
- Il multiplier. Un’opzione azionaria statunitense standard copre 100 azioni, ma nessun campo della stringa lo indica. Le serie adjusted e le mini series sono diverse, mentre i prodotti su indici stabiliscono i propri parametri.
- Il tipo di settlement. Il simbolo non indica se il regolamento è AM o PM, né se avviene per cassa o con consegna fisica. Nei root degli indici la convenzione può fornire un’indicazione, ma solo la specifica del contratto è autorevole.
- Il deliverable. Dopo una rettifica, l’ipotesi di 100 azioni non è più valida. Il simbolo appare identico, salvo la cifra aggiunta al root.
- Il tempo residuo. Il campo data indica una scadenza, non un countdown. Il calcolo dei giorni alla scadenza richiede di confrontare autonomamente la data con il calendario.
- La liquidità. Due simboli con struttura identica possono presentare differenze di diversi ordini di grandezza in termini di volume e open interest.
FAQ
Quanti caratteri contiene un simbolo di opzione?
Ventuno nella forma OSI canonica: sei per il root, sei per la data, uno per l’indicazione call o put e otto per lo strike. I root più corti di sei caratteri vengono completati con spazi. La maggior parte delle schermate elimina questi spazi, quindi un root di tre lettere viene normalmente visualizzato come una stringa di 18 caratteri.
Cosa significa il numero dopo il root in un simbolo di opzione?
Indica un contratto i cui termini non sono più standard. Una cifra aggiunta dall’OCC identifica una serie adjusted dopo un’azione societaria. Il 7 identifica invece un mini contract che copre 10 azioni anziché 100. I campi della data e dello strike si interpretano comunque nello stesso modo.
Perché lo strike contiene otto cifre?
Il campo contiene lo strike in millesimi di dollaro come intero a larghezza fissa. Questo consente di rappresentare valori da un decimo di centesimo fino a $99,999.999 senza usare un separatore decimale. Per leggere il valore in dollari, si dividono le otto cifre per 1.000: 00007500 equivale a $7.50.
SPXW è uguale a SPX?
Entrambi fanno riferimento allo stesso indice e usano lo stesso formato del simbolo. Il settlement è diverso. I contratti SPX regolano su un valore calcolato sui primi prezzi di apertura del venerdì mattina e smettono di essere negoziati il giorno precedente. I contratti SPXW restano negoziabili fino alla chiusura della propria giornata di scadenza e regolano sul livello di chiusura dell’indice.
Un simbolo di opzione indica se l’opzione è weekly o monthly?
Per le azioni statunitensi, no. Una weekly e una monthly sullo stesso sottostante condividono lo stesso root e differiscono solo nelle sei cifre della data. È la convenzione del terzo venerdì a far apparire una data come monthly. I complessi su indici utilizzano invece root distinti.
Ogni pannello di questa pagina contiene, sotto un expander, l’SQL esatto che lo ha prodotto. È quindi possibile vedere come ciascun campo viene estratto dalla stringa. Per scomporre un simbolo che stai visualizzando in questo momento, chiedilo in linguaggio naturale sul terminale Strasmore.