Análise de Série Temporal e Normalização a 100 de Ações Usando Python
Escrito por Fabio Leonidas
Esse é um artigo introdutório, em que você verá como começar a analisar um gráfico de uma ação através do Python e suas bibliotecas, utilização do Google Colab (eu utilizo o tema escuro) e entregar explicações sobre os códigos e a lógica utilizada. Apesar de simples, esse conhecimento servirá como base para trabalhos mais elaborados.
Utilizei o Google Colab e optei por colocar os códigos em imagens, juntamente com alguns comentários feitos.
De maneira sucinta, uma Série Temporal é um conjunto de observações ordenadas no tempo. Não precisa necessariamente ser relacionada ao mercado de ações.
Importando as Bibliotecas
Para explicar passo a passo, começarei importando o que já sei que vou precisar.
Nesse caso precisarei de uma fonte de dados, que usarei o Yahoo Finance, e o Matplotlib, uma biblioteca para visualização de dados das séries dos ativos escolhidos.
Para o artigo em questão, usarei os dados de Fechamento Ajustado, ‘Adj Close’ em inglês, da VALE3.
Obtendo Dados da VALE3
Criamos um dataframe e nomeamos ‘serie_vale’.
Para pegar esses dados, nesse caso, utilizei o Yahoo finance. Ele me pede argumentos como ‘ticker’ (código do ativo), start (período de início da série), end (período final da série). Há outros, mas não vamos nos aprofundar. Aproveitei esse método e já arredondei os valores do ativo (rounding=True).
Um outro método poderia ser utilizando uma função do numpy (np.round) onde podemos escolher até o número de casas decimais.
Nota: podemos utilizar a função ‘type()’ para vermos de qual tipo é o objeto.
Após pegar os dados é preciso olhar como está nosso dataframe. Sendo assim, a dica é utilizar o método head() para exibir, por padrão, as 10 primeiras linhas do seu dataframe. Caso queira um número específico, você pode inserir um parâmetro dentro desse método, como fiz abaixo:
Acima podemos ver que tenho os dados de abertura (open), máxima (high), mínima (low), fechamento (close),fechamento ajustado (adj close) e volume desde a data que inseri quando fiz o ‘yf.download’ dos dados da VALE3.
Desenvolvendo a Visualização dos Dados da VALE3
Agora vamos utilizar o Matplotlib, onde utilizo diversos métodos para customizar essa visualização e dentro desses métodos insiro argumentos.
Fiz algumas modificações que não precisariam ser feitas, mas achei interessante para fins de estudo e entendimento do que é possível fazer, como mudança da cor da linha, do título, customização do eixo X e do eixo Y, tamanho de fonte, dentre outros.
Ao mesmo tempo em que busquei mexer um pouco no gráfico, também acho interessante não me aprofundar tanto para não confundir e para que você busque mais informações sobre.
Veja como ficou:
Indo Um Pouco Além: Normalização a 100
Como é possível ver, o trabalho é razoavelmente simples para um iniciante. Por isso eu quis mostrar algo a mais.
Agora que plotamos um gráfico com um ativo, vamos um pouco além para que eu possa mostrar uma maneira de comparar dois (ou mais) ativos no mesmo gráfico e também utilizar a normalização a 100 para que os preços no gráfico tenham o mesmo ponto de partida.
Isso permite que realizemos uma análise melhor da comparação dos dois ativos em questão, uma vez que sem a normalização eles têm valores diferentes.
Para isso, vamos obter os dados da PETR4.
Veja como ficou:
Colocando Os Dados Das Duas Ações em Um DataFrame
Como estou utilizando o Fechamento Ajustado (Adj Close) como parâmetro em meus gráficos, vou colocar ambos em um df para que você veja uma maneira de fazê-lo.
Insiro especificamente a coluna que quero de cada série e adiciono ‘.T’ pois meu dataframe estava com os fechamentos ajustados como linhas e não colunas.
- Criado por