Ações e Bolsa de Valores [B3]: como fazer download das cotações

Existem vários métodos para baixar as cotações das ações (ações e bolsa de valores) ou de carteiras para diversas finalidades. Nesse post ensinarei os primeiros passos para fazer download de forma automática e salvá-los para uso futuro.

Monitorar e ter controle financeiro dos investimentos

Para um controle e planejamento financeiro, ter a habilidade de fazer download das cotações de ações e fazer nossas próprias simulações nos dá uma independência e controle muito grande sobre nossas escolhas, tanto financeiras quanto pessoais.
Devemos nos manter alerta aos nossos ganhos e perdas por isso dominar uma ferramenta que nos proporcione acompanhar o mercado de ações, não só nossa carteira mas também possíveis oportunidades para futuros investimentos.

Bolsa de Valores [B3] – Brasil Bolsa Balcão

Muitos desconhecem, mas a Bolsa de Valores é uma das principais empresas de infraestrutura de mercado financeiro no mundo, com atuação em ambiente de bolsa e de balcão e daí vem o nome B3 – Brasil Bolsa Balcão. Suas atividades incluem criação e administração de sistemas de negociação, compensação, liquidação, depósito e registro para todas as principais classes de ativos, desde ações e títulos de renda fixa corporativa até derivativos de moedas, operações estruturadas e taxas de juro e de commodities.
Assim, a Bolsa de Valores é o principal ambiente de negociações para ações de companhias do tipo S.A (Sociedade Anônima) com capital aberto. Quando uma ação é colocada à venda significa que um percentual do patrimônio da companhia está sendo negociado. Em outras palavras, cada ação colocada à venda corresponde a um percentual do patrimônio da empresa.
Então, quando investimos em uma ação estamos nos tornando um sócio da empresa por meio da compra de uma cota de participação.
Essa aplicação é documentada em papéis que ficam sob a tutela de uma instituição financeira, ou seja, a Bolsa de Valores.

Download das cotações de ações

Se tu já possui ações, deves saber o código (Ticker) de cada uma delas ou o nome do papel negociado por cada empresa, se tu não souberes, deves procurá-los para fazer um trabahlo voltado para cunho pessoal. Ainda, se não sabes nenhum código e está apenas desenvolvendo as habilidades para minerar dados da bolsa de valores e usá-los para fazer gráficos ou criar modelos de machine learning também é interessante pesquisar alguns TICKERs.

Como consultar o nome do papel negociado por uma empresa.

Existem diversas maneiras de descobrir ou pesquisar o código (Ticker) do nome do papel negociado por uma empresa. As mais fáceis, digamos, são entrar no site da Bolsa de Valores [B3] ou no Yahoo Finanças e pesquisar. Por exemplo, se tu pesquisares por petrobras , o resultado será o nome da companhia: PETROLEO BRASILEIRO S.A. PETROBRAS e o Ticker: PETR4 e PETR3. Cada ticker se refere a um tipo de ação.

Preparação

Como estamos usando Python, para fazer o download e a manipulação dos dados é interessante que bibliotecas específicas para este fim sejam carregadas. A biblioteca mais importante é a pandas_datareader , que pode ser baixada através da linha de comando com pip install pandas_datareader ou num dos ecosistemas do Python, por exemplo, jupyter lab, que é o que eu uso com !pip install pandas_datareader. Caso tenhas alguma dúvida na instalação CLICK AQUI.
Essa biblioteca vai no dar acesso a qualquer cotação de uma ação ou carteira não só do Brasil, mas de outras bolsas pelo mundo. Outra coisa importante é que ela acesso não somente à API do Yahoo Finance, mas permitir possamos baixar as cotações das ações de vários outras APIs. Sempre tendo em mente que a API do Yahoo Finance é uma das melhores para este fim.

%matplotlib inline
import datetime as dt
import numpy as np
import pandas_datareader.data as wb
import matplotlib.pyplot as plt

Download das cotações

Ok, tickers escolhidos, biblioteca baixada, vamos por a mão na massa.
Para usar a biblioteca pandas_datareader alguns dados devem ser setados. O código do ativo que tu queres baixar, as datas de início e fim do período a ser estudado (se colocares só a data de início, será feito o download até a última de cotação) e a API de onde as cotações serão baixadas, no caso yahoo.
Então temos as seguintes variáveis, neste caso constantes…hehehe:

ticker = ['PETR4.SA']
start = dt.datetime(2015, 1, 1)
end = dt.datetime(2021, 12, 2)

o comando completo fica:

df_petro = wb.DataReader(ticker, 'yahoo', start)
  • Observação:
    • colocando ticker como lista, viabiliza a inclusão de novos tickers.
    • sobre a data: para quem não está habituado com formatos de data, além do formato brasileiro, existem outros; no caso da biblioteca que estamos trabalhando, a data vem no formato americano (yyyy,mm,dd).
    • não coloquei data de término, assim será baixado até a última data vigente.

Simplesmente digitando o nome df_petro do dataframe e apertando enter, veremos as primeiras e últimas linhas dos dados. Muito útil.

Outra forma muito útil de visualização e digitar print(df_petro.describe()) e apertar enter, com isso veremos uma análise estatística dos dados de cada variável.

Para fazer download de uma carteira de investimento em ações, o procedimento é o mesmo de baixar um único ativo, o diferencial é que ao invés de passarmos um só ticker, passaremos uma lista de tickers. Podemos criar uma carteira fictícia ou uma que seja do nosso interesse. Criarei uma aleatória contendo quatro ativos ("AMZO34.SA", "NFLX34.SA", "PETR4.SA", "VALE3.SA"). Observe que os códigos de quatro letras vem seguidos de números, estes números possuem uma simbologia também, mas que no momente não é nosso foco. Os ativos são correspondentes a companhias Amazon, Netflix, Petrobrás e Vale, respectivamente.

A linha de código referente seria:

tickers = ["AMZO34.SA", "NFLX34.SA", "PETR4.SA", "VALE3.SA"] 

e o código para baixá-los:

df_ativos = wb.DataReader(tickers, 'yahoo', start) 

Praticamente não mudou nada.
Para visualizar os dados o procedimento também é o mesmo. Digitando o nome (df_ativos) e apertando enter, veremos os dados de forma completa. Mas sugiro depois digitar df_ativos["Adj Close"] para que possamos ver somente os preços de fechamento.

Plotando gráficos com as cotações das ações

Ok, que tal vermos tudo de forma gráfica? Python nos proporciona diversas maneiras de visualizarmos gráficos com apenas um comando. Como estamos trabalhando com uma série temporal, tempo versus o valor ajustado de ações, uma excelente prática é usar a função plot() do Python. Com ela automaticamente faremos gráfico de linhas onde no eixo X teremos a data e no eixo Y os valores do ativo ou da carteira de investimentos.
Para o ativo da Petrobrás, basta usarmos df_petro.plot() e para a nossa carteira de investimentos usaremos df_ativos["Adj Close"].plot() . As figuras exemplificam bem os gráficos.

Cotação das ações do exemplo

A seguinte figura mostra a cotação das ações da Petrobrás no período mostrado no gráfico.

Cotação dos ativos da Petrobras

Salvando os dados das cotações das ações e os gráficos

Para salvar os dados em formado CSV (Comma-Separated Values) basta usar a seguinte sintaxe de comando: VARIAVEL.to_csv("CAMINHO_DO_DIRETORIO/NOME_DO_ARQUIVO.csv"), no nosso caso:

df_petro.to_csv(./invest/petrobras.csv)

Para a carteira de investimentos o modus operandi é o mesmo.

Para salvar os gráficos insira o seguinte comando plt.savefig('./figs/petro_fig.png', dpi=200) , simples e direto, mas tu podes alterar a extensão da figura para .jpg, por exemplo, e o dpi pode ser aumentado ou diminuido conforme o teu gosto.

Conclusão

Esta foi uma forma bem direta para fazer download, plotar e salvar os dados de cotações de ações individuais ou de carteiras de investimento baseadas em ações.
Caso tu tenhas alguma dificuldade em instalar as bibliotecas podes acessar esse post.

Código completo

# Carregando as bibliotecas
import datetime as dt
import numpy as np
import pandas_datareader.data as wb
import matplotlib.pyplot as plt

# setando as variáveis
ticker = ['PETR4.SA']
start = dt.datetime(2015, 1, 1)
end = dt.datetime(2021, 12, 2)

# Capturando as cotações e armazenando numa variável
df_petro = wb.DataReader(ticker, 'yahoo', start)

# Plotando e mostrando o gráfico
df_petro["Adj Close"].plot()
plt.show()

Disclaimers

Como este é um blog sobre Data Analysis, sempre que possível mostrarei as vantagens de usar uma linguagem de programação, no caso, Python, para gerar infográficos para melhorar a apresentação de gráficos e infográficos que serão usados nas apresentações da graduação, salão de iniciação cintífica, TCC (Trabalho de Conclusão de Curso), congresso, defesas de mestrado, doutorado ou em uma reunião com colegas, orientadores, chefes.

O Invited Researcher se exime de qualquer responsabilidade por quaisquer prejuízos, diretos ou indiretos, que venham a decorrer da utilização indevida do material ou seu conteúdo aqui usado para cálculos ou simulações. Não existe no presente momento qualquer tipo de garantia, implícita ou explícita, do Invited Researcher.

A máxima no mundo dos investimentos é: Rentabilidade obtida no passado não representa garantia de resultados futuros e todo investimento apresenta riscos.

O presente material elaborado utiliza como fontes de informações divulgações públicas do mercado, de consultorias e dados fornecidos por instituições financeiras.

Muitas ilustrações deste material envolvem o uso de números, de forma a tornar mais eficiente a apresentação de situações financeiras. Estes números, por mais que tentem simular a situação real, podem induzir a uma falsa precisão e não devem ser considerados como única fonte de informação para tomadas de decisão . Números estimados que indiquem situações financeiras futuras, não devem ser interpretados como intenção de assegurar resultados, mas apenas apresentar projeções , baseadas em um conjunto de pressupostos. Estas projeções são úteis somente para comparação das diversas alternativas de investimento possíveis no mercado. A rentabilidade de produtos financeiros pode apresentar variações, e seu preço ou valor podem aumentar ou diminuir num curto espaço de tempo.

    Leave A Comment