Escolha uma Página

Calculando Correlação do Ibovespa com o Dólar em Python

O mercado financeiro é um grande campo de atuação da Ciência de Dados, sendo possível ser realizada a previsão do preço de ações, análise de sentimentos de textos, alocações e otimizações, agrupamento de empresas similares, entre outros trabalhos utilizando algoritmos de Machine Learning. Em outros artigos deste blog, abordamos mais sobre esse assunto. Neste tópico vamos mostrar na prática o poder da linguagem python no dia a dia do mercado financeiro.

Aplicação Prática do Python para Cálculo da Correlação do Ibovespa com o Dólar

Primeiramente, importaremos as bibliotecas python bastante utilizadas na análise de dados. O pandas, para a manipulação; numpy, para cálculos matemáticos; matplotlib, seaborn e plotly para a visualização; e, yfinance, para baixar dados de mercado do Yahoo!R finance.

!pip install yfinance –upgrade –no-cache-dir

import yfinance as yf

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import seaborn as sns

Precisamos definir no algoritmo, os símbolos do Ibovespa e do dólar ,colocando seus nomes em uma lista. Esses nomes podem ser encontrados no Yahoo! Finanças. Os dados coletados fora do início de 2020 até o último dia útil de 2022; justamente para verificarmos o comportamento perante ás últimas crises como COVID e questões geopolíticas.

tickers = “^BVSP USDBRL=X”

carteira = yf.download(tickers, start=”2020-01-01″)[“Close”]

[*********************100%***********************] 2 of 2 completed

Vamos eliminar dados vazios com a função .dropna().

carteira = carteira.dropna()

Para facilitar a utilização desses dados, podemos renomear as colunas, fazendo com que fiquem mais intuitivo para quem está lendo.

carteira.columns = [“DÓLAR”, “IBOVESPA”]

Visualizando os dados

Com os dados coletados, vamos visualizá-los através de gráficos. Para este análise, focaremos nas séries temporais para visualizar como as ações se comportam ao longo do tempo.

sns.set()

carteira.plot(subplots=True, figsize=(22,8));

Com o gráfico plotado, o que visualizamos é a flutuação do preço do dólar americano e do IBOVESPA, estando claro a grande oscilação de ambos.

Porém , é mais relevante visualizar qual ativo qual traz mais retorno. Para isso, fazemos uma normalização dos dados, com a função pct.change(), que realiza a alteração percentual entre o elemento atual e o anterior. Calcula a alteração percentual da linha imediatamente anterior por padrão.

retornos = carteira.pct_change()[1:]

Pelo resultado da última linha podemos verificar que nesse período, o movimento do dólar teve um comportamento mais positivo que o do índice Ibovespa.

sns.set()

retornos.plot(subplots=True, figsize=(22,8));

Com a função . describe() podemos observar um resumo estatístico.

retornos.describe()

Com essas estatísticas podemos concluir que o dólar teve uma oscilação menor que o índice IBOVESPA, 12,34% contra 20,95%; foram calculados 562 dias úteis; tanto a maior queda como a maior elevação que ocorreu em algum período foi do índice IBOVESPA; 14,78% e 13,91% respectivamente.

Por fim, vamos plotar o gráfico da correlação do dólar com o índice IBOVESPA do período.

retornos[“DÓLAR”].rolling(252).corr(retornos[“IBOVESPA”]).plot(figsize=(15,10));

Podemos concluir que , os períodos que houve maior correlação foi em 2022 e a menor foi em 2021.

Autor: Bruno Santos
Criador do Blog Possui experiência em Finanças e Análise de Dados. É graduado em Administração de empresas, com foco em finanças pelo Centro Universitário Ibmec (2017) e faz MBA de Finanças Corporativas na FGV. Atualmente é Head Financeiro de uma Startup & Gestor de Fundos. Tem diversos artigos publicados em revistas e congressos nacionais e internacionais. Possui experiência e trabalhos realizados nas linguagens de programação R, PYTHON e VBA. Tem experiência nas áreas de Finanças, Métodos Quantitativos, Análise de Dados, Automação de Processos e Mercado Financeiro. Presta consultoria nas áreas de Finanças e Análise de Dados.

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *