gpt4 book ai didi

r - 使用 R 估计滚动风险值(value) (VaR)

转载 作者:行者123 更新时间:2023-12-02 22:31:01 25 4
gpt4 key购买 nike

我需要对每日股票 yield 进行滚动 VaR 估计。一开始我做了以下事情:

library(PerformanceAnalytics)
data(edhec)
sample<-edhec[,1:5]
var605<-rollapply(as.zoo(sample),width=60,FUN=function(x) VaR(R=x,p=.95,method="modified",invert=T),by.column=TRUE,fill=NA)

它执行计算并返回一个动物园对象,但给出一系列警告,如下所示:

VaR calculation produces unreliable result (inverse risk) for column: 1 : -0.00030977098532231 

然后,我对数据样本进行了相同的尝试,如下所示:

library(foreign)
sample2 <- read.dta("sample2.dta")
sample2.xts <- xts(sample2[,-1],order.by=as.Date(sample2$datadate,format= "%Y-%m-%d"))
any(is.na(sample2.xts))
var605<-rollapply(as.zoo(sample2.xts),width=60,FUN=function(x) VaR(R=x,p=.95,method="modified",invert=T),by.column=TRUE,fill=NA)

但是不会返回任何动物园对象并给出以下警告和错误:

VaR calculation produces unreliable result (inverse risk) for column: 1 : -0.0077322590200255
Error in if (eval(tmp < 0)) { : missing value where TRUE/FALSE needed
Called from: top level

从之前的文章 ( Using rollapply function for VaR calculation using R ) 中,我了解到如果缺少完整的滚动窗口,则无法执行滚动估计,但在我的数据 (sample2.dta) 中没有缺失值。

sample2.dta可以从https://drive.google.com/file/d/0B8usDJAPeV85WDdDQTFEbGQwaUU/edit?usp=sharing下载

有人可以帮我解决和理解这个问题吗?

最佳答案

问题在于,有时 60 周期窗口内的数据没有变化。

R> no_var <- rollapply(sample2.xts, 60, sd, by.column=TRUE)
R> any(no_var==0)
[1] TRUE
R> head(no_var[-(1:60),])
001034 001038 001055 001066 001109
1984-03-26 -0.0003322471 -0.0001498238 0 -0.0111818465 0
1984-03-27 -0.0003322471 -0.0001498238 0 0.0002076288 0
1984-03-28 -0.0003322471 -0.0545102488 0 0.0092900768 0
1984-03-29 -0.0199407074 -0.0565552432 0 -0.0183491390 0
1984-03-30 0.0192762133 -0.0023488011 0 0.0000000000 0
1984-04-02 -0.0003322471 0.0000000000 0 0.0560894683 0

我已向 R-Forge (r3525) 上的 PerformanceAnalytics 提交了一个补丁,以允许 NaN 通过合理性检查。

关于r - 使用 R 估计滚动风险值(value) (VaR),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25547152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com