Como ler um símbolo de opções no formato OSI
Aprenda a decodificar o root, vencimento, call ou put e strike de oito dígitos, além de raízes ajustadas, SPXW e 00007500 como US$ 7,50.
Um símbolo de opção é uma única sequência que contém quatro informações: o ativo subjacente, a data de vencimento, a indicação de call ou put e o preço de exercício. O formato é chamado de OSI, em referência à Options Symbology Initiative, adotada pelo setor de opções dos EUA em 2010. Todos os tickets de ordens e feeds de dados seguem esse padrão. Depois de aprender os quatro campos, você consegue decodificar qualquer símbolo de opção listada nos EUA à primeira vista.
Quais são os quatro campos de um símbolo de opção?
Um símbolo OSI canônico tem vinte e um caracteres, em uma ordem fixa:
- O ativo-base, com seis caracteres, alinhado à esquerda e preenchido à direita com espaços quando o root do ativo tem menos de seis caracteres.
- O vencimento, com seis algarismos, no formato AAMMDD. 260116 corresponde a 16 de janeiro de 2026.
- O direito, com um caractere: C para call e P para put.
- O strike, com oito algarismos, expresso em milésimos de dólar e sem ponto decimal.
A maioria das corretoras e sites remove o preenchimento e mostra o formato compacto. Alguns feeds colocam um marcador, como O:, antes da sequência. Nenhuma dessas alterações muda a leitura. Os últimos quinze caracteres são sempre a data, o direito e o strike. Portanto, o root é tudo o que aparece antes deles. O painel abaixo separa contratos reais com base nessa regra e coloca os campos identificados ao lado do vencimento registrado no próprio contrato.
O SQL exato por trás de cada número
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 ASCA primeira linha corresponde a um root de SPY, a um campo de data de 260116, a um direito de C e a um campo de strike de 00500000, que resulta em um preço de exercício de $500. O registro de vencimento do próprio contrato é Jan 16, 2026, em linha com os seis algarismos da sequência. O painel contém 8 contratos: os mesmos strikes listados como calls e como puts. Um caractere separa uma call da put correspondente. Por isso, esse é o caractere que deve ser conferido duas vezes no ticket de ordens. Se esses campos parecem familiares na tela da sua corretora, a leitura de uma cadeia de opções explica as colunas que aparecem ao redor deles.
Como ler um símbolo de opção na linha de comando
A leitura não exige bibliotecas nem acesso à rede. Os campos têm largura fixa e são medidos a partir da direita. No bash, basta usar uma expansão de substring. Cole isto no terminal:
SYM=SPY260116C00650000
echo "root ${SYM:0:$(( ${#SYM} - 15 ))}"
echo "expiry ${SYM: -15:6}"
echo "right ${SYM: -9:1}"
echo "strike ${SYM: -8}"
O espaço antes de cada deslocamento negativo é obrigatório. Sem ele, o bash interpreta :- como uma expansão de valor padrão e exibe o resultado errado.
Para uma lista de símbolos, o awk faz o mesmo cálculo usando posições baseadas em um:
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
Uma versão em python3 lida com o formato preenchido de vinte e um caracteres e com o prefixo do feed na mesma função, usando apenas a biblioteca padrão:
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"]))
Os dois trechos funcionam em uma imagem padrão do Ubuntu, sem nada instalado além de awk e python3. Nenhum deles acessa a rede. Por isso, a saída será a mesma hoje e daqui a cinco anos.
Por que um strike de 00007500 significa $7,50?
O campo do strike tem oito algarismos, sem ponto decimal, e sua unidade é um milésimo de dólar. Divida por 1.000 para obter o valor em dólares. 00007500 corresponde a 7.500 milésimos, ou $7,50. 07500000 corresponde a 7.500.000 milésimos, ou $7.500. Os dois valores diferem por três zeros inseridos em uma sequência de zeros. Essa é a leitura equivocada mais comum de todo o formato. A largura fixa mantém todos os símbolos com o mesmo comprimento. A unidade em milésimos também permite representar strikes que resultam em frações de centavo após uma ação corporativa.
Um único campo precisa abranger todos os strikes listados, desde uma ação de baixo preço até um índice na casa dos quatro algarismos. O painel abaixo lê o menor e o maior strike de vários ativos subjacentes e mostra os oito algarismos exatamente como aparecem no símbolo.
O SQL exato por trás de cada número
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 ASCNas sessões analisadas, KO lista strikes de $32.5 a $125, escritos como 00032500 e 00125000 dentro do símbolo. No extremo superior do painel, SPY chega a $1480, ou 01480000, distribuídos por 462 strikes distintos. São os mesmos oito algarismos e o mesmo divisor, independentemente do nível de preço.
Opções ajustadas: o que significa um número no fim do root
Uma opção padrão de ações entrega cem ações. Ações corporativas podem alterar esse padrão: um desdobramento com uma proporção não inteira, uma fusão parcialmente paga em dinheiro, um spin-off ou um dividendo extraordinário em dinheiro acima do limite definido. A OCC ajusta os contratos em aberto e atribui a eles um novo root, formado pelo root antigo com um algarismo acrescentado. O root ABC se torna ABC1 no primeiro ajuste e ABC2 no segundo. O formato não muda, portanto o seu parser continua funcionando. O ativo entregue pelo contrato muda, mas o símbolo não informa isso.
Um algarismo no final também identifica mini contracts, marcados com 7. Eles representam dez ações, em vez de cem. Em ambos os casos, o número indica que os termos do contrato precisam ser consultados antes de comparar o strike com qualquer outro. Nossa nota sobre como os desdobramentos afetam as opções explica os cálculos da proporção aplicados ao strike e ao ativo entregue.
É raro que novas datas de vencimento sejam acrescentadas a séries ajustadas. Um root como ABC1 perde liquidez à medida que suas datas listadas vencem, em vez de receber novos vencimentos. Ele pode desaparecer completamente da cadeia quando o último contrato expira. Os termos ficam no comunicado de ajuste da OCC referente ao contrato, não na sequência do símbolo. O comunicado informa o novo ativo entregue, o componente em dinheiro, se houver, e o multiplicador aplicável. Até que esse comunicado seja consultado, um strike ajustado e um strike padrão do mesmo ativo subjacente são coisas diferentes que usam os mesmos oito algarismos.
SPX, SPXW e o significado do W
As opções de índice têm seus próprios roots. O complexo do S&P 500 é o primeiro que a maioria dos investidores conhece. SPX e SPXW fazem referência ao mesmo índice e usam o mesmo formato de vinte e um caracteres. O W já não indica uma listagem semanal, apesar do que o nome sugere. SPX é o root com liquidação AM: o contrato da terceira sexta-feira cujo valor de liquidação é calculado com base nos preços de abertura dos componentes do índice naquela sexta-feira de vencimento. A negociação termina na quinta-feira anterior. SPXW é o root com liquidação PM. Ele abrange as demais datas do calendário, desde vencimentos diários de segunda a sexta-feira até contratos de fim de mês. Cada contrato negocia até o fechamento do próprio dia de vencimento.
O calendário segue a mesma divisão. Um contrato com liquidação AM na terceira sexta-feira de cada ciclo mensal usa o root SPX. Todas as demais datas futuras do índice pertencem ao SPXW. Em uma cadeia completa, isso representa a maior parte dos vencimentos exibidos. A sequência não informa nada disso sozinha. O root é apenas uma indicação, e a especificação do contrato é a autoridade. Dois roots, um índice, uma tela e mecanismos de liquidação que as opções com liquidação AM e PM detalham.
O que um símbolo de opção nunca informa
Os quatro campos identificam completamente um contrato, mas dizem muito pouco sobre suas características. Em particular:
- O multiplicador. Uma opção padrão sobre ações nos EUA representa cem ações, e nenhum campo da sequência informa isso. Séries ajustadas e mini series são diferentes, e os produtos de índice definem seus próprios multiplicadores.
- O tipo de liquidação. O símbolo não indica liquidação AM ou PM, nem liquidação em dinheiro ou entrega física. Nos roots de índices, a convenção dá uma indicação, mas somente a especificação do contrato é definitiva.
- O ativo entregue. Depois de um ajuste, a suposição de cem ações deixa de valer. O símbolo permanece exatamente igual, exceto pelo algarismo.
- O tempo restante. O campo de data informa o vencimento, não uma contagem regressiva. Transformá-lo em dias até o vencimento exige um cálculo próprio com base no calendário.
- A liquidez. Dois símbolos com a mesma estrutura podem apresentar diferenças de várias ordens de magnitude em volume e open interest.
Perguntas frequentes
Quantos caracteres tem um símbolo de opção?
Vinte e um no formato OSI canônico: seis para o root, seis para a data, um para a indicação de call ou put e oito para o strike. Roots com menos de seis caracteres são preenchidos com espaços. A maioria das telas remove esse preenchimento. Por isso, um root de três letras normalmente aparece como uma sequência de dezoito caracteres.
O que significa o número depois do root em um símbolo de opção?
Ele identifica um contrato cujos termos deixaram de ser padrão. Um algarismo acrescentado pela OCC identifica uma série ajustada após uma ação corporativa. O número 7 identifica um mini contract com dez ações, em vez de cem. Os campos de data e strike continuam sendo lidos da mesma forma.
Por que o strike tem oito algarismos?
O campo contém o strike em milésimos de dólar, como um número inteiro de largura fixa. Isso cobre valores de um décimo de centavo até $99.999,999 sem precisar de ponto decimal. Divida os oito algarismos por 1.000 para obter o valor em dólares: 00007500 corresponde a $7,50.
SPXW é igual a SPX?
Os dois fazem referência ao mesmo índice e usam o mesmo formato de símbolo. A liquidação é diferente. Os contratos SPX são liquidados por um valor calculado com base nos preços de abertura de sexta-feira e deixam de negociar no dia anterior. Os contratos SPXW negociam até o fechamento do dia de vencimento e são liquidados pelo nível de fechamento do índice.
Um símbolo de opção mostra se a opção é semanal ou mensal?
Para ações dos EUA, não. Uma opção semanal e uma mensal do mesmo ativo usam o mesmo root e diferem apenas nos seis algarismos da data. A convenção da terceira sexta-feira é o que faz uma data parecer mensal. Os complexos de índices usam roots separados.
Cada painel desta página traz, sob um expansor, o SQL exato que o produziu. Assim, você pode ver como cada campo foi extraído da sequência. Para decompor um símbolo que esteja consultando agora, solicite isso em linguagem simples no terminal da Strasmore.