Почему метод VaR в пакете PerformanceAnalytics R возвращает ошибку «Вычисление VaR приводит к ненадежному результату»

#r #var #performanceanalytics

Вопрос:

МОЙ КОД R:

 library(PerformanceAnalytics)

prices <- c(10.4, 11, 10.11, 9.19, 10.63, 9.68, 12.89, 9.8, 12.57, 8.23, 9.27,
            9.51, 10.51, 9.66, 9.52, 10.78, 9.47, 11.87, 11.33, 11.38, 11.16, 
            8.94)

returns <- diff(prices)

print(returns)

VaR(returns, p=.95, method="historical")
VaR(returns, p=.95, method="gaussian")
VaR(returns, p=.95, method="modified")
 

ВЫВОД:

 print(returns)
 [1]  0.60 -0.89 -0.92  1.44 -0.95  3.21 -3.09  2.77 -4.34  1.04  0.24  1.00 -0.85 -0.14  1.26
[16] -1.31  2.40 -0.54  0.05 -0.22 -2.22

VaR(returns, p=.95, method="historical")
VaR calculation produces unreliable result (risk over 100%) for column: 1 : 3.09
    [,1]
VaR   -1

VaR(returns, p=.95, method="gaussian")
VaR calculation produces unreliable result (risk over 100%) for column: 1 : 3.03916083148501
    [,1]
VaR   -1

VaR(returns, p=.95, method="modified")
VaR calculation produces unreliable result (risk over 100%) for column: 1 : 3.1926697487747
    [,1]
VaR   -1
 

Первый аргумент описывается в справке как
«xts, ВЕКТОР, матрица, фрейм данных, временные ряды или объект zoo для ВОЗВРАТА активов».

В чем проблема? В чем же ошибка?

Ответ №1:

Попробуйте рассчитать возврат журнала, а затем VaR

 returns <- diff(log(prices))
VaR(returns, p = 0.95, method = "historical")
 

Также проверьте функцию ES (Ожидаемый дефицит) из библиотеки PerformanceAnalytics.
По моему личному мнению, это намного лучше, чем ВаР.

Ответ №2:

Это также сработало при рассмотрении процентной доходности.

 returns <- rep(NA, length(prices) - 1)
for (i in 1:length(returns))
  returns[i] <- (prices[i 1]-prices[i])/prices[i]