Python Download — Como baixar dados de ações da B3 (Bovespa) DE GRAÇA — Atualizado 2024
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
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")
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")
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")
Extraindo intervalos de 1 minuto:
abev = abev.history(period="7d", interval = "1m")
abev
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
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!