आर

2014-08-28 5 views
6

का उपयोग कर जोखिम (वीएआर) पर रोलिंग वैल्यू का आकलन मुझे दैनिक स्टॉक रिटर्न के रोलिंग वीएआर अनुमान लगाने की आवश्यकता है।आर

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

से डाउनलोड किया जा सकता किसी को भी कर सकते हैं तो कृपया मुझे हल करने और इस मुद्दे को समझने में मदद?

उत्तर

0

1) हम इस प्रकार की चेतावनी केवल VaR का उपयोग कर पुन: पेश कर सकते हैं:

> VaR(R = edhec[seq(25, length=60), 5], p = .95, method = "modified", invert = TRUE) 
VaR calculation produces unreliable result (inverse risk) for column: 1 : -0.000203691774704274 
    Equity Market Neutral 
VaR     NA 

एक अलग method= का उपयोग करें।

> VaR(R = edhec[seq(25, length=60), 5], p = .95, method = "gaussian", invert = TRUE) 
    Equity Market Neutral 
VaR   -0.001499347 

2)"gaussian" के साथ मैं अभी भी सेट वास्तविक डेटा लेकिन कोई त्रुटि पर चेतावनी मिल गया। अन्य "method" तर्क मानों के साथ प्रयोग करने का प्रयास करें जो भी उपलब्ध हैं। ?VaR देखें।

3) ध्यान दें कि by.column = TRUE को डिलीट किया जा सकता है क्योंकि यह डिफ़ॉल्ट है।

+0

मुझे संशोधित वीएआर का उपयोग करने की आवश्यकता है क्योंकि यह वीएआर का अनुमान लगाने के दौरान स्केवनेस और कुर्टोसिस को अतिरिक्त पैरामीटर के रूप में मानता है। प्रश्न में समझाया गया है कि रोलिंग अनुमान पूरा होने पर असली समस्या उभरती है। –

+0

'फ़ंक्शन (x) VaR (...)' को 'फ़ंक्शन (x) {out <- try (VaR (...)) के साथ बदलने का प्रयास करें; अगर (विरासत (बाहर, "कोशिश-त्रुटि")) एनए और बाहर} 'इसे किसी त्रुटि से रोकने से बचने के लिए। –

+0

क्षमा करें, कोई भाग्य नहीं। वही त्रुटि –

1

समस्या यह है कि कभी-कभी 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 

मैं NaN reaonableness जांच के माध्यम से पारित करने के लिए अनुमति देने के लिए आर-फोर्ज (r3525) पर PerformanceAnalytics करने के लिए एक पैच के लिए प्रतिबद्ध है।

+0

स्पष्टीकरण के लिए बहुत बहुत धन्यवाद। –