R语言PerformanceAnalytics包VaR函数返回计算结果不可靠错误排查
VaR报错原因及代码修正方案
报错根本原因
- 你传入
VaR()函数的是价格绝对差分,不符合函数对入参为相对收益率的要求 PerformanceAnalytics包的VaR()内置校验规则:普通多头资产的最大损失不会超过100%,即收益率不会低于-1。你计算得到的95%置信度VaR绝对值超过1,触发了「风险超过100%」的不可靠结果校验,因此返回兜底值-1并抛出警告。
代码问题修复
只需将绝对差分计算改为相对收益率计算即可,两种常用计算方式任选:
简单收益率
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 <- ROC(prices, type = "discrete") # 手动计算等价写法:returns <- diff(prices)/head(prices, -1) # 计算VaR不会再触发警告 VaR(returns, p=.95, method="historical") VaR(returns, p=.95, method="gaussian") VaR(returns, p=.95, method="modified")
对数收益率
# 仅需修改收益率计算逻辑即可 returns <- ROC(prices, type = "continuous") # 手动计算等价写法:returns <- diff(log(prices))
内容的提问来源于stack exchange,提问作者Ciniro Nametala
相关产品推荐
相关产品推荐

