एस पर arima garch ट्रेडिंग रणनीति - p500 शेयर बाजार सूचकांक का प्रयोग आर







+

आर का उपयोग SP500 शेयर बाजार सूचकांक पर ARIMA + GARCH ट्रेडिंग रणनीति 7 अक्टूबर 2015 पर माइकल हॉल-मूर द्वारा इस लेख में मैं कैसे SP500 अमेरिकी शेयर बाजार सूचकांक पर एक व्यापार रणनीति के लिए पिछले समय श्रृंखला विश्लेषण पदों में प्राप्त ज्ञान के सभी लागू करने के लिए आप दिखाना चाहते हैं। हम लंबे समय से एक "खरीदें और पकड़" दृष्टिकोण मात काफी सकते ARIMA और GARCH मॉडल के संयोजन से कि वहाँ होगा। रणनीति का अवलोकन रणनीति के विचार अपेक्षाकृत आसान है, लेकिन आप इसके साथ प्रयोग करना चाहते हैं तो मैं अत्यधिक तुम को संशोधित किया जाएगा क्या समझने के क्रम में समय श्रृंखला विश्लेषण पर पिछले पोस्ट पढ़ने का सुझाव! रणनीति एक "रोलिंग" के आधार पर किया जाता है: प्रत्येक दिन, $ एन $ के लिए, एक शेयर बाजार सूचकांक के differenced लघुगणक रिटर्न के पिछले $ कश्मीर $ दिनों एक इष्टतम ARIMA और GARCH मॉडल फिटिंग के लिए एक खिड़की के रूप में इस्तेमाल कर रहे हैं। संयुक्त मॉडल अगले दिन रिटर्न के लिए एक भविष्यवाणी करने के लिए प्रयोग किया जाता है। भविष्यवाणी नकारात्मक है, तो यह सकारात्मक है कि अगर यह चाहा है, जबकि शेयर, पिछले बंद पर shorted है। भविष्यवाणी पिछले दिन के रूप में एक ही दिशा में है तो कुछ भी नहीं बदला है। इस रणनीति के लिए मैं SP500 के लिए याहू वित्त से अधिकतम उपलब्ध आंकड़ों का इस्तेमाल किया है। मैं $ कश्मीर = 500 $ ले लिया है, लेकिन इस प्रदर्शन में सुधार या गिरावट को कम करने के लिए अनुकूलित किया जा सकता है कि एक पैरामीटर है। backtest यह अभी तक के रूप में अजगर घटना चालित backtester में लागू नहीं किया गया आर का उपयोग कर एक सीधा vectorised फैशन में किया जाता है। इसलिए एक वास्तविक व्यापार प्रणाली में हासिल प्रदर्शन संभावना है कि आप की वजह से आयोग और फिसलन के लिए, यहाँ प्राप्त हो सकता है की तुलना में थोड़ा कम होगा। रणनीति के कार्यान्वयन हम पहले से rugarch सहित समय श्रृंखला विश्लेषण लेख श्रृंखला के साथ ही कुछ नए पुस्तकालयों में बनाया है कोड से कुछ का उपयोग करने के लिए जा रहे हैं रणनीति को लागू करने के लिए। जो QuantStrat व्यापारी पर पर इल्या Kipnis ने मुझे सुझाव दिया गया है। मैं एक कदम-दर-कदम फैशन में वाक्य रचना के माध्यम से जाना और फिर अंत में पूरी तरह लागू करने के साथ-साथ ARIMA + GARCH सूचक के लिए मेरे डाटासेट करने के लिए एक कड़ी पेश करेंगे। यह संकेतों को उत्पन्न करने के लिए मेरे dekstop पीसी पर मुझे कुछ दिनों के लिए ले लिया है क्योंकि मैं बाद में शामिल किया है! कोड ही बहुत जटिल नहीं है, क्योंकि यह आप पूर्ण में इसे बाहर ले यदि अनुकरण करने के लिए कुछ समय ले करता है, हालांकि आप संपूर्णता में अपने परिणामों को दोहराने में सक्षम होना चाहिए। पहला काम को स्थापित करने और आर में आवश्यक पुस्तकालयों आयात करने के लिए है: आप पहले से ही पुस्तकालयों स्थापित है, तो आप बस उन्हें आयात कर सकते हैं: के साथ किया है SP500 के लिए रणनीति लागू करने के लिए जा रहे हैं। हम सूचकांक के लिए 1950 के लिए जा रहा डेटा प्राप्त करने के लिए quantmod उपयोग कर सकते हैं। याहू वित्त प्रतीक "^ GPSC" का उपयोग करता है। हम तो SP500 के "बंद भाव" की differenced लघुगणक रिटर्न बनाने के लिए और प्रारंभिक एनए मूल्य बाहर पट्टी कर सकते हैं: हम विशेष तिथियों पर हमारे पूर्वानुमान मूल्यों की दुकान के पूर्वानुमान के लिए एक वेक्टर बनाने की जरूरत है। हम व्यापार डेटा की लंबाई के बराबर करने की लंबाई foreLength सेट हम $ कश्मीर $ शून्य है, खिड़की की लंबाई: इस स्तर पर हम व्यापार के डेटा में हर दिन के माध्यम से पाश की जरूरत है और लंबाई $ कश्मीर $ के रोलिंग खिड़की करने के लिए एक उचित ARIMA और GARCH मॉडल फिट बैठते हैं। हम 24 अलग ARIMA फिट बैठता कोशिश करते हैं और एक GARCH मॉडल फिट यह देखते हुए कि, एक दिन के लिए, सूचक उत्पन्न करने के लिए एक लंबा समय लग सकता है। हम $ कश्मीर से $ कारोबारी आंकड़ों की लंबाई के लिए एक पाशन चर और लूप के रूप में सूचकांक डी का उपयोग करें: हम तो SP500 रिटर्न ले रही है और $ 1 + डी $ और $ + K डी $, के बीच मूल्यों का चयन करके रोलिंग खिड़की बनाने जहां इस रणनीति के लिए $ कश्मीर = 500 $: हम $ पी, क्यू = 0 $ के अपवाद के साथ, \ $ में \ $ और $ q \ में $ पी \ के साथ सभी ARMA मॉडलों के माध्यम से खोज करने के लिए ARIMA लेख में के रूप में एक ही प्रक्रिया का उपयोग करें। हम $ पी $ और $ $ क्यू की एक विशेष मूल्य के लिए एक फिट नहीं मिलता है, तो हम इसे अनदेखा कि यह सुनिश्चित करने के लिए और $ पी $ के अगले संयोजन के लिए आगे बढ़ने के लिए एक अनुसंधान tryCatch अपवाद हैंडलिंग ब्लॉक में arimaFit कॉल लपेट और $ क्यू $। हम $ डी = 0 $ के "एकीकृत" मूल्य निर्धारित किया है (यह हमारे अनुक्रमण पैरामीटर के लिए एक अलग $ डी $ है!) और जैसे हम वास्तव में एक ARMA मॉडल फिटिंग कर रहे हैं कि ध्यान दें। बल्कि एक ARIMA से। पाशन प्रक्रिया हम तो हमारे GARCH मॉडल के लिए में खिलाने के लिए उपयोग कर सकते हैं जो Akaike सूचना कसौटी है, के संदर्भ में, "सर्वश्रेष्ठ" फिटिंग ARMA मॉडल के साथ हमें प्रदान करेगा: अगले कोड ब्लॉक में हम GARCH (1,1) मॉडल के साथ, rugarch पुस्तकालय का उपयोग करने के लिए जा रहे हैं। इस के लिए वाक्य रचना विचरण और मतलब के लिए एक मॉडल लेता है कि एक ugarchspec विनिर्देश वस्तु की स्थापना करने की आवश्यकता है। मतलब $ पी $ और $ क्यू $ ऊपर चुना जाता है, जहां एक ARMA (पी, क्यू) मॉडल, लेता है, जबकि विचरण GARCH (1,1) मॉडल प्राप्त करता है। हम यह भी त्रुटियों के लिए sged वितरण चुनें। हम विनिर्देश चुना है एक बार हम विनिर्देश वस्तु, SP500 के $ कश्मीर $ रिटर्न और एक संख्यात्मक अनुकूलन सॉल्वर लेता है, जो ugarchfit कमांड का उपयोग करते हुए ARMA + GARCH की वास्तविक फिटिंग के लिए बाहर ले। हम संकर का उपयोग करने के लिए चुना है। जो अभिसरण की संभावना में वृद्धि के क्रम में विभिन्न solvers कोशिश करता है: GARCH मॉडल एकाग्र नहीं होता है तो हम बस स्पष्ट रूप से एक अनुमान है, जो एक "लंबे" भविष्यवाणी, उत्पादन करने के लिए दिन निर्धारित किया है। हालांकि, मॉडल तो तारीख और कल की भविष्यवाणी दिशा हम उत्पादन एकाग्र करता है तो (1 या -1) पाश बंद कर दिया जाता है, जो बिंदु पर एक स्ट्रिंग के रूप में। सीएसवी फ़ाइल के लिए उत्पादन को तैयार करने के क्रम में मैं अगले दिन के लिए पूर्वानुमान दिशा के साथ एक अल्पविराम के द्वारा अलग डेटा एक स्ट्रिंग है जिसमें बनाया है: अंत से पहले कदम सीएसवी डिस्क पर फ़ाइल उत्पादन के लिए है। यह तो अगर वांछित, सूचक लेने के लिए और आगे के विश्लेषण के लिए वैकल्पिक backtesting सॉफ्टवेयर में इसका इस्तेमाल करने के लिए हमें की अनुमति देता है: यह अभी खड़ा है हालांकि, सीएसवी फ़ाइल के साथ एक छोटी सी समस्या है। फ़ाइल तारीखों की एक सूची है और कल की दिशा के लिए एक भविष्यवाणी में शामिल है। हम इसे खड़ा के रूप में नीचे backtest कोड में यह लोड करने के लिए थे, हम वास्तव में भविष्यवाणी मूल्य भविष्यवाणी के समय में नहीं जाना जाता डेटा का प्रतिनिधित्व करते हैं, क्योंकि एक नज़र आगे पूर्वाग्रह शुरू होगा। इस के लिए खाते के क्रम में हम बस आगे भविष्यवाणी मूल्य एक दिन बढ़ने की जरूरत है। मैं अजगर का उपयोग कर अधिक सरल होने के लिए इस पाया है। मैं आप किसी विशेष पुस्तकालयों (जैसे पंडों के रूप में) स्थापित किया है कि मान नहीं करना चाहते हैं के बाद से, मैं शुद्ध अजगर करने के लिए इसे रखा है। यहाँ इस प्रक्रिया से बाहर किया जाता है कि कम स्क्रिप्ट है। Forecasts. csv फ़ाइल के रूप में एक ही निर्देशिका में इसे चलाने के लिए सुनिश्चित करें: इस बिंदु पर हम अब forecasts_new. csv में संग्रहीत को सही सूचक फ़ाइल है। इस गणना करने के लिए समय की एक पर्याप्त राशि लेता है, मैं आप अपने आप को डाउनलोड करने के लिए यहाँ पूर्ण फ़ाइल प्रदान की है: रणनीति परिणाम अब हम अपने सूचक सीएसवी फ़ाइल उत्पन्न किया है कि हम करने के लिए अपने प्रदर्शन की तुलना "पकड़ो खरीदें" की जरूरत है। हम सबसे पहले सीएसवी फ़ाइल से सूचक में पढ़ सकते हैं और spArimaGarch रूप में की दुकान: हम तो ARIMA + GARCH पूर्वानुमान और SP500 से रिटर्न के मूल सेट के लिए तारीखों की एक चौराहे पैदा करते हैं। हम तो पूर्वानुमान चिह्न (+ या -) गुणा करके ARIMA + GARCH रणनीति के लिए रिटर्न की गणना कर सकते हैं वापसी के साथ ही: हम ARIMA + GARCH मॉडल दोनों के लिए इक्विटी घटता बनाने और "पकड़ो खरीदें" कर सकते हैं ARIMA + GARCH रणनीति से रिटर्न दिया है एक बार। अंत में, हम एक ही डेटा संरचना में उनके गठबंधन: अंत में, हम एक ही भूखंड पर दोनों इक्विटी घटता साजिश करने के लिए xyplot आदेश का उपयोग कर सकते हैं: इस प्रकार के रूप 6 अक्टूबर 2015 को इक्विटी वक्र है: 1952 से SP500 के लिए "पकड़ो खरीदें" बनाम ARIMA + GARCH रणनीति की इक्विटी वक्र आप देख सकते हैं, एक 65 साल की अवधि में, Arima + GARCH रणनीति में काफी "पकड़ो खरीदें" बेहतर प्रदर्शन किया है। हालांकि, अगर आप भी लाभ के बहुमत 1970 और काफी उतार-चढ़ाव बढ़ जाती है जो बिंदु पर 80 के दशक, और औसत रिटर्न कम प्रभावशाली हैं जब तक की अवस्था का उतार-चढ़ाव काफी कम है कि 1980 के सूचना के बीच हुआ है कि देख सकते हैं। जाहिर है इक्विटी वक्र पूरी अवधि में शानदार प्रदर्शन का वादा किया। हालांकि, इस रणनीति वास्तव में tradeable हो गया होता? सबसे पहले, का पिटारा जेनकींस अपनी किताब में यह चर्चा जब ARMA मॉडल केवल 1970 है जब तक 1951 यह वास्तव में व्यापक रूप से उपयोग नहीं किया गया था में प्रकाशित किया गया था कि इस तथ्य पर विचार करते हैं। दूसरे, मेहराब मॉडल Engle द्वारा 80 के दशक, जब तक (सार्वजनिक!) खोज नहीं हुई थी, और GARCH में ही 1986 में Bollerslev द्वारा प्रकाशित किया गया था। तीसरा, इस 'backtest "वास्तव में एक शेयर बाजार सूचकांक और नहीं एक शारीरिक रूप से tradeable साधन पर बाहर किया गया है। एक सूचकांक के लिए पहुँच प्राप्त करने के लिए इस तरह के रूप में यह इस तरह एसपीडीआर के रूप में SP500 वायदा या एक प्रतिकृति एक्सचेंज ट्रेडेड फंड (ईटीएफ) व्यापार करने के लिए आवश्यक हो गया होता। इसलिए यह अपने आविष्कार करने से पहले एक ऐतिहासिक श्रृंखला के लिए इस तरह के मॉडल लागू करने के लिए है कि वास्तव में उचित है? एक वैकल्पिक और अधिक हाल के आंकड़ों के मॉडल को लागू करने शुरू करने के लिए है। वास्तव में, हम 1 जनवरी 2005 से आज तक, पिछले दस वर्षों में प्रदर्शन पर विचार कर सकते हैं: 2005 से SP500 के लिए आज तक "पकड़ो खरीदें" बनाम ARIMA + GARCH रणनीति की इक्विटी वक्र अगर आप इक्विटी वक्र लगभग 3 साल के लिए एक खरीदें पकड़ो रणनीति से नीचे बनी हुई है, लेकिन यह बेहद अच्छी तरह से करता है 2008/2009 के शेयर बाजार में गिरावट के दौरान देख सकते हैं। वहाँ इस अवधि में एक महत्वपूर्ण धारावाहिक सहसंबंध होने की संभावना है और यह ARIMA और GARCH मॉडल द्वारा अच्छी तरह से कब्जा कर लिया जाएगा क्योंकि यह समझ में आता है। बाजार पद -2009 बरामद किया है और अधिक एक स्टोकेस्टिक प्रवृत्ति होने लगता है में प्रवेश करती है एक बार, मॉडल प्रदर्शन एक बार फिर से ग्रस्त करने के लिए शुरू होता है। इस रणनीति को आसानी से अलग शेयर बाजार सूचकांक, इक्विटी या अन्य परिसंपत्ति वर्गों के लिए लागू किया जा सकता है कि ध्यान दें। मैं दृढ़ता से आप यहाँ प्रस्तुत परिणामों पर पर्याप्त सुधार प्राप्त कर सकते हैं, जैसा कि आप अन्य उपकरणों पर शोध करने की कोशिश करने के लिए प्रोत्साहित करते हैं। अगला कदम अब हम मॉडलों के ARIMA और GARCH परिवार पर चर्चा खत्म कर दिया है, कि मैं लंबे समय से स्मृति प्रक्रियाओं, राज्य अंतरिक्ष मॉडल और cointegrated समय श्रृंखला पर विचार करके इस समय श्रृंखला विश्लेषण चर्चा जारी रखना चाहते हैं। समय श्रृंखला के इन बाद के क्षेत्रों में काफी हमारे व्यापार लाभप्रदता बढ़ाने के लिए और / या जोखिम कम हो जाएगा, जो मैं यहाँ प्रस्तुत किया है उन से परे हमारे पूर्वानुमान में सुधार कर सकते हैं कि मॉडल के लिए हमें शुरू होगा। यहाँ सूचक पीढ़ी, backtesting और साजिश रचने के लिए पूरी सूची इस प्रकार है: