Calculando os retornos das ações no R

Calculando os retornos das ações no R

lucca

09 SET

7 MIN

Calculando os retornos das ações no R

Olá investidor! No artigo de hoje veremos mais uma aplicação prática na nossa série de textos sobre introdução ao R.

O texto a seguir explicará como calcular os retornos periódicos de ações. Veremos especialmente a aplicação em análise de investimentos. Para facilitar a compreensão, elencamos o tema nos seguintes tópicos:

  • Preparação
  • Como calcular retornos diários das ações
  • Calculando retornos semanais das ações
  • Como calcular retornos mensais das ações
  • Calculando Retornos Acumulados
  • Conclusão

Boa leitura!

retorno ações

Preparação

Se você leu o último texto, já deve saber que precisaremos usar certas bibliotecas para poder baixar e importar dados de ações. Para o exercício de hoje, usaremos uma biblioteca nova, a tidyquant. 

Tidyquant

O tidyquant integra uma série de pacotes fundamentais para trabalharmos com dados financeiros: zoo, xts, quantmod, TTR, ggplot2 e PerformanceAnalytics. Se você lembrar do último texto, tivemos que importar vários destes só que de forma individual. Com o tidyquant temos vários desses pacotes dentro de um só, além de já usarmos a arquitetura do tidyverse.

Ggplot2

O pacote ggplot2 é o mais completo para a visualização de dados e com ele podemos criar uma infinidade de gráficos personalizados. 

Ggthemes

O pacote é uma extensão do ggplot2. Com ele podemos usar temas pré-prontos de alguns dos principais sites que fornecem gráficos. No ggthemes temos, por exemplo, temas inspirados nos gráficos do Google, The Economist e do FiveThirtyEight.

Instalando os pacotes necessários

Novamente usaremos a função install.packages() para instalar pacotes e a função library() para carregá-los:

> install.packages(“tidyquant”)
> install.packages(“ggplot2”)
> install.packages(“ggthemes”)
> library(tidyquant)
> library(ggplot2)
> library(ggthemes)

Importando as séries históricas das ações

No último texto, vimos como importar as séries históricas das ações utilizando a função BatchGetSymbols() ou getSymbols().

Como estamos trabalhando com o tidyquant, usaremos a função tq_get() para baixar os dados dos ativos:

calcular retorno

Note que o primeiro argumento é sempre o ticker da ação, no caso escolhi novamente a ação da Vale. Em seguida, pedi para baixar desde 01/01/2010 até a data de hoje do meu computador. 

Operador Pipe

Na continuação do código, usaremos o operador pipe (%>%). Introduzido por Stefan Milton Bache, o operador serve para tornar a escrita do código mais fluida e elegante. Basicamente usa o valor resultante da expressão do lado esquerdo como primeiro argumento da função do lado direito. Vamos então usar o pipe para fazermos um plot da série histórica de preços das ações da Vale:

VALE3 %>%

  ggplot(aes(x = date, y = adjusted)) +

  geom_line() +

  labs(x = “Date”, “Price”, title = “VALE3”, subtitle = “VALE S.A”) +

theme_gdocs()

introdução programa R

Lembrando que sempre usamos o preço ajustado no eixo X.

Calculando os retornos diários das ações

Agora que já baixamos a série histórica, vamos calcular os retornos diários das ações da Vale (VALE3). Para isso, usaremos outra função do tidyquant, a tq_transmute(). É uma função que serve para principalmente obter os dados em uma periodicidade diferente da atual. 

VALE3_rdiario <- VALE3 %>%

  tq_transmute(select = adjusted,           

               mutate_fun = periodReturn,   

               period = “daily”,      

               col_rename = “vale_retornos_diarios”) 

O argumento mutate_fun transforma nossos dados em retornos periódicos, e o argumento “period” específica que seriam os retornos diários.

calcular retorno das ações

Visualizando os retornos diários das ações

Visualizar os retornos diários é bastante simples e parecido com o que fizemos antes, de novo usaremos o pipe:

> VALE3_rdiario %>%

  ggplot(aes(x = date, y = vale_retornos_diarios)) +

  geom_line() +

  labs(x = “Data”, y = “Retornos Diários”, title = “VALE3”, subtitle = “VALE S.A”) +

theme_gdocs()

retorno dos investimentos

Perceba que o gráfico faz um certo sentido, estando a maior parte dos retornos diários entre +0,1 e -0,1.

Note também os retornos diários anormais em 2020, por conta do choque causado pela pandemia.

Calculando os retornos semanais das ações

A depender da análise, você pode querer também obter os retornos semanais da ação ou portfólio em questão. Para obtermos os retornos semanais, basta trocarmos o argumento “period” para “weekly”:

VALE3_rsemanal <- VALE3 %>%

  tq_transmute(select = adjusted,           

               mutate_fun = periodReturn,   

               period = “weekly”,      

               col_rename = “vale_retorno_semanal”) 

Visualizando os retornos semanais das ações

Para visualizar os retornos semanais usaremos o ggplot com gráfico de barras:

VALE3_rsemanal %>%

  ggplot(aes(x = date, y = vale_retorno_semanal)) +

  geom_bar(stat = “identity”)  +

  labs(x = “Data”, y = “Retorno Semanal”, title = “VALE3”, subtitle = “VALE S.A”) +

  theme_gdocs()

calcular retorno ações

Calculando os retornos mensais das ações

E se quiséssemos os retornos mensais das ações da VALE3? Bom, a estrutura do código também é bastante parecida, basta trocarmos o período para “monthly”:

VALE3_rmensal <- VALE3 %>%

  tq_transmute(select = adjusted,           

               mutate_fun = periodReturn,   

               period = “monthly”,      

               col_rename = “vale_retorno_mensal”) 

Visualizando os retornos mensais das ações

A visualização é também similar a de retornos semanais, também com gráfico de barras:

VALE3_rmensal %>%

  ggplot(aes(x = date, y = vale_retorno_mensal)) +

  geom_bar(stat = “identity”) +

  labs(x = “Data”, y = “Retornos Mensais”, title = “VALE3”, subtitle = “VALE S.A”) +

  theme_gdocs()

programa r

Calculando os retornos acumulados no R

O cálculo dos retornos acumulados são úteis para compararmos a rentabilidade dos nossos investimentos em relação ao mercado ou a algum título público.

Você provavelmente já ouviu alguém falando: “Quem investiu R$1 em Magazine Luiza em 2016 teria hoje…” Este cálculo é feito através do retorno acumulado, como estamos trabalhando as ações da Vale, vamos verificar o retorno acumulado das ações da Vale desde 01/01/2010.

A ideia para calcular o retorno acumulado é obter o produto acumulado dos retornos mensais. Para isso, usaremos uma função chamada cumprod().

Como queremos trabalhar na base 1 para obter corretamente o produto acumulado, vamos então somar 1 a coluna de retornos diários:

vale_um <- 1 + VALE3_rmensal$vale_retorno_mensal

Agora, vamos passar a variável vale_um dentro da função cumprod() e atribuir a variável vale_ac:
vale_ac <- cumprod(vale_um)

Vamos então armazenar uma variável com o retorno acumulado:
ret_acum <- vale_ac – 1

Vamos juntar tudo com o mutate(), lembrando que precisamos primeiro acessar o data frame com os retornos mensais:
VALE3_rmensal %>%

  mutate(vale_um) %>%

  mutate(ret_acum) %>%

  ggplot(aes(x = date, y = ret_acum)) +

  geom_line() +

  labs(x = “Data”, y = “Retorno Acumulado”, title = “VALE3”, subtitle = “VALE S.A”)+

  theme_gdocs()

ações da vale programa r

Feito! Obtivemos um fator de retorno acumulado de aproximadamente 2.02, logo para cada 1 real investido em Vale em 2010,  teríamos aproximadamente R$2,02 hoje.

Calculando os retornos acumulados de dois ativos juntos no R

É comum vermos gráficos financeiros com duas séries de retornos acumulados ao longo do tempo, com a óbvia intenção de comparar o retorno acumulado de dois ativos. Para o nosso texto, importaremos a série histórica das ações da Petrobras (PETR4) e da Magazine Luiza (MGLU3).

Importando os dados das ações

acoes <- c(“PETR4.SA”, “MGLU3.SA”)

df_acoes <- tq_get(acoes,

                   from = “2010-01-01”,

                   to = Sys.Date(),

                   get = “stock.prices”)

Calculando os retornos mensais

retm_acoes <- df_acoes %>%

  group_by(symbol) %>%                             

  tq_transmute(select = adjusted,

               mutate_fun = periodReturn,

               period = ‘monthly’,

               col_rename = ‘retornosm’)

Calculando os retornos acumulados

A ideia para calcular o retorno acumulado é praticamente a mesma, novamente usaremos a função cumprod(). Dessa vez, como estamos tratando de duas séries, usaremos o group_by(symbol) para dividir as séries e colocaremos as expressões após o pipe:

retm_acoes %>%

  group_by(symbol) %>% 

  mutate(acoes_ac = cumprod(1 + retornosm)) %>%

  mutate(ret_acum_acoes = acoes_ac – 1) %>%

  ggplot(aes(x = date, y = ret_acum_acoes, color = symbol)) +

  geom_line() +

  labs(x = “Data”, y = “Retorno Acumulado”, title = “Retornos Acumulados desde 2010”, subtitle = “PETR4 e MGLU3”)+

  theme_gdocs()

 

gráfico ações vale

Quem investiu no Magazine Luiza em 2010 obteve um retorno de quase 40x sobre o capital investido, o investidor da Petrobras obteve um retorno próximo de zero.

Conclusão

O cálculo dos retornos de ações é uma das atividades mais essenciais que podemos desempenhar com o R. É base para realizarmos estudos de ativos, rebalanceamento de portfólios e backtest de estratégias.

Para o texto, escolhi uma solução com base no tidyquant, até para facilitar a compreensão dos próximos textos.  Nas referências deixo uma solução sem o uso do mesmo (CHUNG, 2019). 

Agora que já sabemos como calcular os retornos, veremos no próximo artigo da série como recriar o modelo de precificação de ativos (CAPM) no R, a partir de bibliotecas estatísticas.

Referências

Dancho, M. (2018, May 9). Package ‘tidyquant’. Acesso em 07/09/2021 de cran.rproject.org: https://cran.r-project.org/web/packages/tidyquant/tidyquant.pdf

Ryan, Jeffrey A., Joshua M. Ulrich, Wouter Thielen, Paul Teetor, Steve Bronder, and Maintainer Joshua M. Ulrich. Package ‘quantmod’. Available online: https://cran.r-project.org/web/packages/quantmod/quantmod.pdf (acesso em 22 de agosto de August 2021). 2020

Kumar, Manoj (2015). Stock Return Calculations in R. Acesso em 08/09/2021 de RPubs rstudio-pubs-static.s3.amazonaws.com

DD (2018). How to calculate stock returns in R. Acesso em 08/09/2021 de coding finance. Disponível em: https://www.codingfinance.com/post/2018-04-03-calc-returns/

Chung, Víctor (2019). CAPM. Acesso em 08/09/2021 de RPubs. Disponível em: https://rpubs.com/vchung/capm_USMP

Estudante de Economia na UFPE

Aprenda tudo sobre contabilidade

E-BOOK

Aprenda tudo sobre contabilidade

Neste e-book — “Contabilidade”, trazemos informações e conceitos importantes sobre contabilidade financeira.

Receba todas as novidades do TC

Deixe o seu contato com a gente e saiba mais sobre nossas novidades, eventos e facilidades.

Receba todas as novidades do TC

Deixe o seu contato com a gente e saiba mais sobre nossas novidades, eventos e facilidades.