استراتيجية تجارة arima garch على s - p500 مؤشر سوق الأوراق المالية عن طريق r




استراتيجية تجارة ARIMA + GARCH على مؤشر سوق الأسهم SP500 عن طريق R مايكل مور على قاعات 7 أكتوبر 2015 في هذه المقالة أريد أن تظهر لك كيفية تطبيق جميع المعارف المكتسبة في الوظائف السابقة تحليل السلاسل الزمنية لاستراتيجية التداول على مؤشر سوق الأسهم SP500 الولايات المتحدة. سوف نرى ذلك من خلال الجمع بين ARIMA ونماذج GARCH نحن يمكن أن يتفوق بشكل كبير على نهج "شراء وعقد" على المدى الطويل. استراتيجية لمحة عامة فكرة استراتيجية بسيطة نسبيا ولكن إذا كنت ترغب في تجربة معها أقترح للغاية قراءة المشاركات السابقة في تحليل السلاسل الزمنية من أجل فهم ما سيتم تعديل! وتنفيذ هذه الاستراتيجية على أساس "المتداول": عن كل يوم، $ ن $، يتم استخدام أيام $ ك $ السابقة للعودة لوغاريتمي differenced لمؤشر سوق الأسهم كنافذة لتركيب وARIMA وGARCH النموذج الأمثل. يتم استخدام نموذج موحد لجعل التنبؤ للعوائد في اليوم التالي. إذا كان التوقع هو سلبي وقلل السهم عند الإغلاق السابق، في حين إذا كانت إيجابية ويتوق إليها. إذا كان التوقع هو نفس اتجاه في اليوم السابق ثم يتم تغيير أي شيء. لهذه الاستراتيجية ولقد استخدمت أقصى قدر من البيانات المتاحة من ياهو المالية للSP500. لقد اتخذت $ ك = 500 $ ولكن هذا هو المعلمة التي يمكن أن يكون الأمثل من أجل تحسين الأداء أو تقليل السحب. ويتم backtest خارج بطريقة vectorised مباشرة باستخدام R. لم يتم تنفيذه في backtester الحدث يحركها بيثون اعتبارا من بعد. وبالتالي أداء المحرز في نظام التداول الحقيقي من المرجح أن يكون أقل قليلا مما قد نحققه هنا، نظرا لجنة والزلل. تنفيذ استراتيجية لتنفيذ الاستراتيجية نحن نذهب إلى استخدام بعض التعليمات البرمجية التي أنشأناها سابقا في تحليل السلاسل الزمنية سلسلة المقالة وكذلك بعض مكتبات جديدة بما في ذلك rugarch. الذي قيل لي من قبل ايليا Kipnis في أكثر من QuantStrat التاجر. وسوف تذهب من خلال بناء الجملة بطريقة خطوة بخطوة ومن ثم تقديم التنفيذ الكامل في نهاية المطاف، فضلا عن وجود صلة لبلدي بيانات عن مؤشر ARIMA + GARCH. لقد تضمنت هذه الأخيرة لأنها اتخذت لي بضعة أيام على بلدي PC dekstop لتوليد الإشارات! يجب أن تكون قادرة على تكرار نتائجي في مجملها كما رمز نفسها ليست معقدة جدا، على الرغم من أنه لا يستغرق بعض الوقت لمحاكاة إذا كنت تنفيذه بالكامل. المهمة الأولى هي لتثبيت واستيراد المكتبات اللازمة في R: إذا كنت بالفعل قد المكتبات مثبتة يمكنك ببساطة استيرادها: مع أن الفعل ذاهبون إلى تطبيق استراتيجية لSP500. يمكننا استخدام quantmod للحصول على بيانات تعود إلى عام 1950 لمؤشر. يستخدم ياهو المالية الرمز "^ GPSC". يمكننا ثم خلق عوائد وغاريتمي differenced من "سعر الإغلاق" من SP500 وتجريد من قيمة NA الأولية: نحن بحاجة إلى إنشاء ناقل والتوقعات لتخزين القيم توقعاتنا في تواريخ معينة. نحن تعيين طول foreLength ليكون مساويا لطول بيانات التداول لدينا ناقص $ ك $، وطول النافذة: في هذه المرحلة نحن بحاجة إلى حلقة من خلال كل يوم في البيانات التجارية ويصلح لARIMA المناسب ونموذج GARCH إلى إطار المتداول من طول $ ك $. نظرا لأننا نحاول 24 نوبات منفصلة ARIMA ويصلح نموذجا GARCH، عن كل يوم، يمكن للمؤشر يستغرق وقتا طويلا لتوليد. نستخدم مؤشر د كمتغير حلقات وحلقة من $ ك $ لطول البيانات التجارية: نحن ثم خلق نافذة المتداول عن طريق أخذ عوائد SP500 واختيار القيم بين 1 $ + د $ و $ ك + د $، حيث $ ك = 500 $ لهذه الاستراتيجية: نحن نستخدم نفس الإجراء كما هو الحال في المادة ARIMA للبحث من خلال جميع نماذج ARMA مع $ ص \ في \ $ و $ س \ في \ $، باستثناء $ ع، س = 0 $. نحن التفاف دعوة arimaFit في R tryCatch معالجة الاستثناء كتلة لضمان أنه إذا لم نحصل على نوبة لقيمة معينة من $ ص $ و $ س $، فإننا نتجاهل ذلك والانتقال إلى الجمع المقبل من $ ص $ و$ س $. لاحظ أن وضعنا قيمة "المتكاملة" من $ د = 0 $ (هذه نسخة مختلفة $ د $ إلى المعلمة الفهرسة لدينا!) وعلى هذا النحو نحن حقا تركيب نموذج ARMA. بدلا من ARIMA. فإن الإجراء حلقات توفر لنا مع "أفضل" نموذج ARMA المناسب، من حيث المعلومات Akaike الفرقان، ومن ثم يمكننا استخدامها لتغذية في لنموذج GARCH لدينا: في كتلة التعليمات البرمجية القادمة ونحن ذاهبون إلى استخدام المكتبة rugarch، مع GARCH (1،1) نموذج. بناء الجملة من أجل هذا يتطلب منا إنشاء كائن مواصفات ugarchspec التي تأخذ نموذجا لهذه الفروق والمتوسط. تباين يتلقى GARCH (1،1) نموذج في حين أن متوسط ​​يأخذ نموذج ARMA (ع، ف)، حيث يتم اختيار $ ص $ و $ س $ أعلاه. نحن أيضا اختيار توزيع sged عن الأخطاء. بعد أن نكون قد اختارت مواصفات نقوم بتنفيذ تركيب الفعلي للARMA + GARCH باستخدام الأمر ugarchfit، والتي تأخذ الكائن مواصفات و$ ك $ عوائد SP500 والتحسين حلالا العددي. لقد اخترت استخدام الهجين. الذي يحاول يحلون مختلفة من أجل زيادة احتمالات التقارب: إذا لم تتقارب نموذج GARCH ثم أننا ببساطة تعيين يوم لإنتاج التنبؤ "الطويل"، التي من الواضح أنها تخمين. ومع ذلك، إذا كان النموذج لا تتلاقى فإننا الناتج التاريخ والاتجاه التنبؤ الغد (+1 أو -1) كسلسلة وعند هذه النقطة يتم إغلاق حلقة قبالة. من أجل إعداد الإخراج لملف CSV لقد خلق سلسلة الذي يحتوي على البيانات مفصولة بفواصل مع الاتجاه توقعات لاحق اليوم: الخطوة قبل الأخيرة هي لإخراج ملف CSV إلى القرص. وهذا يسمح لنا أن نأخذ مؤشر واستخدامها في برامج backtesting البديل لمزيد من التحليل، إذا رغبت في ذلك: ومع ذلك، هناك مشكلة صغيرة مع ملف CSV كما هو عليه الآن. الملف يحتوي على قائمة من التمور والتنبؤ لتحديد اتجاه الغد. إذا كان لنا أن تحميل هذا إلى رمز backtest أدناه كما هو عليه، وسنكون فعلا إدخال التحيز نظرة إلى الأمام لأن قيمة التنبؤ سيمثل البيانات غير معروفة في ذلك الوقت من التنبؤ. وذلك لحساب لهذا نحتاج ببساطة لتحريك توقع اليوم قيمة واحدة إلى الأمام. لقد وجدت هذه أن تكون أكثر وضوحا باستخدام بيثون. وبما أنني لا أريد أن نفترض أن قمت بتثبيت أي مكتبات خاصة (مثل الباندا)، لقد أبقى لبيثون النقي. هنا هو السيناريو القصير الذي يحمل هذا الإجراء خارج. تأكد من تشغيله في نفس الدليل كملف forecasts. csv: عند هذه النقطة لدينا الآن ملف تصحيح المؤشر المخزنة في forecasts_new. csv. لأن هذا يأخذ قدرا كبيرا من الوقت لحساب، لقد قدمت الملف الكامل لأنك هنا لتحميل نفسك: استراتيجية نتائج الآن أننا قد ولدت لدينا ملف CSV مؤشر نحتاج لمقارنة أدائها "لشراء عقد". نقرأ أولا في المؤشر من ملف CSV وتخزينها كما spArimaGarch: نحن بعد ذلك إنشاء تقاطع مواعيد توقعات ARIMA + GARCH والمجموعة الأصلية من العائدات من SP500. يمكننا ثم حساب العائد لاستراتيجية ARIMA + GARCH بضرب علامة توقعات (+ أو -) مع عودة نفسها: مرة واحدة لدينا عوائد من استراتيجية ARIMA + GARCH يمكننا خلق منحنيات الإنصاف لكل من نموذج ARIMA + GARCH و "شراء عقد". وأخيرا، ونحن الجمع بينهما في بنية بيانات واحد: أخيرا، يمكننا استخدام الأمر xyplot لرسم منحنيات سواء الأسهم على نفس الأرض: منحنى الأسهم حتى أكتوبر 6th 2015 على النحو التالي: منحنى الأسهم الاستراتيجية ARIMA + GARCH مقابل "شراء عقد" لSP500 من 1952 كما ترون، على مدى فترة 65 سنة، واستراتيجية ARIMA + GARCH تفوقت بشكل كبير "شراء عقد". ومع ذلك، يمكنك أيضا نرى أن الغالبية العظمى من مكاسب حدثت بين عامي 1970 و 1980. لاحظ أن تقلب المنحنى هو الحد الأدنى للغاية حتى أوائل 80s، وعند هذه النقطة يزيد تقلب كبير ومتوسط ​​العوائد أقل إثارة للإعجاب. ومن الواضح أن منحنى الإنصاف وعود أداء رائعا خلال الفترة بأكملها. ومع ذلك، فإن هذه الاستراتيجية كانت حقا القابلة للتداول؟ أولا وقبل كل شيء، دعونا النظر في حقيقة أن النموذج ARMA نشرت فقط في عام 1951. لم يكن حقا تستخدم على نطاق واسع حتى عام 1970 عندما ناقش صندوق جنكينز في كتابهم. ثانيا، لم اكتشف نموذج ARCH (علنا!) حتى أوائل 80s، من خلال انجل، ونشر GARCH نفسها Bollerslev في عام 1986. ثالثا، تم بالفعل تنفيذ هذه "backtest" الخروج على مؤشر سوق الأوراق المالية وليس أداة القابلة للتداول جسديا. من أجل الوصول إلى مؤشر مثل هذا كان يمكن أن يكون ضروريا للتجارة العقود الآجلة SP500 أو صندوق استثماري متداول الاصل (ETF) مثل SPDR. هو بالتالي حقا أن يكون مناسبا لتطبيق هذه النماذج لسلسلة التاريخية السابقة لاختراعهم؟ والبديل هو أن يبدأ تطبيق هذه النماذج على مزيد من البيانات الأخيرة. في الواقع، يمكن أن نعتبر أداء في السنوات العشر الماضية، من 1 يناير 2005 إلى اليوم: منحنى الأسهم الاستراتيجية ARIMA + GARCH مقابل "شراء عقد" لSP500 من عام 2005 وحتى اليوم كما ترون لا يزال منحنى الأسهم دون استراتيجية شراء عقد لمدة 3 سنوات تقريبا، ولكن خلال انهيار سوق الأسهم عام 2008/2009 ما أبلت بلاء حسنا للغاية. وهذا أمر منطقي لأن هناك احتمالا أن يكون الارتباط التسلسلي كبير في هذه الفترة، وسوف يتم القبض جيدا من قبل نماذج ARIMA وGARCH. استرداد مرة واحدة في السوق بعد عام 2009، ويدخل ما يتطلع إلى أن يكون أكثر اتجاها العشوائية، ويبدأ أداء نموذج للمعاناة مرة أخرى. لاحظ أن هذه الاستراتيجية يمكن تطبيقها بسهولة على مؤشرات سوق الأوراق المالية المختلفة، الأسهم أو فئات الأصول الأخرى. أشجع بقوة لك لمحاولة البحث الصكوك الأخرى، كما يمكنك الحصول على تحسينات كبيرة على النتائج المقدمة هنا. خطوات القادمة الآن بعد أن قمنا الانتهاء من مناقشة الأسرة ARIMA وGARCH من النماذج، وأريد الاستمرار في مناقشة تحليل السلاسل الزمنية من خلال النظر في عمليات الذاكرة الطويلة، ونماذج فضاء الحالة والسلاسل الزمنية cointegrated. وهذه المناطق لاحقة من سلسلة زمنية يعرض لنا النماذج التي يمكن أن تحسن توقعاتنا تتجاوز تلك لقد المعروضة هنا، الأمر الذي سيزيد بشكل ملحوظ الربحية التداول لدينا و / أو الحد من المخاطر. هنا القائمة الكاملة للجيل المؤشر، backtesting والتآمر: