Python Download — Como baixar dados de ações da B3 (Bovespa) DE GRAÇA — Atualizado 2024

Rodrigo Bercini Martins
4 min readMay 25, 2020

--

lmagem por Austin Distel.

Neste artigo você irá aprender a fazer download de graça os seguintes dados da B3 (Bovespa):

· Cotações diárias históricas;
· Dados intraday dos últimos 60 dias úteis;
· Informações financeiras dos últimos quatro anos.

A API utilizada neste artigo é um pacote chamado yahooquery, criado pelo desenvolvedor americano Douglas Guthrie. Desde o cancelamento das APIs oficiais do Google e Yahoo, a comunidade de ciência de dados vem criando maneiras de extrair informações do mercado financeiro. Essa API não-oficial é uma maneira alternativa de se obter tais dados.

1. Instalando e importando pacotes

Primeiramente, instalamos o pacote, usando o pip no prompt de comando.

pip install yahooquery

Para importar o pacote, basta rodar o código abaixo.

from yahooquery import Ticker

Um ponto muito importante antes de começarmos é notar que os tickers (siglas que identificam as ações) usados pelo Yahoo Finance são um pouco diferentes dos oficiais da Bovespa. Antes de fazer a consulta, é preciso conferir no site qual é o ticker correto. Confira alguns exemplos abaixo.

Oficial -> Yahoo Finance
· PETR4 -> PETR4.SA
· ABEV3 -> ABEV3.SA
· MGLU3 -> MGLU3.SA

Confira a ação no Yahoo Finance antes de usar as APIs.

2. Extraindo dados diários

É muito simples extrair dados históricos de fechamento diário das ações com o yahooquery. Geralmente, os dados a partir do início dos anos 2000 estão disponíveis para consulta.

petr = Ticker("PETR4.SA”)
petr.history(period="max")
Exemplo de período máximo disponível da ação PETR4.SA

Também é possível consultar um intervalo de tempo específico, adicionando datas de início e fim aos parâmetros:

petr = Ticker("PETR4.SA")
petr.history(start="2005–05–01", end="2013–12–31")
Exemplo de período específico da ação PETR4.SA

3. Extraindo dados intraday

Para dados intraday, o período disponível varia de acordo com o intervalo escolhido. Os intervalos suportados são 30 min, 15 min, 5 min, 2 min e 1 min.

· 30 min -> últimos 60 dias úteis
· 15 min -> últimos 60 dias úteis
· 5 min -> últimos 60 dias úteis
· 2 min -> últimos 31 dias úteis
· 1 min -> últimos 7 dias úteis

Extraindo intervalos de 30 min:

abev = Ticker("ABEV3.SA")
abev.history(period="60d", interval = "30m")
Dados intraday de 30 minutos da ABEV3.SA

Extraindo intervalos de 1 minuto:

abev = abev.history(period="7d",  interval = "1m")
abev
Dados intraday de 1 minuto da ABEV3.SA

4. Informações financeiras

Além das cotações, também é possível extrair dados financeiros para análise fundamentalista. Para isso, são retornados os principais indicadores presentes nos relatórios anuais das empresas, tais como receita, lucro, Ebit, gastos com pesquisa e inovação, etc. Como exemplo, confira parte da Income Statement (Demonstração de Resultados) da Petrobras. Só nesse demonstrativo financeiro, são quase 60 indicadores diferentes.

petr = Ticker("PETR4.SA")     # Coleta dados
petr = petr.income_statement()# Chama Demonstração de resultados
petr = transpose() # Transpõe a matriz
petr.columns = petr.iloc[0,:] # Renomeia colunas
petr = petr.iloc[2:,1:] # Seleciona dados
petr = petr.iloc[:, 1::-1] # Inverte colunas
petr
Parte da Demonstração de Resultados

Para mais informações financeiras — como fluxo de caixa, balanço patrimonial, investidores institucionais —, confira a documentação do pacote.

5. Conclusão

Neste artigo, você aprendeu a extrair dados diários históricos, dados intraday de até 1 minuto de intervalo e informações financeiras de ações listadas na Bolsa de Valores de São Paulo disponíveis no Yahoo Finance.

E tudo isso sem gastar nada!

O código completo deste artigo pode ser encontrado neste repositório ou logo abaixo. Se ficou alguma dúvida ou algo não está funcionando, é só me contatar no LinkedIn: https://www.linkedin.com/in/rodrigo-bercini/.

Até a próxima!

--

--