विदेशी मुद्रा की कीमतों का अनुकरण करने के लिए ARMA-GARCH मॉडल का उपयोग करना


10

मैंने एक ARIMA (1,1,1) -GARCH (1,1) मॉडल को AUD / USD विनिमय दर की समय श्रृंखला के लिए मॉडल किया है, जो कई वर्षों के दौरान एक-एक मिनट के अंतराल पर सैंपल की गई कीमतों को दो से अधिक प्रदान करता है। जिस पर मॉडल का अनुमान लगाने के लिए लाखों डेटा पॉइंट। डेटासेट यहां उपलब्ध है । स्पष्टता के लिए, यह ARMA-GARCH मॉडल था जिसे लॉग कीमतों के पहले-क्रम एकीकरण के कारण रिटर्न लॉग करने के लिए फिट किया गया था। मूल AUD / USD समय श्रृंखला इस प्रकार दिखती है:

यहां छवि विवरण दर्ज करें

मैंने तब फिट किए गए मॉडल के आधार पर एक टाइम सीरीज़ का अनुकरण करने का प्रयास किया, जिससे मुझे निम्नलिखित जानकारी मिली:

यहां छवि विवरण दर्ज करें

मैं दोनों की उम्मीद करता हूं कि नकली श्रृंखला श्रृंखला मूल श्रृंखला से अलग होनी चाहिए, लेकिन मैं इतने महत्वपूर्ण अंतर की उम्मीद नहीं कर रहा था। संक्षेप में, मैं चाहता हूं कि सिम्युलेटेड श्रृंखला मूल की तरह व्यवहार या व्यापक रूप से दिखे।

यह आर कोड है जिसका उपयोग मैंने मॉडल का अनुमान लगाने और श्रृंखला का अनुकरण करने के लिए किया था:

library(rugarch)
rows <- nrow(data)
data <- (log(data[2:rows,])-log(data[1:(rows-1),]))
spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1, 1), include.mean = TRUE), distribution.model = "std")
fit <- ugarchfit(spec = spec, data = data, solver = "hybrid")
sim <- ugarchsim(fit, n.sim = rows)
prices <- exp(diffinv(fitted(sim)))
plot(seq(1, nrow(prices), 1), prices, type="l")

और यह अनुमान आउटपुट है:

*---------------------------------*
*          GARCH Model Fit        *
*---------------------------------*

Conditional Variance Dynamics   
-----------------------------------
GARCH Model : sGARCH(1,1)
Mean Model  : ARFIMA(1,0,1)
Distribution    : std 

Optimal Parameters
------------------------------------
        Estimate  Std. Error     t value Pr(>|t|)
mu      0.000000    0.000000   -1.755016 0.079257
ar1    -0.009243    0.035624   -0.259456 0.795283
ma1    -0.010114    0.036277   -0.278786 0.780409
omega   0.000000    0.000000    0.011062 0.991174
alpha1  0.050000    0.000045 1099.877416 0.000000
beta1   0.900000    0.000207 4341.655345 0.000000
shape   4.000000    0.003722 1074.724738 0.000000

Robust Standard Errors:
        Estimate  Std. Error   t value Pr(>|t|)
mu      0.000000    0.000002 -0.048475 0.961338
ar1    -0.009243    0.493738 -0.018720 0.985064
ma1    -0.010114    0.498011 -0.020308 0.983798
omega   0.000000    0.000010  0.000004 0.999997
alpha1  0.050000    0.159015  0.314436 0.753190
beta1   0.900000    0.456020  1.973598 0.048427
shape   4.000000    2.460678  1.625568 0.104042

LogLikelihood : 16340000 

मैं अपने मॉडलिंग और सिमुलेशन को बेहतर बनाने के लिए किसी भी मार्गदर्शन की सराहना करता हूं, या मैंने जो भी त्रुटियां की हैं, उनमें कोई अंतर्दृष्टि। ऐसा प्रतीत होता है जैसे कि मॉडल का अवशिष्ट मेरे सिमुलेशन प्रयास में शोर शब्द के रूप में उपयोग नहीं किया जा रहा है, हालांकि मुझे यकीन नहीं है कि इसे कैसे शामिल किया जाए।


1
हाय जेफ़! आपको संभावित सहायकों को अपना डेटा (या कम से कम प्रतिनिधि नमूना) भी प्रदान करना चाहिए। इसके अलावा, आपके नमूना कोड में आपके द्वारा उपयोग किए जाने वाले पैकेज (जहां ugarchspec()और ugarchsim()कार्य रहते हैं) शामिल नहीं हैं। सुनिश्चित करें कि जब भी आप यहाँ पर कोई प्रश्न पूछते हैं तो आपका कोड प्रतिलिपि प्रस्तुत करने योग्य होता है और यह "लोगों को आपकी सहायता करने में मदद करेगा"।
SavedByJESUS

आपकी सलाह के लिए धन्यवाद, @SavedByJESUS मैंने अपनी लाइब्रेरी को शामिल करने के लिए अपने पोस्ट को अपडेट किया है, और अपने डेटा के प्रारूप को स्पष्ट किया है।
जेफ

आपका नकली डेटा मूल श्रृंखला से अलग क्यों है इसका मुख्य कारण यह है कि फिट किया गया मॉडल, ARMA (1, 1, 1) GARCH (1, 1), आपके डेटा के लिए उपयुक्त मॉडल नहीं है। आपको पहले अपने मॉडल में सुधार करके शुरू करना चाहिए, फिर आपके बाद के सिमुलेशन आपके मूल डेटा के समान होंगे।
SavedByJESUS

जवाबों:


1

मैं विदेशी मुद्रा डेटा पूर्वानुमान के साथ काम कर रहा हूं और मुझे भरोसा है कि जब भी आप सांख्यिकीय पूर्वानुमान विधियों का उपयोग करते हैं तो यह ARMA, ARIMA, GARCH, ARCH आदि हो जाते हैं। वे हमेशा बिगड़ जाते हैं क्योंकि आप समय में बहुत आगे की भविष्यवाणी करने की कोशिश करते हैं। वे अगले एक या दो अवधि के लिए काम कर सकते हैं या नहीं, लेकिन निश्चित रूप से इससे अधिक नहीं। क्योंकि आप जिस डेटा के साथ काम कर रहे हैं, उसमें कोई ऑटो-सहसंबंध नहीं है, कोई प्रवृत्ति नहीं है और कोई मौसमी नहीं है।

आपसे मेरा प्रश्न, क्या आपने ARMA और GARCH का उपयोग करने से पहले ACF और PACF या ट्रेंड, सीज़न के लिए परीक्षण किए हैं? डेटा सांख्यिकीय पूर्वानुमान में उपर्युक्त गुणों के बिना काम नहीं करता है क्योंकि आप इन मॉडलों की मूल मान्यताओं का उल्लंघन कर रहे हैं।


आपकी टिप्पणी @JAbr के लिए धन्यवाद, लेकिन मैं वास्तव में पूर्वानुमान नहीं लगा रहा हूं। बल्कि, मेरा आवेदन कड़ाई से मनाया डेटा के रूप में एक ही सांख्यिकीय विशेषताओं के साथ एक वैकल्पिक मूल्य पथ का अनुकरण है।
जेफ

ठीक है, लेकिन अन्य वार्डों में आप वास्तव में गार्च मॉडल का उपयोग करके पूर्वानुमान लगा रहे हैं, यह नहीं है, आपके सिमुलेशन में गार्च का उपयोग होता है, और गार्च पूर्वानुमान के लिए अवलोकन का उत्पादन करता है।
JAbr

बिल्कुल, लेकिन आपने कहा है कि समय श्रृंखला मॉडल के पूर्वानुमान बिगड़ते हैं क्योंकि क्षितिज भविष्य में और विस्तारित होता है। मैं सुझाव दे रहा हूं कि मॉडल किसी एकल अवधि के क्षितिज पर अनुकरण (या पूर्वानुमान) करते हुए भी श्रृंखला की गतिशीलता को पर्याप्त रूप से कैप्चर नहीं करता है।
जेफ़

मैंने कहा "वे अगले एक या दो अवधि के लिए काम कर सकते हैं" मेरा बुरा, मुझे कहना चाहिए था या नहीं।
JAbr

0

मेरा सुझाव यह सुनिश्चित करना होगा कि आपके द्वारा चयनित मॉडल डेटा के लिए उपयुक्त है।

  • सुनिश्चित करें कि कोई चक्रीय या मौसमी घटक नहीं हैं।
  • यूनिट रूट की उपस्थिति का परीक्षण करने के लिए एक संवर्धित डिकी फुलर टेस्ट करें। अगर यूनिट रूट मौजूद है तो डेटा को अलग रखें जब तक कि ऑगमेंटेड डिकी फुलर टेस्ट बिना यूनिट रूट्स के मौजूद न हो। वैकल्पिक रूप से ऑटो सहसंबंध गुणांक का निरीक्षण करें, उन्हें स्थिरता के लिए कुछ समय के अंतराल के बाद छोड़ देना चाहिए।
  • हो सकता है कि आपने गलत आदेशों का उपयोग करके मॉडल को ओवर-फिट या अंडर-फिट किया हो? AIC और BIC का उपयोग करके सही आदेश खोजें।

tdistribution.model="std"

तुम सही हो। मैं अपना उत्तर संपादित करूँगा।
ए-

मैं ओवर-फिटिंग के बारे में चिंतित नहीं हूं - वास्तव में, मेरे इच्छित एप्लिकेशन के लिए मैं मॉडल को ओवर-फिट करना चाहता हूं। मैंने स्टेशनरिटी के लिए परीक्षण किया है, हालांकि मौसमी के लिए नहीं। इन मुद्दों के बावजूद, GARCH मॉडल सही ढंग से काम नहीं करता है। ऐसा लगता है जैसे कि नकली श्रृंखला पूरी तरह से समरूप है।
जेफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.