Capital Asset Pricing Model (CAPM) no R

Hoje vamos dar continuidade aos nossos estudos em introdução à programação com R. Nossa série já possui diversos textos sobre o assunto, vale a pena conferir na categoria “Quant & Investimentos” e acompanhar a série completa.
Curso de Introdução ao R
Chegamos a mais um texto da nossa série de Introdução ao R. Confira os textos anteriores:
- Introdução ao R: primeiros passos com o RStudio – TC
- Programação em R: operações matemáticas básicas
- R: Operações com Vetores
- Criando Matrizes no R
- R: Criando seu primeiro Data Frame
- Importando e visualizando dados de ações no R
- Calculando os retornos das ações no R
No texto de hoje, vamos aprender como utilizar o pacote PerformanceAnalytics para aplicar o Capital Asset Pricing Model — CAPM com o R. Também vamos calcular o beta através de uma regressão linear na segunda parte do texto.
O modelo de precificação de ativos é um método que analisa a relação entre o fator de risco sistemático e o retorno esperado de um determinado ativo. Para facilitar sua leitura, separei o artigo nos seguintes tópicos:
- Modelo CAPM
- Calculando o CAPM com o R
- Conclusão
Modelo CAPM com o R
O modelo CAPM (Capital Asset Pricing Model) é um modelo usado para determinar o retorno esperado teórico de um ativo, ou melhor, a taxa de retorno esperada que é apropriada para um dado nível de risco de determinado ativo.
A equação que calcula o retorno esperado de um ativo através do modelo CAPM está exposta na equação 1 a seguir:
Em que:
- E [Ri] é o retorno esperado do ativo i;
- βi é o beta do ativo i;
- Rf é o retorno da taxa livre de risco;
- E [Rm] é o retorno esperado do mercado;
- E [Rm] – Rf é o Prêmio de Risco de Mercado.
Nosso objetivo ao final do modelo é obter o retorno esperado do ativo i, mas para isso, precisaremos da taxa livre de risco, do beta e do retorno esperado do mercado.
A taxa livre de risco é calculada a partir de um investimento com o menor grau de risco no mercado de renda fixa. No exemplo a seguir utilizaremos a taxa Selic.
Vamos calcular cada uma das variáveis por métodos diferentes.
Calculando o CAPM com o R
Antes de iniciar o modelo de regressão, apresentado na equação 2, precisamos instalar alguns pacotes e carregar algumas bibliotecas no R.
Para estimar o modelo de regressão, vamos importar as seguintes bibliotecas:
- tidyquant
- tidyverse
- PerformanceAnalytics
- dplyr
Preparação
Assim como no texto passado, vamos usar a biblioteca tidyquant, com a adição do pacote PerformanceAnalytics, fundamental para o cálculo do CAPM com o R.
Tidyquant
O tidyquant integra uma série de pacotes fundamentais para trabalharmos com dados financeiros: zoo, xts, quantmod, TTR, ggplot2 e PerformanceAnalytics.
PerformanceAnalytics
O pacote PerformanceAnalytics integra uma série de funções econométricas focadas em análise de risco. Com o pacote, podemos calcular o CAPM através de apenas uma função.
Dplyr
O pacote dplyr integra uma série de funções econométricas focadas em análise de risco. Com o pacote, podemos calcular o CAPM através de apenas uma função.
Instalando os pacotes necessários e importando as bibliotecas
Novamente, vamos usar a função install.packages() para instalar pacotes e a função library() para carregá-los:
> install.packages(“tidyquant”)
> install.packages(“PerformanceAnalytics”)
> library(tidyquant)
> library(“PerformanceAnalytics”)
Baixando os dados
Antes de baixar as ações, vamos criar um vetor contendo o ticker de cada uma delas. Como iremos utilizar os dados do Yahoo Finance, todos os tickers devem ser seguidos de S.A:
acoes_v <- c(“MGLU3.SA”, “WEGE3.SA”, “POSI3.SA”, “WIZS3.SA”)
Para baixar os dados das ações e obter os retornos dos ativos, novamente vamos utilizar a função tq_get(), presente no pacote tidyquant. Os dados ficarão armazenados na variável “acoes_df”.
acoes_df <- tq_get(acoes_v,
from = “2012-08-05”,
to = Sys.Date(),
get = “stock.prices”) %>%
group_by(symbol)
Baixei os dados desde 05/08/2021, pois assumi a taxa livre de risco como sendo o CDI (5.25%).
Como vimos na fórmula, precisaremos do retorno esperado do ativo i, do retorno do mercado e do retorno da taxa livre de risco. Como estamos com um vetor com 4 ações diferentes, a saída final do CAPM nos dará o resultado para cada um deles. Vamos então chamar a variável que armazenará o retorno das ações de Ri.
Ri <- acoes_df %>%
tq_transmute(select = adjusted,
mutate_fun = periodReturn,
period = “daily”,
col_rename = “Ri”)
Note que como usaremos um período curto, de pouco mais de um mês, preferi coletar os retornos diários (“daily”).
Agora vamos armazenar os retornos do benchmark de mercado na variável Rm. É importante que os dados estejam no mesmo intervalo temporal, começando e terminando no mesmo dia:
Rm <- “^BVSP” %>%
tq_get(get = “stock.prices”,
from = “2021-08-05”,
to = Sys.Date()) %>%
tq_transmute(select = adjusted,
mutate_fun = periodReturn,
period = “daily”,
col_rename = “Rm”)
Manipulando e organizando os dados
Como você pode observar, baixamos e organizamos os dados nos seguintes data frames:
Vamos remover a primeira linha do data frame Ri, pois devemos ter o mesmo intervalo em ambos dos data frames.
> Ri <- Ri[-1,]
Outra função útil é a na.omit(), com ela podemos varrer os conjuntos de dados nulos que aparecem em nosso data frame.
Ri <- na.omit(Ri)
Rm <- na.omit(Rm)
Vamos juntar os dois conjuntos de dados em um só data frame, para isso, usaremos uma função do pacote dplyr, a “left_join()”. Note que apenas uma coluna é igual nos dois data frames, vamos então juntar os dois data frames pela coluna “date”:
RiRm <- left_join(Ri, Rm, by = c(“date” = “date”))
Veja como ficou o nosso data frame:
Obtendo a tabela do CAPM com o R pela função tq_performance
Vamos então obter a tabela do CAPM através da função tq_performance. No primeiro argumento colocaremos nosso data frame RiRm. No segundo o retorno dos ativos, no terceiro o retorno de mercado, e no quarto o retorno da taxa livre de risco. Note que todos são retornos diários.
tq_performance(RiRm, Ri, Rm, Rf = 0.0525/252, performance_fun = table.CAPM)
Feito! Obtivemos a tabela do CAPM que contém informações individuais dos nossos ativos.
A primeira vista, recebemos o alfa, o beta e a correlação de tais ativos em relação ao seu benchmark (e sua taxa livre de risco). Lembrando que ainda não estamos falando de retornos de um portfólio e sim analisando cada um dos ativos individualmente.
Calculando o Beta de outra forma
Outra forma de obter o beta, seja de uma ação ou de um portfólio, é dividir a covariância do retorno dos ativos e do retorno do mercado pela variância do retorno do mercado:
Para facilitar o cálculo, vamos analisar só o beta das ações da Weg no período:
acao <- tq_get(“WEGE3.SA”,
from = “2021-08-05”,
to = Sys.Date(),
get = “stock.prices”) %>%
group_by(symbol)
Vamos novamente criar um novo data frame:
Ri <- acao %>%
tq_transmute(select = adjusted,
mutate_fun = periodReturn,
period = “daily”,
col_rename = “Ri”)
Juntar os dois:
RiRm <- left_join(Ri, Rm, by = c(“date” = “date”))
Ajustar os dados removendo a primeira linha:
RiRm <- RiRm[-1,]
Ficamos com este data frame, vamos agora calcular o beta da Weg. As funções cov() e var() calculam a covariância e a variância respectivamente:
Beta_Weg <- cov(RiRm$Ri,RiRm$Rm)/var(RiRm$Rm)
> Beta_Weg
[1] 0.8088327
Note que o valor do beta pela tabela do CAPM está abreviado, por isso não são exatamente iguais.
Dito isso, temos um beta no valor de 0,808833, evidenciando que as ações da WEGE3 foram menos voláteis que o benchmark no período observado.
Sendo assim, temos a equação 2 do modelo CAPM com o R para o ativo WEGE3, como se vê a seguir:
Fixando os valores da taxa livre de risco e do valor esperado do retorno do mercado, podemos calcular o retorno esperado para o ativo WEGE3. Esse valor esperado representa o custo de capital exigido como taxa de desconto.
Conclusão
É importante ressaltar que utilizamos um conjunto de dados pequeno, e que os valores tanto do beta quanto do alfa podem estar distantes dos reais para os ativos aqui mencionados. O objetivo do texto foi mostrar de forma simples como podemos calcular o CAPM com o R.
No próximo artigo, vamos ver como construir um portfólio e calcular seus principais índices.

E-BOOK
Aprenda tudo sobre contabilidade
Neste e-book — “Contabilidade”, trazemos informações e conceitos importantes sobre contabilidade financeira.
Artigos relacionados
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.