Até agora a brapi entregava preço, volume, gregas e volatilidade implícita de opções, mas não dizia quantos contratos continuavam abertos. Esse número existe agora, em dois endpoints novos para opções sobre ações e dois para opções sobre futuros.
Open interest muda o tipo de pergunta que dá para responder. Preço diz quanto custa. Volume diz quanto girou hoje. Open interest diz quanta posição o mercado carrega naquela série.
Qual endpoint usar
| Pergunta | Endpoint |
|---|---|
| Quanta posição existe em cada série do vencimento? | /api/v2/options/positions |
| Como a posição de uma série mudou no tempo? | /api/v2/options/positions/history |
| E para opções sobre futuros? | /api/v2/futures/options/positions |
| E o histórico de uma série sobre futuro? | /api/v2/futures/options/positions/history |
O campo openInterest também passou a acompanhar cada série em chain e em
analytics. Se você já consome esses endpoints, o número aparece sem trocar
nada na chamada.
A documentação de posições em aberto tem os schemas e parâmetros atuais.
A foto de um vencimento
O endpoint aceita os mesmos filtros da cadeia: side, minStrike e
maxStrike.
curl "https://brapi.dev/api/v2/options/positions?underlying=PETR4&expirationDate=2026-09-18"Cada item traz a série (symbol, side, strike) e a posição:
{
"symbol": "PETRI696",
"side": "call",
"strike": 6.96,
"openInterest": 18300,
"openInterestChange": 0,
"openInterestDate": "2026-08-24",
"coveredQuantity": 0,
"blockedQuantity": 1200,
"uncoveredQuantity": 17100,
"totalPositionQuantity": 18300
}Os três campos de quebra valem a leitura. coveredQuantity é posição coberta,
com o vendedor segurando a ação. uncoveredQuantity é posição descoberta, o
lançador a seco. blockedQuantity é posição bloqueada em garantia.
Nesse exemplo, 17.100 dos 18.300 contratos estão descobertos. Quem vendeu essas calls não tem PETR4 em carteira para entregar.
A apuração sai uma vez por pregão. Quando ainda não há apuração para a data
pedida, a resposta traz a apuração anterior. Leia openInterestDate antes de
cruzar a posição com o preço do dia.
O histórico de uma série
Para acompanhar uma série específica, passe symbol e expirationDate.
curl "https://brapi.dev/api/v2/options/positions/history?symbol=PETRI696&expirationDate=2026-09-18"Pregão sem apuração não aparece na série. Buraco na sequência significa dia sem publicação, não posição zerada.
Em Python, o resumo cabe em poucas linhas:
import requests
url = "https://brapi.dev/api/v2/options/positions/history"
params = {"symbol": "PETRI696", "expirationDate": "2026-09-18", "sortOrder": "asc"}
resposta = requests.get(url, params=params, timeout=30).json()
for dia in resposta["option"]["positions"]:
print(dia["reportDate"], dia["openInterest"], dia["openInterestChange"])openInterestChange já vem calculado. Você não precisa fazer a diferença entre
dias na mão.
Opções sobre futuros
Boi gordo, café, milho e soja usam as rotas de futuros:
curl "https://brapi.dev/api/v2/futures/options/positions?underlying=BGI&expirationDate=2026-10-30"A resposta tem a mesma forma, com uma diferença honesta: a quebra entre coberta,
descoberta e bloqueada chega null na maior parte dos segmentos de futuros.
Nesses casos você tem openInterest e openInterestChange, e nada mais. A
quebra completa existe principalmente nas opções sobre ações.
Onde isso muda uma análise
Três usos aparecem rápido.
O primeiro é filtrar liquidez de verdade. Volume do dia é ruidoso: uma série pode registrar um negócio de 5 contratos e sumir amanhã. Open interest alto indica posição montada que alguém precisa carregar ou zerar.
O segundo é ler montagem e desmontagem. Preço subindo com open interest subindo indica dinheiro novo entrando. Preço subindo com open interest caindo indica gente fechando posição vendida, o que costuma acabar mais rápido.
O terceiro é medir risco de exercício. Uma série com muito uncoveredQuantity
perto do dinheiro tem lançadores a descoberto que vão precisar comprar a ação ou
zerar o prêmio na semana do vencimento.
Acesso
Opções são do plano Pro. Sem token, positions responde para
underlying=PETR4 e positions/history responde para símbolos começando com
PETR, o suficiente para testar a integração antes de assinar.
