O Historical Value at Risk é um método de calculo para mensurar da perda monetária de um determinado portfólio, utilizando como base os valores passados dos ativos e de seus respectivos retornos, criando uma série de Profits e Losses (P&L) que é tomada a um dado nível de intervalo para mensurar a perda potencial.
Assim como o Gaussian Value at Risk, o método Historical é uma das formas mais simples para se calcular o VaR. A diferença é que para o segundo método é necessário que haja mais dados. Neste post, iremos coletar dados de 4 ações para compor nosso portfólio, com dados diários de 1 de janeiro de 2013 até o dia atual.
Primeiro carregamos os pacotes, coletamos os preços e transformamos em retornos.
library(tidyquant) library(timetk) library(tidyverse)
# 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 <- "2012-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) # Calcula os retornos mensais asset_returns <- Return.calculate(prices, method = "log") %>% na.omit()
Estaremos então interessados em conhecer o valor diário dos nossos ativos dentro do nosso portfólio. Podemos fazer isso através da função Return.portfolio(). A função calcula o retorno do nosso portfólio com base nos retornos dos nossos ativos. Por padrão, a função considera que temos um portfólio com pesos iguais (que é o que utilizaremos aqui, cada ativo terá o peso de 25%). Se utilizarmos o argumento verbose = TRUE, a função também calcula o peso e os valores dos ativos ao longo do tempo.
Suponha então que nosso portfólio possuía um valor monetário de 4563 no primeiro dia, a função retornará uma lista com os retornos do portfólio, os pesos dos ativos e os valores monetários ao longo do tempo.
# Calcula o retorno do portfolio portfolio_returns <- Return.portfolio(asset_returns, verbose = TRUE, value = 4563) # Calcular o valor value <- portfolio_returns$EOP.Value * asset_returns p_l <- value[,1] + value[,2] + value[,3] + value[,4] p_l <- `colnames<-`(p_l, "pl") var_01_historical <- quantile(-p_l$pl, 0.99) var_05_historical <- quantile(-p_l$pl, 0.95)
Calculamos o P&L como a soma dos valores diários dos ativos ponderados pelos seus respectivos retornos. Por fim, calculamos o quartil para o intervalo de confiança em 99% ou 95%.
________________________
(*) Para entender mais sobre Mercado Financeiro e medidas de risco, confira nosso curso de R para o Mercado Financeiro.
________________________