Olá caros leitores, através deste blog tenho o intuito de compartilhar com vocês insights, modelos estatísticos em linguagem R, além de uma boa dose de reflexões próprias sempre com ênfase no mercado de capitais. Como primeiro passo deste pequeno projeto pessoal (ppp) compartilho com vocês um dos meus primeiros scripts no Rstudio, no qual tenho a finalidade de selecionar uma pequena carteira de ações e calcular os principais indicadores que envolvem a construção de um portfólio, tal como retorno acumulado, drawdown, desvio padrão dos retornos e entre outros.
install.packages("data.table")
install.packages("quantmod")
install.packages("PerformanceAnalytics")
install.packages("TTR")
library(data.table)
library(quantmod)
library(PerformanceAnalytics)
library(TTR)
install.packages("dplyr")
install.packages("PortfolioAnalytics")
library(PortfolioAnalytics)
library(dplyr)
#Primeiro passo é instalar ou ativar as bibliotecas necessárias para a utilização das funções existentes .
#Segundo passo deste modelo simples é definir pela variável tickers e weights os ativos que visamos analisar e os pesos na carteira.
#Isso é feito através da atribuição de um vetor que é um tipo de variável (caixinha) que comporta apenas 1 tipo de elemento.
tickers <- c("ITSA4.SA", "EGIE3.SA", "WEGE3.SA", "KLBN11.SA")
weights <- c(.25, .25, .25, .25)
#Terceiro passo é puxar os dados pela fonte de dados
portfolioprices <- NULL
for(Ticker in tickers) #Para isso é necessário pegar a variável tickers e colocar em loop para automatizar a linha de código abaixo para todos os ativos.
portfolioprices <- cbind(portfolioprices,
getSymbols.yahoo(Ticker,from = "2010-01-01",to="2020-05-06",periodicity = "monthly", auto.assign=FALSE)[,4])
portfolioreturns <- na.omit(ROC(portfolioprices, type = "discrete"))
# A função Rate of change (ROC) serve para calcular a taxa de variação em uma serie de dados em x períodos.
#Calcular o índice de referêcia para fazer a comparação com a carteira
benchmarkvalue <- getSymbols.yahoo("BOVA11.SA",from = "2010-01-01",to="2020-05-06",periodicity = "monthly", auto.assign=FALSE)[,4]
benchmarkreturn <- na.omit(ROC(benchmarkvalue, type = "discrete"))
#Calcular retorno do portfólio e plotando gráficos modafocas
Carteiraretorno <- Return.portfolio(portfolioreturns,weights = weights)
# Usando o serie de dados no tempo e determinando pesos para cada ativo, essa função calcula o retorno do portfólio na mesma periodicidade do retorno dos dados.
CAPM.beta(portfolioreturns, benchmarkreturn, Rf=5/12)
# A função capm.beta usado para identificar o potencial de diversificação, pois verifica o grau de sensibilidade dos ativos em relação ao mercado.
CAPM.jensenAlpha(portfolioreturns,benchmarkreturn,5/12)
# Essa função jensen alpha é o intercepto da equação de regressão de uma CAPM e é o efeito do excesso retorno ajustado para o risco sistemático.
table.AnnualizedReturns(portfolioreturns)
# Essa função calcula o retorno anualizado, desvio padrão anualizado, relação risco-retorno anualizado
table.CalendarReturns(portfolioreturns) #Retorna os retornos por mês e ano, com o total no final
charts.PerformanceSummary(Carteiraretorno, Rf= 5/12, main = "Carteira By Pablo", geometric = TRUE)
# Retorna gráficos de retorno acumulado, retorno mensal e drawdown
OBS: Para o script funcionar utilize o Rstudio.
Alguma dúvida, sugestão ou pedidos fique a vontade. Obrigado caro leitor até a próxima.
att,
Pablo Amaral
Comentários
Postar um comentário
Se você tem alguma dúvida deixe-me saber