Sunday 4 February 2018

كالمان استراتيجية التداول


QuantStart.
الانضمام إلى كوانتكاديمي بوابة العضوية الخاصة التي تلبي احتياجات التجزئة المتزايد بسرعة المجتمع تاجر الكمي. سوف تجد مجموعة من ذوي الخبرة مثل التفكير من التجار الكميون على استعداد للرد على أسئلة التداول الكمي الأكثر إلحاحا.
تحقق من بلدي يبوك على التداول الكمي حيث أنا يعلمك كيفية بناء مربحة استراتيجيات التداول المنهجي مع أدوات بايثون، من الصفر.
نلقي نظرة على بلدي الكتاب الاليكتروني الجديد على استراتيجيات التداول المتقدمة باستخدام تحليل سلسلة زمنية، والتعلم الآلي والإحصاءات بايزي، مع بيثون و R.
من قبل مايكل هالز مور في 15 أغسطس، 2018.
إن أسلوب التداول الكمي المشترك ينطوي على أخذ اثنين من الأصول التي تشكل علاقة التكامل المشترك والاستفادة من نهج متوسط ​​العودة إلى بناء استراتيجية التداول. ويمكن القيام بذلك عن طريق إجراء انحدار خطي بين الأصلين (مثل زوج من صناديق الاستثمار المتداولة) واستخدام ذلك لتحديد مقدار كل أصل طويل وقصير عند عتبات معينة.
ومن الشواغل الرئيسية لهذه الاستراتيجية أن أي بارامترات أدخلت عن طريق هذه العلاقة الهيكلية، مثل نسبة التحوط بين الأصلين، من المرجح أن تكون متغيرة زمنيا. أي أنها ليست ثابتة طوال فترة الاستراتيجية. ومن أجل تحسين الربحية سيكون من المفيد لو تمكنا من تحديد آلية لتعديل نسبة التحوط على مر الزمن.
نهج واحد لهذه المشكلة هو استخدام الانحدار الخطي المتداول مع نافذة المراجعة. وهذا ينطوي على تحديث الانحدار الخطي على كل شريط بحيث المنحدر واعتراض المصطلحات "متابعة" أحدث سلوك للعلاقة التكامل المشترك. ومع ذلك فإنه يقدم أيضا المعلمة الحرة أخرى في استراتيجية، وهي طول فترة الاستعراض. يجب أن يكون هذا الأمثل، في كثير من الأحيان عبر التحقق من صحة.
وهناك نهج أكثر تعقيدا هو استخدام نموذج الفضاء الدولة التي تعالج نسبة "الحقيقية" التحوط كمتغير مخفي غير مراقب ويحاول تقديره مع الملاحظات "صاخبة". في حالتنا هذا يعني بيانات التسعير لكل مادة عرض.
مرشح كالمان يؤدي بالضبط هذه المهمة. في مقال سابق كان لدينا نظرة متعمقة في تصفية كالمان وكيف يمكن أن ينظر إليه على أنه عملية تحديث بايزي.
في هذه المقالة سنقوم باستخدام فلتر كالمان، من خلال مكتبة بيثمان بيكالمان، لمساعدتنا في تقدير ديناميكيا المنحدر والاعتراض (وبالتالي نسبة التحوط) بين زوج من صناديق الاستثمار المتداولة.
وسيتم في نهاية المطاف إعادة اختبار هذه التقنية مع نظام كسترادر ​​الجديد للتداول المفتوح المصدر، والذي سيمكننا من معرفة كيف تغير أداء هذه الاستراتيجية في السنوات القليلة الماضية.
وكانت المؤامرات في هذا المنصب مستوحاة إلى حد كبير، ومددت من وظيفة كتبها إيدان أوماهوني، الذي يدير مدونة ألغو إنجينير.
موجز مختصر من تصفية كالمان.
إذا كنت ترغب في قراءة أكثر عمقا رياضيا المادة حول تصفية كالمان، يرجى إلقاء نظرة على المادة السابقة. وسوف أختصر باختصار النقاط الرئيسية هنا.
نموذج فضاء الدولة الذي سنستخدمه يتكون من معادلتين مصفوفة. ويعرف الأول بمعادلة الدولة أو الانتقال ويصف كيف يتم تغيير مجموعة من متغيرات الحالة، $ \ theta_t $ من فترة زمنية إلى أخرى. هناك اعتماد خطي على الحالة السابقة التي أعطاها مصفوفة الانتقال $ G_t $ فضلا عن الضوضاء نظام توزيعها عادة $ w_t $. لاحظ أن $ G = G_t $، بمعنى عام يعني أن مصفوفة الانتقال هي نفسها تعتمد على الوقت:
\ بيجين \ theta_t = G_t \ theta_ + w_t \ إند.
ومع ذلك، غالبا ما تكون هذه الحالات غير ملحوظة، وقد لا نستطيع الحصول على الملاحظات إلا في كل مؤشر زمني، والتي يتم منحها $ y_t $. ولملاحظات أيضا معادلة رصد مرتبطة تتضمن مكونا خطيا عن طريق مصفوفة الملاحظة $ F_t $، فضلا عن ضوضاء قياس، توزع عادة، وتعطى بمقدار $ v_t $:
\ بيجين y_t = F_t \ theta_t + v_t \ إند.
للحصول على مزيد من التفاصيل حول نموذج مساحة الدولة وتصفية كالمان، يرجى الرجوع إلى مقالتي السابقة.
دمج الانحدار الخطي في تصفية كالمان.
والسؤال الرئيسي في هذه المرحلة هو كيف يمكننا الاستفادة من هذا النموذج الفضاء الدولة لدمج المعلومات في الانحدار الخطي؟
إذا كنا نتذكر من المقالة السابقة على مل للانحدار الخطي ونحن نعلم أن الانحدار الخطي متعددة تنص على أن قيمة استجابة $ y $ هي وظيفة خطية من مدخلات ميزة $ $:
حيث $ \ بيتا ^ T = (\ beta_0، \ beta_1، \ لدوتس، \ beta_p) $ يمثل متجه تبديل اعتراض $ \ beta_0 $ والمنحدرات $ \ beta_i $، مع $ \ إبسيلون \ سيم \ ماثكال (\ مو ، \ سيغما ^ 2) $ يمثل مصطلح الخطأ.
نظرا لأننا في إعداد أحادي البعد، يمكننا ببساطة كتابة $ \ بيتا ^ T = (\ beta_0، \ beta_1) $ و $ = \ بيجين 1 \\ x \ إند $.
وضعنا الدول (مخفي) من نظامنا أن تعطى من قبل ناقلات $ \ بيتا ^ T $، وهذا هو اعتراض ومنحدر الانحدار الخطي لدينا. الخطوة التالية هي أن نفترض أن اعتراض الغد والمنحدر يساوي اعتراض اليوم والمنحدر مع إضافة بعض الضوضاء نظام عشوائي. وهذا يعطيها طبيعة المشي العشوائي، ويناقش سلوكها في طول في المادة السابقة على الضوضاء البيضاء والمشي العشوائي:
حيث يتم تعيين مصفوفة الانتقال إلى مصفوفة التفكيك ثنائية الأبعاد، $ G_t = $. هذا هو نصف نموذج الفضاء الدولة. والخطوة التالية هي استخدام أحد صناديق الاستثمار المتداولة في الزوج ك "ملاحظات".
تطبيق فلتر كالمان على زوج من صناديق الاستثمار المتداولة.
لتشكيل معادلة الملاحظة، من الضروري اختيار أحد سلاسل تسعير إتف لتكون المتغيرات "الملاحظة"، $ y_t $، والآخر الذي يعطى $ x_t $، والذي يوفر صياغة الانحدار الخطي كما هو موضح أعلاه:
\ بيجين y_t & = & F_t _t + v_t \\ & = & (\ beta_0، \ beta_1) \ بيجين 1 \\ x_t \ إند + v_t \ إند.
وبالتالي لدينا الانحدار الخطي إعادة صياغتها كنموذج فضاء الدولة، والذي يسمح لنا لتقدير اعتراض والمنحدر كما وصول نقاط السعر الجديدة عن طريق تصفية كالمان.
تلت و إتف.
سننظر في صندوقين متداولين لصناديق الاستثمار المتداولة ذات الدخل الثابت، وهما إتشاريس 20+ يار ترياسوري بوند إتف (تلت) و إتشاريس 3-7 سنوات سندات الخزينة إتف (إيي). وتتبع كل من صناديق الاستثمار المتداولة هذه أداء سندات الخزانة الأمريكية لفترة متفاوتة، وبالتالي فإنها تتعرض لعوامل سوقية مماثلة. سنقوم بتحليل سلوكهم الانحداري على مدى السنوات الخمس الماضية أو نحو ذلك.
سكاتيربلوت من أسعار إتف.
ونحن الآن بصدد استخدام مجموعة متنوعة من المكتبات بايثون، بما في ذلك نومبي، ماتلوتليب، الباندا و بيكالمان إلى تحليل سلوك الانحدار الخطي الديناميكي بين هذين الأوراق المالية. كما هو الحال مع جميع برامج بايثون المهمة الأولى هي استيراد المكتبات اللازمة:
ملاحظة: سوف تحتاج على الأرجح لتشغيل بيب تثبيت بيكلمان لتثبيت مكتبة بيكلمان.
والخطوة التالية هي كتابة الدالة draw_date_coloured_scatterplot لإنتاج مبعثر لأسعار الإغلاق المعدلة للأصول (مستوحاة من هذا النوع من الانتثار من إنتاج إيدان أوماهوني). سيتم تلوين سكاتيربلوت باستخدام خريطة اللون ماتلوتليب، وتحديدا "الأصفر إلى الأحمر"، حيث الأصفر يمثل أزواج الأسعار أقرب إلى 2018، في حين الأحمر يمثل أزواج السعر أقرب إلى 2018:
لقد علقت على التعليمات البرمجية لذلك ينبغي أن يكون واضحا إلى حد ما لمعرفة ما تقوم به جميع الأوامر. ويتم العمل الرئيسي في إطار متغيرات الألوان، الألوان والمتغيرات العشوائية. وتنتج المؤامرة التالية:
سكاتيربلوت من صناديق الاستثمار المتداولة ذات الدخل الثابت، تفت مقابل إيي.
متفاوتة الوقت المنحدر والاعتراض.
الخطوة التالية هي في الواقع استخدام بيكالمان لضبط حيوي اعتراض والانحدار بين تفت و إيي. هذه الوظيفة أكثر تعقيدا وتتطلب بعض التوضيح.
أولا نحدد متغير يسمى دلتا، والذي يستخدم للسيطرة على التباين الانتقال للضوضاء النظام. في مقالتي الأصلية على تصفية كالمان كان هذا يرمز $ W_t $. نحن ببساطة مضاعفة مثل هذه القيمة من قبل مصفوفة الهوية ثنائية الأبعاد.
الخطوة التالية هي إنشاء مصفوفة الملاحظة. كما وصفنا سابقا هذه المصفوفة هو متجه الصف تتكون من أسعار تفت وتسلسل القيم الوحدة. لبناء هذا نستخدم طريقة فستاك نومبي لكومة عموديا هذه سلسلة السعر اثنين في متجه عمود واحد، ونحن بعد ذلك تبديل.
عند هذه النقطة نستخدم فئة كالمانفيلتر من بيكالمان لإنشاء مثيل تصفية كالمان. نحن نوردها مع أبعاد الملاحظات (الوحدة في هذه الحالة)، أبعاد الدول (اثنان في هذه الحالة ونحن ننظر إلى اعتراض والانحدار في الانحدار الخطي).
ونحن بحاجة أيضا إلى توفير المتوسط ​​والتكافؤ في الحالة الأولية. في هذه الحالة وضعنا متوسط ​​الحالة الأولية لتكون صفر لكل من اعتراض والمنحدر، في حين أننا نأخذ مصفوفة الهوية ثنائية الأبعاد للتغاير الحالة الأولية. وتعطى مصفوفات الانتقال أيضا من خلال مصفوفة الهوية ثنائية الأبعاد.
وآخر المصطلحات التي يجب تحديدها هي مصفوفات المراقبة كما هو مبين أعلاه في أوبس، مع تساوي التباين بينها. وأخيرا يتم إعطاء مصفوفة التباين المشترك (التي تسيطر عليها دلتا) بواسطة trans_cov، الموصوفة أعلاه.
الآن لدينا لدينا كف كالمان مرشح المثال يمكننا استخدامه لتصفية استنادا إلى أسعار معدلة من إيي. وهذا يوفر لنا وسيلة الدولة للاعتراض والمنحدر، وهذا ما نحن بعد. وبالإضافة إلى ذلك نحن أيضا الحصول على التباينات من الدول.
كل هذا ملفوفة في الدالة Calc_slope_intercept_kalman:
وأخيرا نقوم بتخطيط هذه القيم كما تم إرجاعها من الدالة السابقة. لتحقيق ذلك نحن ببساطة إنشاء داتافريم الباندا من المنحدرات والاعتراضات في قيم الوقت $ t $، وذلك باستخدام مؤشر من أسعار داتافريم، ومؤامرة كل عمود كقسم فرعي:
ويعطى الناتج على النحو التالي:
الانحدار المتغير الوقت واعتراض الانحدار الخطي بين صناديق الاستثمار المتداولة بتف و إيي.
ومن الواضح أن المنحدر الزمني يتغير بشكل كبير خلال الفترة 2018-2018، حيث انخفض من حوالي 1.38 في عام 2018 إلى نحو 0.9 في عام 2018. وليس من الصعب أن نرى أن استخدام نسبة التحوط الثابتة في استراتيجية تداول أزواج سيكون جامدا جدا.
وبالإضافة إلى ذلك تقدير المنحدر صاخبة نسبيا. ويمكن التحكم في ذلك من خلال متغير الدلتا الوارد في الشفرة أعلاه ولكن له تأثير أيضا على تقليل استجابة المرشح للتغيرات في نسبة التحوط "الحقيقية" غير المرصودة بين صندوقي الاستثمار المتداولين.
عندما نأتي لتطوير استراتيجية التداول سيكون من الضروري لتحسين هذا الدلتا المعلمة عبر سلال من أزواج من صناديق الاستثمار المتداولة باستخدام التحقق من صحة مرة أخرى.
الخطوات التالية.
والآن بعد أن تمكنا من بناء نسبة تحوط دينامية بين صندوقي الاستثمار المتداولين، نحتاج إلى طريقة لتنفيذ استراتيجية تداول تستند إلى هذه المعلومات. المقالة التالية في السلسلة سوف تستفيد من كسترادر ​​لإجراء اختبار خلفي على أزواج مختلفة من أجل معرفة كيف يتغير الأداء عندما تتغير المعلمات والفترات الزمنية.
ملاحظة بيبليوغرافية.
وقد تم استخدام تصفية كالمان ل "الانحدار الخطي على الانترنت" من قبل العديد من الأفراد التداول الكمي. يستخدم إرني تشان هذه التقنية في كتابه [1] لتقدير معاملات الانحدار الخطي الديناميكية بين صندوقي الاستثمار المتداولين: إيوا و إوك.
استخدم إيدان أوماهوني ماتبلوتليب و بيكالمان أيضا لتقدير معاملات الانحدار في وظيفته [2]، والتي ألهمت الرسوم البيانية لهذه المقالة الحالية.
يناقش جوناثان كينلاي تطبيق فلتر كالمان لمحاكاة البيانات المالية [3]، ويقترح أنه قد يكون من المستحسن استخدام كف لقمع الإشارات التجارية الناتجة في فترات الضوضاء العالية، أو زيادة المخصصات للأزواج حيث الضوضاء منخفضة.
يمكن العثور على مناقشة تمهيدية حول تصفية كالمان، باستخدام لغة البرمجة R، في كوبيرتوايت وميتكالف [4].
المراجع.
مجرد بدء مع التداول الكمي؟
3 أسباب الاشتراك في قائمة البريد الإلكتروني كوانتستارت:
1. دروس التداول الكمي.
سوف تحصل على إمكانية الوصول الفوري إلى دورة مجانية 10-البريد الإلكتروني معبأة مع تلميحات ونصائح لمساعدتك على البدء في التداول الكمي!
2. جميع أحدث المحتوى.
كل أسبوع سوف نرسل لك التفاف جميع الأنشطة على كوانتستارت لذلك عليك أن لا يفوتون وظيفة مرة أخرى.
ريال مدريد، وقابلة للتنفيذ نصائح التداول الكمي مع أي هراء.

QuantStart.
الانضمام إلى كوانتكاديمي بوابة العضوية الخاصة التي تلبي احتياجات التجزئة المتزايد بسرعة المجتمع تاجر الكمي. سوف تجد مجموعة من ذوي الخبرة مثل التفكير من التجار الكميون على استعداد للرد على أسئلة التداول الكمي الأكثر إلحاحا.
تحقق من بلدي يبوك على التداول الكمي حيث أنا يعلمك كيفية بناء مربحة استراتيجيات التداول المنهجي مع أدوات بايثون، من الصفر.
نلقي نظرة على بلدي الكتاب الاليكتروني الجديد على استراتيجيات التداول المتقدمة باستخدام تحليل سلسلة زمنية، والتعلم الآلي والإحصاءات بايزي، مع بيثون و R.
من قبل مايكل هالز مور في 21 سبتمبر، 2018.
في السابق على كوانتستارت لقد نظرنا في الأسس الرياضية لنماذج الفضاء الدولة و كالمان مرشحات، فضلا عن تطبيق مكتبة بيكالمان لزوج من صناديق الاستثمار المتداولة لضبط حيوي نسبة التحوط كأساس لاستراتيجية التداول عائد المتوسطة.
في هذه المقالة سوف نناقش استراتيجية التداول في الأصل بسبب إرنست تشان (2018) [1] واختبارها من قبل إيدان أوماهوني في كوانتوبيان [2]. سوف نستفيد من الإطار المفتوح كسترادر ​​باكتستينغ المصدر المفتوح بايثون من أجل تنفيذ الاستراتيجية. وستقوم كسترادر ​​بتنفيذ "الرفع الثقيل" لتتبع الموقف، والتعامل مع محفظة ومعالجة البيانات، في حين أننا نركز فقط على التعليمات البرمجية التي تولد إشارات التداول.
إستراتيجية التداول.
يتم تطبيق استراتيجية التداول أزواج على اثنين من الصناديق المتداولة في البورصة (إتف) التي تتبع كل من أداء متفاوتة المدة سندات الخزينة الأمريكية. هم انهم:
والهدف من ذلك هو بناء استراتيجية متوسطة العودة من هذا الزوج من صناديق الاستثمار المتداولة.
"الانتشار" الاصطناعي بين تلت و إي هو السلاسل الزمنية التي نحن مهتمون فعلا بالتوق أو التقصير. يتم استخدام فلتر كالمان لتتبع نسبة التحوط بشكل حيوي بين الاثنين من أجل الحفاظ على الفارق الثابت (وبالتالي يعني التراجع).
لإنشاء قواعد التداول فمن الضروري تحديد متى انتقلت الفارق بعيدا جدا عن القيمة المتوقعة. كيف نحدد ما هو "بعيد جدا"؟ يمكننا استخدام مجموعة من القيم المطلقة الثابتة، ولكن هذه يجب أن يكون تحديد تجريبيا. وهذا من شأنه أن يدخل معلمة حرة أخرى في النظام الذي يتطلب التحسين (وخطر إضافي من الإفراط في الإمداد).
نهج واحد "بارامتريليس" لإنشاء هذه القيم هو النظر في مضاعف الانحراف المعياري للفرق واستخدامها كحدود. للبساطة يمكننا تعيين معامل متعددة لتكون مساوية لأحد.
وبالتالي يمكننا أن نذهب "فترة طويلة انتشار" إذا كان الخطأ توقعات قطرات أقل من الانحراف المعياري السلبي للفرق. على التوالي يمكننا أن نذهب "قصيرة انتشار" إذا تجاوز الخطأ التنبؤ الانحراف المعياري الإيجابي للفرق. قواعد الخروج هي ببساطة عكس قواعد الدخول.
وتمثل نسبة التحوط الديناميكية بمكون واحد من متجه الحالة المخفي في الوقت $ t $، $ \ theta_t $، والذي سنشير إليه على أنه $ \ ثيتا ^ 0_t $. هذا هو قيمة "بيتا" المنحدر المعروف جيدا من الانحدار الخطي.
"شوق انتشار" هنا يعني شراء (شوق) $ N $ وحدات من تلت وبيع (تقصير) $ \ لفلور $، حيث $ \ لفلور $ هو "الكلمة" التي تمثل أعلى عدد صحيح أقل من $ X $. هذا الأخير ضروري لأنه يجب علينا التعامل مع عدد كامل من وحدات صناديق الاستثمار المتداولة. "تقصير انتشار" هو عكس ذلك. يتحكم $ N $ في الحجم الإجمالي للموقف.
يمثل $ e_t $ خطأ التنبؤ أو الخطأ المتبقي للتنبؤ في الوقت $ t $، في حين أن $ Q_t $ تمثل تباين هذا التنبؤ في الوقت $ t $.
من أجل الاكتمال، يتم تحديد القواعد هنا:
$ e_t \ لوت - \ سرت $ - طول الفارق: اذهب طويلا $ $ $ سهم من تلت و اقصر $ \ لفلور $ وحدات إيي $ e_t \ غي - \ سرت $ - خروج طويل: أغلق كل المواقف الطويلة ل تلت و إيي $ e_t \ غ \ سرت $ - اختصار الفارق: اذهب قصير $ N $ سهم من تلت وذهب $ $ لفلور $ وحدات إيي $ e_t \ لي \ سرت $ - خروج قصير: أغلق كل المراكز القصيرة من تلت و إيي .
دور فلتر كالمان هو مساعدتنا في حساب $ \ theta_t $، وكذلك $ e_t $ و $ Q_t $. يمثل $ \ theta_t $ متجه قيم الاعتراض والمنحدرات في الانحدار الخطي بين تلت و إيي في الوقت $ t $. ويقدر من قبل مرشح كالمان. الخطأ المتوقع / المتبقي $ e_t = y_t - \ هات _t $ هو الفرق بين القيمة المتوقعة للعلاج تلت اليوم وتقدير عامل تصفية كالمان ل تلت اليوم. $ Q_t $ هو التباين في التوقعات، وبالتالي $ \ سرت $ هو الانحراف المعياري للتنبؤ.
ويشمل تنفيذ الاستراتيجية الخطوات التالية:
تلقي الحانات السوق اليومية أوهلكف لكل من تلت و إيي استخدام المتكرر "على الانترنت" فلتر كالمان لتقدير سعر تلت اليوم استنادا إلى ملاحظات الأمس من إيي تأخذ الفرق بين تقدير كالمان من تلت والقيمة الفعلية، وغالبا ما تسمى خطأ التوقعات أو خطأ متبقي، وهو مقياس لمدى انتشار انتقال تل و إيي بعيدا عن قيمته المتوقعة طول الفارق عندما تكون الحركة بعيدة كل البعد عن القيمة المتوقعة وتقابل في المقابل الفارق عندما تكون الحركة بعيدة عن المتوقع القيمة قم بإنهاء المراكز الطويلة والقصيرة عندما تعود السلسلة إلى قيمتها المتوقعة.
من أجل تنفيذ هذه الاستراتيجية من الضروري أن يكون لديك بيانات التسعير أوهلكف للفترة التي يغطيها هذا باكتست. وعلى وجه الخصوص، من الضروري تنزيل ما يلي:
تلت - للفترة من 3 أغسطس 2009 إلى 1 أغسطس 2018 (الرابط هنا) إيي للفترة من 3 أغسطس 2009 إلى 1 أغسطس 2018 (الرابط هنا).
سوف تحتاج هذه البيانات إلى وضعها في الدليل المحدد بواسطة ملف إعدادات كسترادر ​​إذا كنت ترغب في تكرار النتائج.
بيثون كسترادر ​​التنفيذ.
منذ كسترادر ​​يعالج تتبع الموقف، وإدارة المحافظ، وإدارة البيانات وإدارة النظام الرمز الوحيد الذي نحتاج إلى الكتابة ينطوي على كائن استراتيجية نفسها.
وتتصل الاستراتيجية مع بورتفوليوهاندلر عبر طابور الحدث، والاستفادة من الأجسام سيغناليفنت للقيام بذلك. وبالإضافة إلى ذلك يجب علينا استيراد قاعدة استراتيجية مجردة قاعدة، أبستراكتستراتيجي.
لاحظ أنه في إصدار ألفا الحالي من كسترادر ​​يجب علينا أيضا استيراد فئة بريسيبارسر. ويستخدم هذا لمضاعفة جميع الأسعار على المدخلات من قبل متعددة كبيرة ($ 10 ^ 8 $) وأداء الحساب الصحيح عند تتبع المواقف. هذا يتجنب العائمة نقطة تقريب القضايا التي يمكن أن تتراكم على مدى فترة طويلة من باكتست. يجب علينا تقسيم جميع الأسعار عن طريق PriceParser. PRICE_MULTIPLIER للحصول على القيم الصحيحة:
الخطوة التالية هي إنشاء فئة كالمانبايرسترادينغستراتيغي. مهمة هذه الفئة هي تحديد متى يتم إنشاء كائنات سيغناليفنت استنادا إلى باريفنت تلقى من قضبان أوهلكف اليومية من تلت و إيي من ياهو المالية.
هناك العديد من الطرق المختلفة لتنظيم هذه الفئة. لقد اخترت هاردكود جميع المعلمات في الصف لوضوح التفسير. ومن الجدير بالذكر أنني قمت بتثبيت قيمة $ \ دلتا = 10 ^ $ و $ v_t = 10 ^ $. وهي تمثل اختلاف ضوضاء النظام وقياس الضوضاء في نموذج تصفية كالمان. ويمكن أيضا تنفيذ هذا كوسيط للكلمة الرئيسية في منشئ __init__ للفئة. ومن شأن هذا النهج أن يتيح تحسين المعلمة مباشرة.
المهمة الأولى هي تعيين الوقت والأعضاء المستثمرة لتكون مساوية ل نون، كما سيتم تحديثها كما يتم قبول بيانات السوق وإشارات التجارة ولدت. last_prices هو اثنين من مجموعة من الأسعار الحالية من تلت و إيي، وتستخدم لراحة من خلال الطبقة.
المجموعة التالية من المعلمات كلها تتعلق تصفية كالمان ويتم شرحها في العمق في المادتين السابقتين هنا وهنا.
وتشمل المجموعة النهائية من المعلمات أيام، وتستخدم لتتبع عدد الأيام التي مرت فضلا عن الكمية و cur_hedge_qty، وتستخدم لتتبع الكميات المطلقة من صناديق الاستثمار المتداولة لشراء لكلا الجانبين الطويل والقصير. لقد وضعت هذا ليكون 2000 وحدة على حقوق المساهمين من 100،000 دولار أمريكي.
الطريقة التالية _set_correct_time_and_price هي طريقة "المساعد" المستخدمة لضمان أن تصفية كالمان لديه كل المعلومات التسعير الصحيحة المتاحة في النقطة الصحيحة. وهذا أمر ضروري لأنه في نظام باكتست يحركها الحدث مثل معلومات سوق كسترادر ​​تصل بالتتابع.
قد نكون في وضع على اليوم $ K $ حيث تلقينا سعر إيي، ولكن ليس تفت. وبالتالي يجب علينا الانتظار حتى كل من تفت وأحداث السوق إيي وصلت من حلقة باكتست، من خلال قائمة انتظار الأحداث. في التداول المباشر هذه ليست قضية لأنها سوف تصل على الفور تقريبا مقارنة مع فترة التداول لبضعة أيام. ومع ذلك، في باكتست يحركها الحدث يجب علينا الانتظار لكلا السعرين للوصول قبل حساب التحديث مرشح كالمان الجديد.
تحقق التعليمات البرمجية بشكل أساسي إذا كان الحدث اللاحق لليوم الحالي. إذا كان هو، ثم يتم إضافة السعر الصحيح إلى قائمة أحدث_price من تلت و إيي. إذا كان يوم جديد ثم يتم إعادة تعيين أحدث الأسعار ويتم إضافة الأسعار الصحيحة مرة أخرى.
هذا النوع من طريقة "التدبير المنزلي" من المحتمل أن يتم استيعابها في قاعدة كسترادر ​​في المستقبل، مما يقلل من ضرورة كتابة "نمطي" رمز، ولكن في الوقت الراهن يجب أن تشكل جزءا من الاستراتيجية نفسها.
يتم تنفيذ جوهر الاستراتيجية في أسلوب account_signals. أولا وضعنا الأوقات الصحيحة والأسعار (كما هو موضح أعلاه). ثم نتحقق من أن لدينا كل من أسعار تلت و إيي، وعند هذه النقطة يمكننا أن ننظر إشارات تجارية جديدة.
يتم تعيين $ y $ يساوي أحدث سعر ل إيي، في حين أن $ F $ هي مصفوفة الملاحظة التي تحتوي على أحدث سعر ل تلت، فضلا عن عنصر نائب الوحدة لتمثيل اعتراض في الانحدار الخطي. يتم تحديث فلتر كالمان في وقت لاحق مع هذه أحدث الأسعار. وأخيرا نحسب خطأ التنبؤ $ e_t $ والانحراف المعياري للتنبؤات، $ \ سرت $. دعونا تشغيل من خلال هذه التعليمات البرمجية خطوة بخطوة، كما يبدو قليلا معقدة.
وتتمثل المهمة الأولى في تشكيل القيمة العددية y ومصفوفة الملاحظة F التي تحتوي على أسعار إيي و تلت على التوالي. نقوم بحساب مصفوفة التباين-التغاير R أو تعيينه إلى مصفوفة الصفر إذا لم يتم إضفاء الطابع المبدئي عليه بعد. وفي وقت لاحق نحن حساب التنبؤ الجديد من يهات الملاحظة وكذلك خطأ التنبؤ وآخرون.
ثم نحسب تباين توقعات الملاحظة كيو تي وكذلك الانحراف المعياري sqrt_Qt. نحن نستخدم قواعد التحديث المستمدة هنا للحصول على التوزيع الخلفي للولايات ثيتا، التي تحتوي على نسبة التحوط / المنحدر بين السعرين:
وأخيرا نولد إشارات التداول استنادا إلى قيم $ e_t $ و $ \ سرت $. وللقيام بذلك، نحتاج إلى التحقق من الحالة "المستثمرة" - إما "طويلة" أو "قصيرة" أو "بلا". لاحظ كيف نحتاج لضبط cur_hedge_qty كمية التحوط الحالية عندما نذهب طويلة أو قصيرة كما المنحدر $ \ ثيتا ^ 0_t $ يتم ضبط باستمرار في الوقت المناسب:
هذا هو كل من التعليمات البرمجية اللازمة لعنصر الاستراتيجية. نحن بحاجة أيضا إلى إنشاء ملف باكتست لتغليف كل من منطقتنا التداول وخيارات الطبقة. النسخة الخاصة هي مشابهة جدا لتلك المستخدمة في دليل الأمثلة ويستبدل حقوق الملكية من 500،000 دولار أمريكي مع 100،000 دولار أمريكي.
كما أنه يغير فيكسيدبوسيتيونزيزر إلى نيفيبوسيتيونزيزر. يستخدم هذا الأخير ل "ساذجة" قبول اقتراحات الكميات المطلقة من وحدات إتف للتجارة كما هو محدد في فئة كالمانبايرسترادينغستراتيغي. وفي بيئة الإنتاج، سيكون من الضروري تعديل ذلك تبعا لأهداف إدارة المخاطر للمحفظة.
في ما يلي الكود الكامل ل kalman_qstrader_backtest. py:
طالما تم تثبيت كسترادر ​​بشكل صحيح وتم تحميل البيانات من ياهو المالية يمكن تنفيذ التعليمات البرمجية عبر الأمر التالي في المحطة:
بفضل جهود العديد من المطورين المتطوعين، وخاصةryankennedyio و فيمتوترادر، رمز هو الأمثل جيدا ل أوهلفف شريط البيانات وتنفذ باكتستينغ بسرعة.
نتائج الاستراتيجية.
واحدة من أحدث الميزات التي يمكن أن تضاف إلى كسترادر ​​هو أن من "تيرشيت" وضعت في المقام الأول من قبلnwillemse. هذه الميزة لا تزال في مرحلة مبكرة من التنمية ولكن سيتم توضيحها هنا.
يتم استخدام ورقة تيرشيت في المقام الأول في إطار المؤسسات باعتبارها وصفا "بيجر واحد" لاستراتيجية التداول. الطبقة تيرشيتستاتيستيكش في كسترادر ​​كستبراس يكرر العديد من الإحصاءات الموجودة في تقرير أداء استراتيجية نموذجي.
يمثل الرسمان البيانيان العلويان منحنى رأس المال ونسبة السحب، على التوالي. تحت هذا هي لوحات الأداء الشهرية والسنوية. وأخيرا يتم عرض منحنى رأس المال، والإحصاءات على مستوى التجارة والإحصاءات القائمة على الوقت:
اضغط على الصورة لعرض أكبر.
يبدأ منحنى األسهم بشكل مسطح نسبيا للسنة األولى من االستراتيجية ولكنه يتصاعد بسرعة خالل عام 2018. خالل عام 2018، تصبح االستراتيجية أكثر تقلبا بكثير "تحت الماء" حتى عام 2018، وتصل إلى نسبة سحب يومية قصوى تبلغ 15.79٪. ويزداد الأداء تدريجيا من الحد الأقصى للتخفيض في أواخر 2018 وحتى 2018.
وقد بلغ معدل النمو السنوي المركب للاستراتيجية 8.73٪ مع نسبة شارب 0.75. كما أن لديها أطول مدة السحب القصوى 777 يوما - أكثر من عامين! لاحظ أن هذه الإستراتيجية يتم إجراؤها من إجمالي تكاليف المعاملات بحيث من المرجح أن يكون الأداء الحقيقي أسوأ.
الخطوات التالية.
هناك الكثير من الأعمال البحثية اللازمة لتحويل هذا إلى استراتيجية مربحة التي سوف نشر في بيئة حية. وتشمل السبل الممكنة للبحث ما يلي:
المعلمة الأمثل - متغير المعلمات من تصفية كالمان عبر البحث عبر شبكة التحقق من صحة أو بعض شكل من أشكال التعلم آلة الأمثل. ومع ذلك، فإن هذا يقدم إمكانية متميزة للإفراط في تجهيز البيانات التاريخية. اختيار الأصول - من شأن اختيار أزواج إضافية أو بديلة من صناديق الاستثمار المتداولة أن يساعد على إضافة التنويع إلى المحفظة، ولكنه يزيد من تعقيد الاستراتيجية وكذلك عدد الصفقات (وبالتالي تكاليف المعاملات).
في المقالات المستقبلية سوف ننظر في كيفية تنفيذ هذه الإجراءات لمختلف استراتيجيات التداول.
المراجع.
مجرد بدء مع التداول الكمي؟
3 أسباب الاشتراك في قائمة البريد الإلكتروني كوانتستارت:
1. دروس التداول الكمي.
سوف تحصل على إمكانية الوصول الفوري إلى دورة مجانية 10-البريد الإلكتروني معبأة مع تلميحات ونصائح لمساعدتك على البدء في التداول الكمي!
2. جميع أحدث المحتوى.
كل أسبوع سوف نرسل لك التفاف جميع الأنشطة على كوانتستارت لذلك عليك أن لا يفوتون وظيفة مرة أخرى.
ريال مدريد، وقابلة للتنفيذ نصائح التداول الكمي مع أي هراء.

المراجحة الإحصائية باستخدام فلتر كالمان.
ومن بين التحديات التي تواجه نهج التكامل المشترك في المراجحة الإحصائية التي ناقشتها في منصبي السابق، أن علاقات التكامل المشترك نادرا ما تكون ثابتة: فهي تتغير بشكل متكرر وغالبا ما تنهار تماما. مرة أخرى في عام 2009 بدأت تجربة نهج أكثر ديناميكية لتداول أزواج، استنادا إلى تصفية كالمان.
في أبسط أشكاله، نحن نموذج العلاقة بين زوج من الأوراق المالية على النحو التالي:
بيتا (t) = بيتا (t-1) + w بيتا (t)، متغير الحالة غير المراقب، الذي يتبع المشي العشوائي.
Y (t) = بيتا (t) X (t) + v العمليات الملاحظة لأسعار الأسهم Y (t) و X (t)
N (0، Q) معنى w هو الضوضاء الغوسية مع صفر يعني والتباين س.
N (0، R) بمعنى v هو الضوضاء الغوسية مع التباين R.
لذلك هذا هو تماما مثل العلاقة أزواج المعتادة Y = بيتا * X + V، حيث النهج النموذجي هو لتقدير بيتا باستخدام أقل المربعات الانحدار، أو نوع من الانحدار المتداول (في محاولة لتأخذ في الاعتبار حقيقة أن بيتا قد تتغير أكثر زمن). في هذا الإطار التقليدي، بيتا هو ثابت، أو تغيير ببطء.
في إطار كالمان، بيتا هو في حد ذاته عملية عشوائية تتطور باستمرار مع مرور الوقت، كما المشي العشوائي. ولأنها عشوائية وملوثة بالضوضاء لا يمكننا مراقبة بيتا مباشرة، ولكن يجب أن نستنتج قيمتها (التغير) من أسعار الأسهم القابلة للرصد X و Y. (ملاحظة: في ما يلي سأستخدم X و Y للإشارة إلى أسعار الأسهم، ولكن يمكنك أيضا استخدام أسعار السجل أو الإرجاع).
غير معروف لي في ذلك الوقت، العديد من الباحثين الآخرين كانوا يفكرون على نفس المنوال ثم نشروا أبحاثهم. أحد الأمثلة على ذلك هو الاحصاء الإحصائي والبيانات عالية التردد مع تطبيق لأسهم يوروستوكس 50، رودي، دونيس، جيورجيوني والقوانين، 2018. دراسة أخرى وثيقة الصلة تحليل أداء أزواج استراتيجية التداول استخدام البيانات عالية التردد مع تطبيق ل كوسبي 100 الأسهم، كيم، 2018. كل من الدراسات البحثية تتبع مسار مماثل جدا، ورفض تقدير بيتا باستخدام الانحدار المتداول أو التمهيد الأسي لصالح نهج كالمان وتطبيق نموذج أورنشتاين-أولنبيك لتقدير نصف عمر متوسط ​​انعكاس المحافظ أزواج . وتفيد الدراسات بأن نسب المعلومات العالية جدا خارج العينة تتجاوز في بعض الحالات 3.
لقد سبق أن أوضحت أن هذا الأداء العالي بشكل غير عادي هو عادة نتيجة لتجاهل حقيقة أن صافي الربح القومي للسهم الواحد قد يقع في المنطقة من متوسط ​​انتشار عرض التسعير، مما يجعل التنفيذ مشكلا للغاية. في هذا المنصب أريد أن أتطرق إلى مسألة حاسمة أخرى خاصة لنهج كالمان: الإشارة: نسبة الضوضاء، Q / R، والتي تعبر عن نسبة التباين في عملية بيتا إلى عملية السعر. (ومن الغريب أن كلتا الورقتين تجعلان نفس الخطأ في وضع علامة على Q و R بمثابة انحرافات معيارية، بل هي في الواقع اختلافات).
بيتا، ويجري عملية عشوائية، ومن الواضح أن يحتوي على بعض الضوضاء: ولكن الأمل هو أنه أقل صاخبة من عملية السعر. والفكرة هي أن العلاقة بين اثنين من الأسهم أكثر استقرارا & # 8211؛ أقل تقلبا & # 8211؛ من عمليات المخزون نفسها. ويبدو أن هذا الافتراض معقول، من وجهة نظر تجريبية. والسؤال هو: كيف مستقرة هي عملية بيتا، نسبة إلى عملية السعر؟ إذا كان التباين في عملية بيتا منخفضا بالنسبة لعملية السعر، يمكننا تحديد بيتا بدقة تامة مع مرور الوقت، وبالتالي الحصول على تقديرات دقيقة للسعر الحقيقي Y (t)، استنادا إلى X (t). ثم، إذا لاحظنا مغادرة كبيرة بما فيه الكفاية في السعر المعروض Y (t) من السعر الحقيقي في الوقت t، لدينا التجارة المحتملة.
وبعبارة أخرى، نحن مهتمون بما يلي:
حيث Y (t) و X (t) هي أسعار الأسهم الملحوظة وبيتا (t) هي القيمة التقديرية للبيتا في الوقت t.
كالمعتاد، فإننا سوف توحيد ألفا باستخدام تقدير الانحراف المعياري ألفا، وهو سكرت (R). (بدلا من ذلك، يمكنك تقدير الانحراف المعياري لل ألفا مباشرة، وذلك باستخدام فترة الاسترجاع استنادا إلى نصف عمر ألفا).
وإذا كان ألفا المعياري كبيرا بما فيه الكفاية، يشير النموذج إلى أن السعر Y (t) يقتبس زيادة كبيرة عن القيمة الحقيقية. ومن ثم فإننا سنقوم باختصار السهم Y وشراء الأسهم X. (في هذا السياق، حيث تمثل X و Y أسعار الخام، فإنك تمتلك عددا متساويا وعكسيا من الأسهم في Y و X. إذا كان X و Y يمثلان عائدات، وقيمة السوق المقابلة في كل سهم).
نجاح هذه الاستراتيجية يعتمد بشكل حاسم على نوعية تقديراتنا ألفا، والتي بدورها تبقى على دقة تقديراتنا من بيتا. هذا يعتمد على صدمة عملية بيتا، أي تباينها، س. إذا كانت عملية بيتا صاخبة جدا، أي إذا Q كبيرة، تقديراتنا ألفا ستكون صاخبة جدا لتكون مفيدة كأساس لاستراتيجية الانتعاش .
لذا، فإن السؤال الرئيسي الذي أريد أن أتناوله في هذا المنصب هو: من أجل أن يكون نهج كالمان فعالا في نمذجة علاقة أزواج، ما هو النطاق المقبول لتغير عملية بيتا Q؟ (غالبا ما يقال أن ما يهم في إطار كالمان ليس التباين Q، في حد ذاته، ولكن إشارة: نسبة الضوضاء Q / R. وتبين أن هذا ليس صحيحا تماما، كما سنرى).
للحصول على التعامل مع المشكلة، لقد اتخذت النهج التالي:
(1) محاكاة عملية المخزون X (t) كعملية حركة براونية هندسية مع الانجراف والتقلب المحدد (استخدمت 0٪ و 5٪ و 10٪ للانجراف السنوي و 10٪ و 30٪ و 60٪ للمقابلة التقلبات السنوية).
(2) محاكاة عملية بيتا (t) كمشي عشوائي مع التباين Q في المدى من 1E-10 إلى 1E-1.
(3) توليد عملية السعر الحقيقية Y (t) = بيتا (t) * X (t)
'4' محاكاة يوبس (t) لعملية الأسعار الملاحظة، بإضافة ضوضاء عشوائية مع التباين R إلى Y (t)، مع R في المدى 1E-6 إلى 1،0.
'5' احسب ألفا (t) = Y (t) & # 8211 المعروفين؛ يوبس (ر)
(6) تناسب نموذج تصفية كالمان إلى العمليات المحاكاة وتقدير بيتا (t) و إيست (t). ومن ثم تنتج تقديرات كفالفا (t) = يوبس (t) & # 8211؛ يست (t) ومقارنتها مع ألفا المعروفة (t).
توضح الرسوم البيانية الواردة في الشكل 1 أدناه إجراء عملية المخزون X (t) مع الانجراف السنوي بنسبة 10٪ والتذبذب السنوي 40٪ والتباين في عملية بيتا Q من 8.65E-9 والتباين في عملية السعر R من 5.62E-2 ( Q / R نسبة 1.54E-7).
الشكل 1 صحيح وتقدير بيتا وألفا باستخدام فلتر كالمان.
كما ترون، تصفية كالمان القيام بعمل جيد جدا لتحديث تقدير بيتا لتتبع الأساسية، بيتا صحيح (والتي، في هذه التجربة، هو معروف). وبما أن نسبة الضوضاء Q / R صغيرة، فإن تقديرات الفلتر كالمان من ألفا العملية، كفالا (t)، تتطابق بشكل وثيق مع ألفا الحقيقي (t)، والذي يعرف مرة أخرى لنا في هذا الإعداد التجريبي. يمكنك فحص العلاقة بين ألفا الحقيقي (t) وتقديرات تصفية كالمان كفالا (t) هو المخطط في الربع الأيسر أقصى من الشكل. وتبلغ العلاقة بين الاثنين حوالي 89٪. مع مستوى من الدقة هذا جيد لتقديرات ألفا لدينا، فإن زوج من الأسهم محاكاة جعل المرشح المثالي لاستراتيجية التداول أزواج.
Of course, the outcome is highly dependent on the values we assume for Q and R (and also to some degree on the assumptions made about the drift and volatility of the price process X(t)).
The next stage of the analysis is therefore to generate a large number of simulated price and beta observations and examine the impact of different levels of Q and R, the variances of the beta and price process. The results are summarized in the table in Fig 2 below.
Fig 2. Correlation between true alpha(t) and kfalpha(t) for values of Q and R.
As anticipated, the correlation between the true alpha(t) and the estimates produced by the Kalman Filter is very high when the signal:noise ratio is small, i. e. of the order of 1E-6, or less. Average correlations begin to tail off very quickly when Q/R exceeds this level, falling to as low as 30% when the noise ratio exceeds 1E-3. With a Q/R ratio of 1E-2 or higher, the alpha estimates become too noisy to be useful.
I find it rather fortuitous, even implausible, that in their study Rudy, et al, feel able to assume a noise ratio of 3E-7 for all of the stock pairs in their study, which just happens to be in the sweet spot for alpha estimation. From my own research, a much larger value in the region of 1E-3 to 1E-5 is more typical. Furthermore, the noise ratio varies significantly from pair to pair, and over time. Indeed, I would go so far as to recommend applying a noise ratio filter to the strategy, meaning that trading signals are ignored when the noise ratio exceeds some specified level.
The take-away is this: the Kalman Filter approach can be applied very successfully in developing statistical arbitrage strategies, but only for processes where the noise ratio is not too large. One suggestion is to use a filter rule to supress trade signals generated at times when the noise ratio is too large, and/or to increase allocations to pairs in which the noise ratio is relatively low.

Tag: Kalman Filter.
Successful Statistical Arbitrage.
I tend not to get involved in Q&A with readers of my blog, or with investors. I am at a point in my life where I spend my time mostly doing what I want to do, rather than what other people would like me to do. And since I enjoy doing research and trading,…
ETF Pairs Trading with the Kalman Filter.
I was asked by a reader if I could illustrate the application of the Kalman Filter technique described in my previous post with an example. Let’s take the ETF pair AGG IEF, using daily data from Jan 2006 to Feb 2018 to estimate the model. As you can see from the chart in Fig. 1, the…
Statistical Arbitrage Using the Kalman Filter.
One of the challenges with the cointegration approach to statistical arbitrage which I discussed in my previous post, is that cointegration relationships are seldom static: they change quite frequently and often break down completely. Back in 2009 I began experimenting with a more dynamic approach to pairs trading, based on the Kalman Filter. في & # 8230؛
A Practical Application of Regime Switching Models to Pairs Trading.
In the previous post I outlined some of the available techniques used for modeling market states. The following is an illustration of how these techniques can be applied in practice. You can download this post in pdf format here. The chart below shows the daily compounded returns for a single pair in an ETF statistical arbitrage…
Learning the Kalman Filter.
Many people have heard of Kalman filtering, but regard the topic as mysterious. While it’s true that deriving the Kalman filter and proving mathematically that it is “optimal” under a variety of circumstances can be rather intense, applying the filter to a basic linear system is actually very easy. This Matlab file is intended to demonstrate that.

Kalman trading strategy


This strategy is taken from Example 3.3 in Ernie Chan's book, Algorithmic Trading: Winning Strategies and Their Rationale. It's been posted here previously but that used constants for the linear regression coefficients.
In this case, a Kalman filter is used to dynamically update the linear regression coefficients between the EWA and EWC ETFs. It performs well up to 2009 but after that the performance degrades.
cool, thanks for this example.
The Kalman filter is very powerful once you grasp how it works. If you're doing offline work, check out the pykalman module. The order weighting idea is nice, I hadn't thought of that.
Is there a reason you only rebalance weekly? You can reduce the trading frequency by reducing the transition covariance (delta) and increasing the observation covariance (Ve). This has the effect of slowing down the rate at which the regression coefficients change.
Anyone know if the kalman filter can be extended to more than two securities where the dependent and independent variables are no so clear?
@Simon, it's easy to extend to n-dimensional linear regression by increasing the dimensions of the observation matrix for the Kalman filter (variable x in the algo). This backtest does a regression between SPY and the sector ETF's XLE, XLF and XLI.
First, thank you for your great work. I was going to explore this Kalman Filter algorithm before you posted. You helped me and many people here.
Second, for most pair trading algos, we need to test cointegration of the pair by using mostly either ADF or Johansen test. In this example, EWA-EWC pair is tested with Johansen test and it showed that the pair has good eigenvector. Is there any way that a pair trading algo includes one of these tests and gives us a confirmation if the pair is good or not before it runs?
Third, going a little bit further, is there any way for an algo to search the best pair by using those tests, pick right pair(s) and run with Kalman Filter algo?
Lastly, I'm wondering why EWA-EWC pair model orders same shares for long and short. Does it already include risk adjusted factors? What if I set a pair that has very best eigenvectors but the price ratio and beta is too high? In this case, ordering same shares for long/short does not make any sense. How does Kalman Filter pair model work regarding risk adjustment ?
Is there any way that a pair trading algo includes one of these tests and gives us a confirmation if the pair is good or not before it runs?
You could use the adfuller function in the statsmodels package to test for cointegration. In my experience, a good Dickey-Fuller test statistic does not necessarily imply a profitable pair for trading. AFAIK, the Johansen test is not available in any public python library but there is an open issue to include it in statsmodels.
is there any way for an algo to search the best pair by using those tests, pick right pair(s) and run with Kalman Filter algo?
Finding good pairs for trading is a difficult and computationally expensive problem. Have a look at Simon's thread, Grid-searching for profitable cointegrating portfolios, for a good discussion on this.
I'm wondering why EWA-EWC pair model orders same shares for long and short.
It doesn't order the same number of shares for long and short. If we are going "long" on the EWA/EWC spread, we buy X amount of shares in EWC and we sell beta * X of shares in EWA. This is a hedged position and we are never long and short on the spread at the same time.
Oooops. Right, it was not same shares.
شكرا لكم. I will look up adfuller function and Simon's thread.
Yes, finding right pairs is very difficult. Even this Kalman filter algo does not work with some other pairs. I guess we need to work more and harder.
Again, thank you for the great work.
Aidan - my point was that even with a Kalman filter, one must decide a priori which variable is the dependent variable and which are independent regressors. In a basket situation, this seems nonsensical?
The Kalman filter works under the assumptions that you have a prediction function good at approximating the behavior of the phenomenon you're trying to track and that the error in the output of that function is normally distributed. In simulations of physical phenomena this works out well, because you know that a missile you're trying to shoot with a laser, for example, will not suddenly turn left 90 degrees. Physical laws limit the possible next states of that missile to a pretty small range of values.
Markets on the other hand, can turn 180 degrees without notice and there is no physical momentum to make tracking them tractable. Maybe I'm missing something, but I don't see why a Kalman filter should do well.
A particle filter would at least improve the situation by removing the assumption about linear behavior. أفكار؟
While I don't consider myself a data scientist, I have done the modeling (programming) for some. Regarding it's apparent success for this example, to me this looks to just be a "black box" who's end result is to average the trends, and give you a predictor of the next timestep. I'm not saying that's all it is, but for those (like me) who don't fully understand the math behind the algorithm, that's what it is.
oh also, you don't need a separate "dependent" variable. just one input stream, that's predicting the next value of itself.
edit: at least that's what the kalman filter as described on wikipedia is about. I didn't look at the implementation that Aidan gave.
@Simon, you're right, this isn't a scientific experiment and it's not obvious which asset to use as the dependent variable. The important question is does it really matter which asset we choose to be dependent? In my own tests, I've found it doesn't make a lot of difference to the end result. As a rule of thumb, I choose the dependent variable that gives the largest value of the cointegration coefficient, which implies the asset with the lower volatility is independent.
@Eric and @Jason, there is reasoning behind using a Kalman filter for this application!
First, let's look at what we are trying to achieve. We want to construct a stationary time-series (spread) from two individually non-stationary time-series (EWA and EWC). Let's assume there exists a parameter (beta or cointegration coefficient) such that the residual from the linear combination of the non-stationary time-series is stationary and we can use the resulting stationary series to generate trading signals. In a perfect world, beta would be constant and our job would be done.
Our problem now is that beta is not constant and changes gradually (assuming the series stay cointegrated) over time. To use a Kalman filter, we need to formulate an observation and transition equation. The observation equation is the linear combination of the non-stationary time-series plus Gaussian white noise. This is really just a linear regression of EWA and EWC. The transition equation assumes that beta is equal the previous beta plus Gaussian white noise. This is a random walk.
Using more complex non-linear models probably won't improve things, as Ernie Chan said on non-linear models "experiences showed me that nonlinear models have mostly been unmitigated disasters in terms of trading profits" and "One is almost certain to overfit a nonlinear model to non-recurring noise".
haha, thanks mate :)
i just got a copy of Ernie Chan's book, so looking forward to reading about this in detail :)
شكرا لنشر هذه. I haven't made it through Ernie's second book yet, but I'm curious why anyone would use this strategy given that it does horribly as soon as you factor in slippage and commissions. Even with 10 times as much capital it still loses money.
I'm new to trading, so it's likely I'm misunderstanding something here. Can someone explain when this strategy (or similar pair trading strategies) would make sense?
Using the current setup of the algo, it trades frequently, almost every day, and the profit from each trade is not sufficient to cover transaction costs. It trades frequently because the Kalman filter responds quickly to changes in the EWA/EWC spread. Reducing the sensitivity of the Kalman filter will decrease trading frequency and only trade larger deviations in the spread, which will increase the expected payoff. To answer your question, it only makes sense to use this strategy, or any other strategy, when the expected payoff of a trade is greater than transaction costs.
Here is a complete stab in the dark:
I wanted to ask what is the meaning of this line:
Why don't you want to plot values where the spread is >=5?
I can't remember exactly why I did that. It was something to do with keeping the y-scale on the record graph output small so it's easier to see. It won't have any effect on the results if you remove it.
Yes, I have cloned the algorithm and found out already. It is only there to filter out initial extremes from the graph output. شكر.
I can see one issue when trying to use Kalman filter for trading - the infinite memory. I just tried to include more samples preceding the backtest start date - it still affects the prediction of beta/alpha even when I use thousands of samples (no convergence). I think for trading application, the actual Kalman filter implementation should be more biased on recent data and be able to "forget" about data from ancient past. Of course, you can set the "pre-train" phase length to some arbitrary value, but to which one?
There are some implementations like this discussed (for instance, search for Adaptive Fading Kalman Filter). Does anyone have experiences with these modifications?
How would I change the algorithm for daily trading?
Is there a reason that orders only take place in the last 5 minutes of the trading day?
Also, when you run a full backtest and look at the transaction details, there are sometimes multiple orders on the same day. For example, on 5-03-06, there were the following order: -1137 EWA, -1125 EWA, +1000 EWC, and +1000 EWC. Why are there multiple orders on the same day?
On 4-26-06, there was only one order: -1000 EWC. Why was there only one order and no corresponding pairs trade, i. e. +EWA?
Thanks for sharing the algorithm and answering questions.
Is there a reason that orders only take place in the last 5 minutes of the trading day?
Ernie Chan's original algo runs on daily close data so to replicate that on Quantopian I used the close price at 3.55PM to update the Kalman filter and allow 5 minutes before market close for any orders to fill.
شكرا جزيلا لردكم لك.
Changing the time that orders take place by 15-30 minutes can significantly change the results of a backtest (for example, changing from 3:55 pm to 3:30 pm). لماذا يحدث هذا؟ Is there an ideal time to execute trades? شكر.
لماذا يحدث هذا؟ Is there an ideal time to execute trades?
I'm not certain of the reason but if I had to guess I would say that arbitrage algo's perform better with increasing volatility and, in general, volatility is higher around market open and market close. I'm not sure if there is an "ideal time" to execute trades, it really depends on what you're trying to exploit.
How is the entry and exit points chosen? A short position is opened when e>sqrt(Q). Then we should wait for e to decrease. But the we just exit when e revert to sqrt(Q) again. Why is it?
How come the transaction always start with one leg instead of two legs?
لماذا يحدث هذا؟ Is there an ideal time to execute trades?
There is no specific ideal time to execute trades, however your thesis/analysis is based on daily close price data. Therefore, you should aim to minimise slippage against the forthcoming close price on each given day. Executing trades 15 mins before market close still subjects you to the probability of slippage against the close price on that day, but how do you decide the optimal time. maybe 5 mins before the close. or 2 mins? Setting the execution/order as close as possible towards the close increases the probability that your order may not be filled so you will need to assess the trade off between close price-slippage/probability of execution.
Thanks for sharing Aidan. This has been so helpful along with your Kalman Filter notebook.
I have a question though about the initialization setup you have here. In the notebook, you assumed the measurement error to be 10, or Ve to be 100, but here you set Ve to something dramatically smaller, 0.001. Is there a reason behind such huge discrepancy? This number can obviously change the results dramatically.
When I rerun the numbers, I can get negative value for Q which result in errors when I calculate sqrt(Q). How do you manage negative Qs?
problem solved for only one leg in the beginning.
However, mean reversion quality for bond product is very bad.
Better try on other equity or FX spreads.
If we are using a Kalman filter as in the the example above, would we still need to reblanace any open positions periodically to reflect the position in the latest spread as it is getting updated by the Kalman Filter?
(sorry but i dont seem to be able to see any rebalancing in the algorithm?)
hi thx aidan for the nice post. It certainly helps to enlightened more about Kalman filter application. Just wonder what will be the best practice in using this Kalman filter to find the cointegrated pairs. Will following two approaches both reasonable?
Testing cointegration based on simple OLS residual (spread) analysis.
I've found option 2 wasn't really appropriate since it makes an assumption on evolving state of beta which might impact the regression residual of the actual price measurement. Let me know what others think as well. شكر.
Agree with your analysis. Approach 1 is reasonable but you'll find most of the time the conitegration relationship will break down and will never revert to the mean. Approach 2 doesn't make a lot of sense as the relationship is constantly evolving.
thx aidan. Guess i will try to combine both analysis (i. e. in sample cointegration analysis based on simple OLS to find the pairs and out sample forecast based on Kalman filter for trading signal). Do you think this approach makes sense?
Are there any leverage used in this algo?
Hi, I'm seeking help here. While I'm understanding Kalman Filter and trying to apply this algorithm in real trades, there are something I don't quite understand.
In the sample algorithm, the kalman filter takes one price for each symbol, and get hedge ratio, mean, standard deviation etc. So that it further decides if we can enter long/short at a moment. However, in real trades, for every tick/bar, there are bid price and short price for every symbol, so they are two values of each symbol, four values for pair trading. Then how should we use the four values to calculate trading signal?
Actually this question is not only about Kalman Filter, but general to any backtest program. Back test data has only one value for each time (which might be OPEN or CLOSE), but in real trades, there are lowest ask, highest bid and other order prices. Which values should we use to decide trading signal?
Appreciate any help!
عذرا، هناك خطأ ما. حاول مرة أخرى أو اتصل بنا عن طريق إرسال الملاحظات.
لقد أرسلت بنجاح تذكرة دعم.
سيكون فريق الدعم لدينا على اتصال قريبا.
يتم توفير المواد على هذا الموقع لأغراض إعلامية فقط ولا تشكل عرضا للبيع أو طلب شراء أو توصية أو تأييد لأي أمن أو استراتيجية، كما أنها لا تشكل عرضا لتقديم الخدمات الاستشارية الاستثمارية من قبل كوانتوبيان.
وبالإضافة إلى ذلك، لا تقدم المادة أي رأي فيما يتعلق بملاءمة أي ضمان أو استثمار محدد. لا ینبغي اعتبار أي معلومات واردة في ھذه الوثیقة بمثابة اقتراح للانخراط في أي مسار عمل یتعلق بالاستثمار أو الامتناع عنھ حیث لا یقوم أي من کوانتوبيان أو أي من الشرکات التابعة لھ بتقدیم المشورة الاستثماریة أو العمل کمستشار لأي خطة أو کیان خاضع ل وقانون تأمين دخل التقاعد للموظفين لعام 1974، بصيغته المعدلة، أو حساب التقاعد الفردي أو المعاش التقاعدي الفردي، أو تقديم المشورة بصفة الأمانة فيما يتعلق بالمواد المعروضة في هذه الوثيقة. إذا كنت مستقلا فرديا أو مستثمرا آخر، فاتصل بمستشارك المالي أو أي جهة مالية أخرى لا علاقة لها بكوانتوبيان حول ما إذا كانت أي فكرة استثمار أو إستراتيجية أو منتج أو خدمة معينة مذكورة هنا قد تكون مناسبة لظروفك. وتشمل جميع الاستثمارات مخاطر، بما في ذلك خسارة أصل الدين. لا تقدم كوانتوبيان أي ضمانات بشأن دقة أو اكتمال الآراء المعرب عنها في الموقع. وتخضع اآلراء للتغيير، وقد تصبح غير موثوقة ألسباب مختلفة، بما في ذلك التغيرات في ظروف السوق أو الظروف االقتصادية.
يتم توفير المواد على هذا الموقع لأغراض إعلامية فقط ولا تشكل عرضا للبيع أو طلب شراء أو توصية أو تأييد لأي أمن أو استراتيجية، كما أنها لا تشكل عرضا لتقديم الخدمات الاستشارية الاستثمارية من قبل كوانتوبيان.
وبالإضافة إلى ذلك، لا تقدم المادة أي رأي فيما يتعلق بملاءمة أي ضمان أو استثمار محدد. لا ینبغي اعتبار أي معلومات واردة في ھذه الوثیقة بمثابة اقتراح للانخراط في أي مسار عمل یتعلق بالاستثمار أو الامتناع عنھ حیث لا یقوم أي من کوانتوبيان أو أي من الشرکات التابعة لھ بتقدیم المشورة الاستثماریة أو العمل کمستشار لأي خطة أو کیان خاضع ل وقانون تأمين دخل التقاعد للموظفين لعام 1974، بصيغته المعدلة، أو حساب التقاعد الفردي أو المعاش التقاعدي الفردي، أو تقديم المشورة بصفة الأمانة فيما يتعلق بالمواد المعروضة في هذه الوثيقة. إذا كنت مستقلا فرديا أو مستثمرا آخر، فاتصل بمستشارك المالي أو أي جهة مالية أخرى لا علاقة لها بكوانتوبيان حول ما إذا كانت أي فكرة استثمار أو إستراتيجية أو منتج أو خدمة معينة مذكورة هنا قد تكون مناسبة لظروفك. وتشمل جميع الاستثمارات مخاطر، بما في ذلك خسارة أصل الدين. لا تقدم كوانتوبيان أي ضمانات بشأن دقة أو اكتمال الآراء المعرب عنها في الموقع. وتخضع اآلراء للتغيير، وقد تصبح غير موثوقة ألسباب مختلفة، بما في ذلك التغيرات في ظروف السوق أو الظروف االقتصادية.

No comments:

Post a Comment