Blog

Postado em em 8 de maio de 2021

Como Pegar Cotações de Ações do Yahoo Finance com Python

Nesta aula, vou te mostrar como pegar cotações de ações do Yahoo Finance com Python de forma prática e automatizada!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber a planilha que usamos na aula no seu e-mail, preencha:

Como Pegar Cotações de Ações do Yahoo Finance com Python

Na aula de hoje, vou te ensinar como pegar cotações de ações do Yahoo Finance com Python! O objetivo é automatizar esse processo para trazer informações atualizadas dos ativos que você está buscando.

Esse processo é bem simples e rápido, utilizaremos as bibliotecas pandas-datareader e yfinance. Dessa forma, você poderá pegar cotações de ações do Yahoo Finance com Python em um determinado período e a partir daí realizar suas análises.

Se estiver interessado em aprofundar seus conhecimentos em análise de dados, recomendo que acesse nosso Minicurso Gratuito de Análise de Dados!

Nos materiais para download desta aula, você encontrará o gabarito do nosso código e um arquivo em branco para aprender a construí-lo do zero. Então, vamos começar!

Bibliotecas Necessárias

Existem várias maneiras de pegar cotações de ações do Yahoo Finance com Python. Nesta aula, utilizaremos uma das mais populares, que é aplicando as bibliotecas pandas_datareader e yfinance.

Esse processo pode ser executado em qualquer editor de código, mas no exemplo desta aula, estarei usando o Jupyter. No entanto, é importante ter algumas bibliotecas instaladas em seu computador: pandas-datareader, yfinance, pandas, numpy e matplotlib.

Caso não tenha alguma dessas bibliotecas instaladas, abra o terminal do seu editor de código e execute a instalação delas.

pip install pandas-datareader yfinance pandas numpy matplotlib

Se estiver utilizando o Jupyter, você pode fazer a instalação diretamente em uma das células dele.

!pip install pandas-datareader yfinance pandas numpy matplotlib

Agora que temo as bibliotecas instaladas, vamos fazer as importações necessárias para o nosso código:

  • A biblioteca do Pandas será importada como pd.
  • A biblioteca pandas_datareader.data como pdr, onde a função data importada junto com o nome será responsável pelas requisições ao Yahoo Finance. Obs: Em alguns lugares, essa biblioteca é importada com o alias de web ao invés de pdr.
  • A biblioteca yfinance, que será importante para corrigir alguns bugs e problemas que a biblioteca pandas-datareader está apresentando ao obter os dados do Yahoo Finance.
import pandas as pd
import pandas_datareader.data as pdr
import yfinance

Yfinance – Ajustando a Biblioteca do Pandas DataReader

Após importarmos as bibliotecas para o nosso código, o próximo passo é ajustar o pandas-datareader utilizando a biblioteca yfinance para corrigir os bugs.

Podemos fazer isso com o seguinte código:

yfinance.pdr_override()

Dessa forma, a yfinance irá substituir as funções do pandas-datareader que estão apresentando bugs ao obter os dados do Yahoo Finance por funções que funcionam corretamente.

Importante: Independentemente de como você tenha importado o pandas-datareader, o comando para ajustar com o yfinance sempre será .pdr_override().

Como Pegar Cotações do Yahoo Finance com Python

Antes de obtermos as cotações do Yahoo Finance, é importante entender como funcionam os tickers (siglas que identificam as ações) utilizados no site. Por exemplo, os ativos brasileiros sempre possuem um .SA ao final, e os outros índices são antecedidos por circunflexo (^). Verifique sempre essa informação no site antes de aplica-la ao código.

Para o nosso exemplo, vamos pegar as cotações do Itaú (ITB3.SA), da Vale (VALE3.SA), da Petrobrás (PETR3.SA) e o índice do IBOVESPA (^BVSP).

A lista de ativos ficará assim:

ativos = [“ITUB3.SA”, “VALE3.SA”, “PETR3.SA”, “^BVSP”]

Pegando a Cotação de um Ativo:

Vamos primeiro aprender como fazer essa requisição para um único ativo e, em seguida, adaptá-la para todos os ativos. Portanto, vamos começar obtendo as cotações do índice IBOVESPA.

data_inicial = “2023-01-01”
data_final = “2023-06-30”

tabela_cotacoes = pdr.get_data_yahoo(“^BVSP”, data_inicial, data_final)

display(tabela_cotacoes)

A tabela_cotacoes será a tabela que obteremos da função get_data_yahoo do pdr (pandas-datareader). Essa função precisa receber três argumentos: o ticker, a data inicial e a data final.

O ticker deve ser passado exatamente como está registrado no site do Yahoo Finance, e as datas podem ser inseridas de duas formas: como texto no formato “2023-01-01” (ano-mês-dia) ou, podemos importar a biblioteca datetime do Python para obter as datas.

Nossa tabela_cotacoes será um dataframe, então podemos exibi-la usando display(tabela_cotacoes) se você estiver utilizando o Jupyter, ou com print(tabela_cotacoes) se estiver usando outro editor.

Tabela completa IBOVESPA

Teremos todas as informações organizadas por dia, incluindo o preço de abertura, máxima e mínima do dia, preço de fechamento, fechamento ajustado e o volume de transação daquele dia.

Normalmente, ao fazer análises de cotações, é comum utilizar principalmente o fechamento ajustado (Adj Close). Portanto, é frequente encontrar códigos que, logo na requisição, filtram apenas essa coluna.

data_inicial = “2023-01-01”
data_final = “2023-06-30”

tabela_cotacoes = pdr.get_data_yahoo(“^BVSP”, data_inicial, data_final)[“Adj Close”]

display(tabela_cotacoes)

Dessa forma, o resultado retornará apenas os dias com o fechamento ajustado. Essa é uma forma de simplificar a exibição e trabalhar especificamente com essa coluna nas análises.

Tabela Adj Close IBOVESPA

Pegando a cotação para vários ativos diferentes:

Podemos obter as cotações de vários ativos de forma simples também. Basta passarmos para a função get_data_yahoo() uma lista Python contendo os nomes dos ativos que desejamos. Vamos utilizar a lista que definimos anteriormente.

ativos = [“ITUB3.SA”, “VALE3.SA”, “PETR3.SA”, “^BVSP”]

data_inicial = “2023-01-01”
data_final = “2023-06-30”

tabela_cotacoes = pdr.get_data_yahoo(ativos, data_inicial, data_final)

display(tabela_cotacoes)
Tabela completa ativos

Esse código retornará uma tabela com as informações de todos os ativos que foram incluídos na nossa lista. Essa tabela é um MultiIndex Dataframe, ou seja, apresenta mais de um índice de coluna, um para o tipo de informação e outro para o ativo.

Como é mais comum utilizarmos apenas o fechamento ajustado, também podemos filtrar essa requisição para termos uma tabela apenas com o Adj Close de cada ativo.

ativos = [“ITUB3.SA”, “VALE3.SA”, “PETR3.SA”, “^BVSP”]

data_inicial = “2023-01-01”
data_final = “2023-06-30”

tabela_cotacoes = pdr.get_data_yahoo(ativos, data_inicial, data_final)[“Adj Close”]

display(tabela_cotacoes)
Tabela ativos Adj Close

Você pode adicionar quantos ativos quiser à sua lista Python de ativos e executar o código. Lembre-se de utilizar os tickers correspondentes a cada ativo.

É importante ressaltar que, dependendo das datas que você definir para executar o código, algumas linhas podem aparecer vazias na tabela devido à forma como a base de dados do Yahoo Finance fornece essas informações.

Conclusão – Como Pegar Cotações de Ações do Yahoo Finance com Python

Nessa aula, foi possível aprender a como pegar cotações de ações do Yahoo Finance com Python, tanto para uma única ação quanto para uma lista de ativos.

Agora você tem uma maneira fácil, rápida e automática de obter esses dados para realizar suas análises do mercado financeiro.

E caso tenha interesse em aprofundar seus conhecimentos em análise de dados, recomendo que acesse nosso Minicurso Gratuito de Análise de Dados! É uma ótima oportunidade para expandir suas habilidades nesse campo.

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?