Analisando a performance de ativos financeiros

Sabe-se muito bem que a escolha de ativos financeiros pode ser considerada difícil, afinal, o processo acaba seguindo alguns passos complicados, que talvez muitas pessoas não dominem: definir o objetivo de investimento; escolher a classe de ativos; a política de investimento; definir a forma de alocação dos ativos e por fim, a definição de técnicas para a avaliação de performance dos ativos financeiros escolhidos. Sabe-se que cada pessoa possui formas e gostos diferentes de investir, porém, técnicas de avaliação podem (e devem) superar a subjetividade. No post de hoje mostraremos como podemos simplificar esse processo de avaliação no R.

Assim como nos últimos posts, trabalharemos com quatro ações, apenas para exemplificar o processo. Também trabalharemos com o índice bovespa e com uma taxa de juros livre de risco. Nessa primeira parte iremos coletar o preços e transformar em retornos.

library(quantmod)
library(timetk)
library(tidyverse)
library(PerformanceAnalytics)
library(Hmisc)

 

 

</pre>
# Define os ativos que irão ser coletados

tickers <- c("PETR4.SA", "ITUB4.SA", "ABEV3.SA", "JBSS3.SA")

# Define a data de início da coleta

start <- "2020-12-01"

# Realiza a coleta dos preços diários

prices <- getSymbols(tickers,
auto.assign = TRUE,
warnings = FALSE,
from = start,
src = "yahoo") %>%
map(~Cl(get(.))) %>%
reduce(merge) %>%
`colnames<-`(tickers)

# Transfroma os preços diários em mensais

prices_monthly <- to.monthly(prices,
indexAt = "lastof",
OHLC = FALSE)

# Calcula os retornos mensais

asset_returns <- Return.calculate(prices_monthly,
method = "log") %>%
na.omit()

# Coleta os dados do ibovespa

getSymbols("^BVSP",
warnings = FALSE,
from = start,
src = "yahoo")

# Calcula os retornos mensais

bvsp_returns <- Ad(BVSP) %>%
to.monthly(indexAt = "lastof",
OHLC = FALSE) %>%
Return.calculate(method = "log") %>%
na.omit() %>%
`colnames<-`("ibovespa")

# Define taxa de juros livre de risco

rf <- 0.0925/12
<pre>

Feito a coleta e tratamento de dados, podemos enfim analisar nossas escolhas de ativos, mas antes, iremos criar uma função para que possamos exportar nossos resultados do R para uma imagem.

</pre>
# Cria uma função para transformar os resultados de um data frame para texto

df_to_text <- function (result){
textplot(format.df(t(result), na.blank = TRUE, numeric.dollar = FALSE,
cdec = c(3,3,1)), rmar = 0.8, cmar = 2, max.cex = 9,
halign = "center", valign = "top", row.valign = "center",
wrap.rownames = 20, wrap.colnames = 10,
col.rownames = c(rep("darkblue", 5), rep("orange", 2)),
mar = c(0, 0, 3, 0)+ 0.1)
}
<pre>

 

A análise dos ativos são facilitadas pelas funções do tipo table. do pacote PerformanceAnalytics{}. A primeira que podemos utilizar será a table.Stats, que fornece as estatísticas básicas dos nossos ativos.

</pre>
# Resultados estatísticos dos ativos

statistic_result <- table.Stats(asset_returns, digits = 3)

df_to_text(statistic_result)

title(main = list("Estatística dos ativos", cex = 1.5, col = "darkblue"))
<pre>

Veja que é retornado diversas informações estatísticas, desde o número de observações, até a assimetria e curtose, cada um com sua devida interpretação.

Outra função de performance se encontra na table.AnnualizedReturns(), que demonstra o retorno, o desvio padrão e o Índice de Sharpe anualizado.


# Resultados das métricas de performance

performance_result <- table.AnnualizedReturns(asset_returns, Rf = rf, digits = 2)


df_to_text(performance_result)

title(main = list("Performance dos ativos", cex = 2, col = "darkblue"))

Por fim, podemos avançar mais nas técnicas utilizadas, sendo possível ver resultados obtidos pelo Capital Asset Pricing Model.


# Resultados do CAPM

capm_result <- table.CAPM(asset_returns, bvsp_returns, Rf = rf, digits = 2)

df_to_text(capm_result)

title(main = list("CAPM", cex = 2, col = "darkblue"))


Existem diversas outras funções úteis da família table. do pacote PerformanceAnalytics{}, tais como table.DownsideRisk(), table.Drawdowns() e também a função table.Arbritary(), que permite montar, a gosto de cada um, um data frame com os resultados.

 

________________________

(*) Para entender mais sobre Mercado Financeiro e medidas de risco, 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

Como Construir um Monitor de Política Monetária Automatizado com Python?

Descubra como transformar dados do Banco Central em inteligência de mercado com um Monitor de Política Monetária Automatizado. Neste artigo, exploramos o desenvolvimento de uma solução híbrida (Python + R) que integra análise de sentimento das atas do COPOM, cálculo da Regra de Taylor e monitoramento da taxa Selic. Aprenda a estruturar pipelines ETL eficientes e a visualizar insights econômicos em tempo real através de um dashboard interativo criado com Shiny, elevando o nível das suas decisões de investimento.

Qual o efeito de um choque de juros sobre a inadimplência?

Neste exercício, exploramos a relação dinâmica entre o custo do crédito (juros na ponta) e o risco realizado (taxa de inadimplência) através de uma análise exploratória de dados e modelagem econométrica utilizando a linguagem de programação R.

Qual a relação entre benefícios sociais e a taxa de participação do mercado de trabalho?

Este exercício apresenta uma investigação econométrica sobre a persistente estagnação da taxa de participação no mercado de trabalho brasileiro no período pós-pandemia. Utilizando a linguagem R e dados públicos do IBGE e Banco Central, construímos um modelo de regressão linear múltipla com correção de erros robustos (Newey-West). A análise testa a hipótese de que o aumento real das transferências de renda (Bolsa Família/Auxílio Brasil) elevou o salário de reserva, desincentivando o retorno à força de trabalho.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

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.