Como transformar preço de ações em retornos

Quando se fala em estudos financeiros, bem como formas de analisar investimentos, o retorno é a principal medida utiliza para se realizar cálculos e comparações de ativos ao longo do tempo. Existe inúmeros motivos para isso, tanto estatísticos, quanto pela própria teoria e prática de finanças. Hoje, iremos ensinar como transformar os preços de ações em retornos através do R.

Para quem não sabe, o retorno simples de um ativo é dado pela diferença de seu valor no tempo t e t-1 dividido pelo valor no tempo t-1, sendo R_t = (P_t - P_{t-k})/P_{t-k}.

Outro método de cálculo se dá através do Retorno Contínuo: r_t = \text{ln} (P_t/P_{t-k}).

library(tidyverse)
library(PerformanceAnalytics)
library(quantmod)

Para realizar esse cálculo através do R, vamos primeiro coletar o dados de forma reprodutível, utilizando o pacote {quantmod}. Iremos coletar os preços de fechamento de três empresas aleatórias e tratá-las de forma que estejam em um data frame da classe xts.

tickers = c('PETR4.SA', 'ABEV3.SA', 'MGLU3.SA')



prices = getSymbols(tickers, src='yahoo',
                    from='2021-01-01',
                    warning=FALSE) %>%
  map(~Ad(get(.))) %>%
  reduce(merge) %>%
  `colnames<-` (tickers)

Após coletar e tratar os dados, podemos calcular os retornos através da função do pacote {PerformanceAnalytics}, chamada Return.calculate(). É necessário somente o data frame da classe xts do preço dos ativos e especificar o método de calculo dos retornos. No caso, utilizaremos "discrete" para o retorno simples e "log" para o retorno contínuo.

# Calcula os retornos discretos
returns_discrete <- Return.calculate(prices,
                            method = "discrete") %>% 
  na.omit()



# Calcula os retornos contínuos
returns_log <- Return.calculate(prices,
                            method = "log") %>% 
  na.omit()

Podemos plotar os retornos dos nossos ativos.

plot(returns_discrete,
     legend.loc = "topleft",
     main = "Retorno Simples de ativos selecionados")

Podemos também visualizar o retorno cumulativo ao longo do tempo.

chart.CumReturns(returns_log, 
                 legend.loc = "topleft",
                 main = "Retorno Acumulado de ativos selecionados")

________________________

(*) Para entender mais sobre Mercado Financeiro e aprender como realizar a coleta, tratamento e visualização de dados financeiros, confira nosso curso de R para o Mercado Financeiro.
________________________

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Uma introdução à Inteligência Artificial e a Engenharia de Prompt

“Um especialista sabe todas as respostas, se você fizer as perguntas certas”. Este é o mesmo princípio usado nas técnicas de Prompt Engineering, com objetivo de otimizar as respostas de aplicações de IA generativa. Neste artigo apresentamos algumas destas técnicas com exemplos práticos em Python.

Como identificar mensagens de erro na coleta de dados de sites públicos

Quem trabalha com dados reais e precisa coletar informações de forma online usando APIs e links, sabe que erros de requisição são comuns, principalmente com dados públicos. Neste artigo, damos algumas dicas de como entender estes erros e mostramos um jeito simples de evitar que o código de Python “quebre” nestas situacões.

O que é e como calcular o Beta de Mercado usando o Python?

Neste tutorial, explicamos o conceito de Beta de Mercado e como calculá-lo por meio de regressão linear utilizando a linguagem de programação Python. Demonstramos como interpretar graficamente e analisar os parâmetros estimados do método estatístico, contextualizando-o na teoria financeira com um exemplo real. Em seguida, aprofundamos a análise, desenvolvendo um Beta com Janelas Deslizantes e aplicando o modelo CAPM. Por fim, utilizamos a regressão linear múltipla para reproduzir o modelo de três fatores de Fama-French, uma extensão do CAPM.

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.