O preço de fechamento mostra quanto o ativo terminou valendo no pregão. O preço ajustado altera a série passada para tornar períodos separados por proventos ou eventos corporativos mais comparáveis.
Na resposta histórica da brapi, os campos são close e adjustedClose:
curl "https://brapi.dev/api/v2/stocks/historical?symbols=PETR4&range=1y&interval=1d&sortOrder=asc"Escolher o campo errado pode criar um salto artificial ou contar um dividendo duas vezes.
Close e adjustedClose
Use close quando você precisa do preço observado na data. Exemplos: marcar
uma ordem antiga, conferir uma nota ou reproduzir o valor exibido naquele
pregão.
Use adjustedClose quando você quer calcular uma série de retorno comparável e
a metodologia do ajuste atende ao estudo.
| Objetivo | Campo inicial |
|---|---|
| Mostrar preço negociado no dia | close |
| Gráfico histórico de preço observado | close |
| Retorno entre períodos com eventos | adjustedClose |
| Fluxo de caixa de dividendos | close mais eventos separados |
| Auditoria de um provento | close e endpoint de dividendos |
Não some dividendos duas vezes
Se a série ajustada já incorpora o efeito dos proventos, adicionar os mesmos dividendos ao retorno pode inflar o resultado. Declare a metodologia usada e teste a série em datas com eventos conhecidos.
Por que um dividendo mexe no preço
Quando uma ação passa a negociar sem direito a um provento, o caixa que será distribuído deixa de fazer parte do valor econômico da empresa. O preço pode abrir mais baixo sem que isso represente uma perda equivalente para o acionista.
O investidor ficou com dois componentes:
- a ação negociada ex-dividendo;
- o valor a receber na data de pagamento.
Uma série de close mostra a queda no preço. Uma série ajustada procura manter
a comparação entre o período anterior e o posterior ao evento.
Splits e grupamentos
Em um desdobramento, cada ação é dividida em várias. O preço unitário cai na mesma proporção, mas a quantidade do investidor aumenta.
Em um grupamento, várias ações viram uma. O preço unitário sobe e a quantidade diminui.
Sem ajuste, esses eventos parecem ganhos ou perdas enormes em um gráfico. Para entender subscrições, bonificações e outros eventos, consulte eventos corporativos na B3.
Comparar as duas séries com Python
import os
import requests
import pandas as pd
token = os.getenv("BRAPI_TOKEN")
headers = {"Authorization": f"Bearer {token}"} if token else {}
response = requests.get(
"https://brapi.dev/api/v2/stocks/historical",
params={
"symbols": "PETR4",
"range": "5y",
"interval": "1d",
"sortOrder": "asc",
},
headers=headers,
timeout=30,
)
response.raise_for_status()
prices = response.json()["results"][0]["data"]["historicalDataPrice"]
df = pd.DataFrame(prices)
df["return_close"] = df["close"].pct_change()
df["return_adjusted"] = df["adjustedClose"].pct_change()
differences = df.loc[
(df["return_close"] - df["return_adjusted"]).abs() > 0.01,
["date", "close", "adjustedClose", "return_close", "return_adjusted"],
]
print(differences.tail(20))O limite de 1% no exemplo serve apenas para encontrar datas que merecem investigação. Ele não prova que houve um evento corporativo.
Conferir dividendos e JCP
Para ações, consulte os eventos em uma rota separada:
curl "https://brapi.dev/api/v2/stocks/dividends?symbols=PETR4&startDate=2024-01-01&sortOrder=asc"A resposta separa dividendos em dinheiro, dividendos em ações e subscrições. Guarde pelo menos:
- data de aprovação;
- data com direito ao provento;
- data de pagamento;
- valor ou taxa do evento.
FIIs usam /api/v2/fii/dividends, pois os rendimentos têm fonte e semântica
próprias.
Mudança de ticker
Uma troca de código pode fragmentar a série se o sistema tratar o ticker novo
como outro ativo. A API v2 resolve renomes conhecidos e devolve
requestedSymbol, symbol e changed.
Antes de classificar um ticker antigo como inexistente, use:
curl "https://brapi.dev/api/v2/tickers/resolve?symbols=VVAR3"Salve o ticker informado e o canônico. Isso ajuda a explicar por que uma carteira importada passou a usar outro símbolo.
Checklist para backtesting
Antes de confiar no retorno calculado:
- escolha
closeouadjustedClosede forma explícita; - confira datas com grandes diferenças entre as séries;
- valide dividendos no endpoint de eventos;
- resolva mudanças de ticker;
- preserve campos nulos;
- documente se o retorno inclui fluxo de caixa separado.
O código para baixar e exportar a série está em dados históricos da B3 com Python e pandas.
