Wednesday 21 March 2018

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


استراتيجية التداول ماركوف المخفية
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
استراتيجية التداول الأمثل في عالم لعبة بسيطة نموذج ماركوف المخفية مع غاوس.
أريد حل مشكلة التحسين التالية: ما هي استراتيجية التداول العام الأمثل (بمعنى أعلى نسبة شارب) على سلسلة زمنية والتي هي نتيجة لنموذج ماركوف مخفي مع دولتين واثنين من غاوس مع مصفوفة انتقال معروفة والمعلمات المعروفة ومتوسط ​​التباين؟
وينبغي أن تستند استراتيجية التداول بشكل مثالي فقط إلى مؤشرات فنية يمكن ملاحظتها بسهولة مثل الزخم الجوهري أو السماوي والتقلب. شعور بلدي الأمعاء هو أن فترة الاسترداد الأمثل لحساب هذه يجب أن تعتمد على مصفوفة الانتقال.
أنا ممتن (كالمعتاد) للأفكار والأدب، رمز (من الناحية المثالية R :-) وما شابه ذلك.
ولا أفهم كيف تكون المؤشرات الفنية ذات صلة بالموضوع. ويمكن توليد احتمالات الدولة مباشرة من العوائد إذا كان النموذج معروفا. ليست هناك حاجة للتخمين في قواعد التداول الاستدلالية على أساس المؤشرات الفنية.
اسمح $ r_t $ بالعودة في الوقت $ t $. النموذج الخاص بك.
وبعبارة أخرى، فإن الدولة هي ماركوف والعائدات طبيعية مع متوسط ​​معروف، التباين في أي من الدولتين. لنفترض أننا نقف في الوقت $ t $. نحتاج أولا إلى تحديد $ P \،. r_0 \> = p_t $. استخدام خوارزمية إلى الوراء إلى الأمام الملقب البرمجة الديناميكية وتنفيذها في معظم حزم هم.
الآن $$ E \ = p_t \ mu_0 + (1-p_t) \ mu_1 $$ و $$ فار \ = p_t \ sigma_0 ^ 2 + (1-p_t) \ sigma_1 ^ 2. $$
الآن نحن بحاجة إلى اختيار موقفنا $ س $ لتعظيم شارب.
وهذا يعادل (حتى عامل التحجيم) لمشكلة التباين المتوسط.
$$ \ min_x \ \>، $$ حيث $ \ سيغما $ هو مصفوفة قطرية مع $ فار \ t = 0،1. T $ على قطري و $ \ بار = E \ $. والدليل على هذه الحقيقة هو التناقض. لنفترض أن هناك $ x $ مع شارب أعلى ليس هو الحل لمشكلة التباين المتوسط، $ x ^ * $. يمكننا أن نقسم $ x $ من خلال ثابت $ $ ألفا $ بحيث لدينا $ \ ألفا \ بار 'س = \ بار' س ^ * $. في الوقت نفسه، ونحن نعلم أن $$ \ ألفا \ سرت & لوت؛ \ سرت $$ لأن $ x ^ * $ ليس شارب-أوبتيمال. تربيع كلا الجانبين يعطي.
حقيقة أن $ \ ألفا س $ لديه نفس المتوسط ​​والتباين أقل بدقة يتناقض مع افتراض أن $ x ^ * $ هو الحل. وهكذا نستنتج أن متوسط ​​حل التباين هو دائما شارب الأمثل. لاحظ أنه في المشاكل العامة (على سبيل المثال مع القيود) هذا التكافؤ لا يحمل بالضرورة. الآن الحل لمشكلة التباين المتوسط ​​(تأخذ مشتق وتعيين إلى الصفر) هو مجرد $ \ فراك \ سيغما ^ \ بار $. ومع ذلك، في الوقت $ t $ نحن لا داعي للقلق حول أي شيء آخر من $ x_t $. فمن الممكن لحساب $ x $ للأوقات المستقبلية التي هي الأمثل فيما يتعلق بالتوقعات الحالية، ولكن من الناحية العملية فمن الأفضل لإعادة تشغيل خوارزمية إلى الأمام إلى الوراء بعد أن نلاحظ العودة القادمة ومن ثم إعادة حساب $ X_ $. الحل الأمثل لذلك هو الرهان تناسبيا إلى $ \ فراك>> $. هذا له تفسير بديهي كما $$ \ فراك>> = \ فراك> >> \ فراك >> $$ بحيث $$ x_t \ سرت> = \ فراك> >>، $$ أي اتخاذ المخاطر نسبة إلى المتوقع شارب في كل زمن.
إذا كان لديك تكاليف المعاملة ثم تحتاج إلى النظر في الوسائل والتباينات في المستقبل، الأمر الذي يجعل المشكلة أكثر صعوبة، ولكن قابلة للتنفيذ.

QuantStart.
الانضمام إلى كوانتكاديمي بوابة العضوية الخاصة التي تلبي احتياجات التجزئة المتزايد بسرعة المجتمع تاجر الكمي. سوف تجد مجموعة من ذوي الخبرة مثل التفكير من التجار الكميون على استعداد للرد على أسئلة التداول الكمي الأكثر إلحاحا.
تحقق من بلدي يبوك على التداول الكمي حيث أنا يعلمك كيفية بناء مربحة استراتيجيات التداول المنهجي مع أدوات بايثون، من الصفر.
نلقي نظرة على بلدي الكتاب الاليكتروني الجديد على استراتيجيات التداول المتقدمة باستخدام تحليل سلسلة زمنية، والتعلم الآلي والإحصاءات بايزي، مع بيثون و R.
من قبل مايكل هالز مور في 5 سبتمبر، 2018.
وهناك تحد ثابت أمام التجار الكميين هو تعديل السلوك المتكرر للأسواق المالية، وغالبا ما يكون فجأة بسبب تغير فترات السياسة الحكومية والبيئة التنظيمية وغيرها من الآثار الاقتصادية الكلية. وتعرف هذه الفترات بالعامية بأنها "أنظمة السوق"، وكشف هذه التغييرات هو عملية مشتركة، وإن كانت صعبة، من قبل المشاركين في السوق الكمية.
وتؤدي هذه الأنظمة المختلفة إلى تعديلات في عائدات الأصول عن طريق التحولات في وسائلها، والفروق / التقلبات، والارتباط المتسلسل والتباين، مما يؤثر على فعالية أساليب السلاسل الزمنية التي تعتمد على الاستبانة. على وجه الخصوص يمكن أن يؤدي إلى ارتباط ديناميكيا متفاوتة، والتفرطح الزائد ("ذيل الدهون")، متغايرة (تجميع الارتباط المتسلسل) فضلا عن عوائد المنحرفة.
هذا يحفز الحاجة للكشف عن فعالية وتصنيف هذه الأنظمة من أجل اختيار الأمثل نشر استراتيجيات التداول الكمي وتحسين المعلمات داخلها. ثم تصبح مهمة النمذجة محاولة لتحديد متى حدث نظام جديد وتعديل نشر الاستراتيجية وإدارة المخاطر ومعايير تحديد المواقع وفقا لذلك.
ومن الطرق الرئيسية لتنفيذ الكشف عن النظام استخدام تقنية سلسلة زمنية إحصائية تعرف باسم نموذج ماركوف الخفي [2]. هذه النماذج هي مناسبة تماما للمهمة لأنها تنطوي على الاستدلال على العمليات "الخفية" التوليدية عن طريق "صاخبة" الملاحظات غير المباشرة المرتبطة بهذه العمليات. وفي هذه الحالة تكون العملية الخفية أو الكامنة هي حالة النظام الأساسية، في حين أن عوائد الأصول هي الملاحظات غير المباشرة التي تتأثر بهذه الدول.
سوف تناقش هذه المقالة سلسلة النظرية الرياضية وراء نماذج ماركوف المخفية (هم) وكيف يمكن تطبيقها على مشكلة الكشف عن النظام لأغراض التداول الكمي.
وستبدأ المناقشة بإدخال مفهوم نموذج ماركوف ([1]) والتصنيف المرتبط به، الذي يعتمد على مستوى الاستقلال الذاتي في النظام وكذلك مقدار المعلومات المتعلقة بالنظام. وستركز المناقشة بعد ذلك على هيكل آلية إدارة حقوق الإنسان على أنها عملية مستقلة، مع معلومات يمكن ملاحظتها جزئيا.
وكما هو الحال مع المناقشات السابقة حول نماذج الفضاء الحكومية الأخرى ومرشح كالمان، سيتم توضيح المفاهيم الاستنتاجية للفلترة والتلطيف والتنبؤ. خوارزميات محددة مثل خوارزمية إلى الأمام [6] وخوارزمية فيتربي [7] التي تنفذ هذه المهام لن يتم تقديمها كمحور للمناقشة تقع بقوة في تطبيقات هم إلى التمويل الكمي، بدلا من اشتقاق الخوارزمية.
في المقالات اللاحقة سيتم تطبيق هم على مختلف الأصول للكشف عن الأنظمة. وستضاف بعد ذلك تراكبات الكشف إلى مجموعة من استراتيجيات التداول الكمي عن طريق "مدير المخاطر". سيتم استخدام هذا لتقييم كيفية اختلاف أداء التداول الحسابي مع وبدون الكشف عن النظام.
نماذج ماركوف.
قبل مناقشة نماذج ماركوف المخفية من الضروري النظر في المفهوم الأوسع لنموذج ماركوف. نموذج ماركوف هو نموذج الفضاء الدولة العشوائية التي تنطوي على انتقالات عشوائية بين الدول حيث احتمال القفزة يعتمد فقط على الحالة الراهنة، بدلا من أي من الدول السابقة. ويقال إن النموذج يمتلك عقار ماركوف وهو "بلا ذاكرة". نماذج المشي العشوائي هي مثال آخر مألوف لنموذج ماركوف.
ماركوف يمكن تصنيف النماذج إلى أربع فئات واسعة من النماذج اعتمادا على استقلالية النظام وما إذا كان يمكن ملاحظة كل أو جزء من المعلومات حول النظام في كل ولاية. توفر صفحة نموذج ماركوف في ويكيبيديا [1] مصفوفة مفيدة توضح هذه الاختلافات، والتي سوف تتكرر هنا:
أبسط نموذج، سلسلة ماركوف، على حد سواء مستقلة ويمكن ملاحظتها بشكل كامل. لا يمكن تعديلها من خلال إجراءات "وكيل" كما هو الحال في العمليات الخاضعة للرقابة وجميع المعلومات متاحة من النموذج في أي دولة. مثال جيد لسلسلة ماركوف هو خوارزمية سلسلة ماركوف مونتي كارلو (مسمك) المستخدمة بكثافة في الاستدلال البيزي الحسابي.
إذا كان النموذج لا يزال مستقلا تماما ولكن فقط يمكن ملاحظتها جزئيا ثم يعرف باسم نموذج ماركوف المخفية. وفي مثل هذا النموذج، توجد دول كامنة كامنة) واحتماالت انتقال محتملة بينها (ولكنها ال يمكن مالحظتها مباشرة، بل تؤثر على "المالحظات". وهناك نقطة مهمة هي أنه في حين أن الدول الكامنة تمتلك ممتلكات ماركوف ليست هناك حاجة للدول المراقبة للقيام بذلك. الاستخدام الأكثر شيوعا لل هم خارج التمويل الكمي هو في مجال التعرف على الكلام.
وبمجرد السماح للنظام بأن يكون "خاضعا للرقابة" من قبل أحد الوكلاء، فإن هذه العمليات تأتي تحت عنوان التعلم التعزيزي (رل)، والتي تعتبر في الغالب "العمود" الثالث للتعلم الآلي جنبا إلى جنب مع التعلم تحت الإشراف والتعلم غير الخاضع للرقابة. إذا كان النظام يمكن ملاحظته بشكل كامل، ولكن السيطرة عليه، ثم يسمى نموذج عملية ماركوف قرار (مدب). وهناك تقنية ذات صلة تعرف باسم Q-ليارنينغ [11]، والتي تستخدم لتحسين سياسة اختيار العمل للوكيل بموجب نموذج عملية اتخاذ القرار ماركوف. في عام 2018 رائدة غوغل ديبميند استخدام شبكات التعزيز العميق، أو ديب Q شبكات، لخلق وكيل الأمثل للعب أتاري 2600 ألعاب الفيديو فقط من العازلة الشاشة [12].
وإذا كان النظام خاضعا للتحكم ولا يمكن ملاحظته إلا جزئيا، يطلق على نماذج التعلم التعزيزية هذه العمليات التي يمكن رصدها جزئيا من جانب ماركوف (بومبد). تقنيات حل بومدب عالية الأبعاد هي موضوع الكثير من البحوث الأكاديمية الحالية. يقضي الفريق غير الربحي في أوبيناي وقتا طويلا في النظر في مثل هذه المشاكل وأصدر مجموعة أدوات مفتوحة المصدر، أو "صالة ألعاب رياضية"، للسماح بإجراء اختبارات مباشرة لعملاء رل الجديدين المعروفين باسم أوبيناي جيم [13].
لسوء الحظ تعزيز التعزيز، جنبا إلى جنب مع مدب و بومبد، ليست ضمن نطاق هذه المادة. ومع ذلك فإنها سوف تكون موضوع مقالات في وقت لاحق، لا سيما كما تم تطوير سلسلة المادة حول التعلم العميق.
لاحظ أنه في هذه المقالة لا يتم النظر في عمليات ماركوف الوقت المستمر. في التداول الكمي يتم إعطاء وحدة الوقت في كثير من الأحيان عن طريق القراد أو أشرطة من بيانات الأصول التاريخية. ومع ذلك، إذا كان الهدف هو عقود المشتقات السعرية، فسيتم استخدام آلية حساب الوقت العشوائي المستمر.
نموذج ماركوف المواصفات الرياضية.
هذا القسم وكذلك على نموذج ماركوف النموذجية الرياضية المخفية سوف تتابع عن كثب تدوين ومواصفات نموذج ميرفي (2018) [8].
وفي مجال التمويل الكمي، غالبا ما يكون تحليل السلاسل الزمنية ذا أهمية رئيسية. تتكون هذه السلاسل الزمنية عموما من تسلسل من $ T $ ملاحظات منفصلة $ X_1، \ لدوتس، X_T $. الافتراض الهام حول نماذج ماركوف سلسلة هو أنه في أي وقت $ t $، الملاحظة $ X_t $ يلتقط كل المعلومات اللازمة اللازمة لجعل التنبؤات حول الدول في المستقبل. وسيستخدم هذا الافتراض في المواصفات التالية.
إن صياغة سلسلة ماركوف في إطار احتمالي يسمح بوظيفة الكثافة المشتركة لاحتمال رؤية الملاحظات على النحو التالي:
\ بيجين p (X_) & = & p (X_1) p (X_2 \ ميد X_1) p (X_3 \ ميد X_2) \ لدوتس \\ & = & p (X_1) \ برود ^ _ p (X_t \ ميد X_) \ النهاية.
وينص ذلك على أن احتمال رؤية تسلسل الرصدات يعطى باحتمال الملاحظة الأولية مضروبا بمقدار T-1 دولار بالاحتمال الشرطي لرؤية الملاحظة اللاحقة، بالنظر إلى الملاحظة السابقة التي حدثت. وسوف يفترض في هذه المادة أن هذا المصطلح الأخير، المعروف باسم وظيفة الانتقال، $ p (X_t \ ميد X_) $ سيكون نفسه مستقلا للوقت.
بالإضافة إلى ذلك، بما أن نماذج نظام السوق التي تم النظر فيها في هذه المقالة سوف تتكون من عدد صغير، منفصل من الأنظمة (أو "الدول")، على سبيل المثال $ K $، ونوع النموذج قيد النظر يعرف باسم سلسلة ماركوف المنفصلة (DSMC).
وهكذا إذا كان هناك $ K $ منفصلة الحالات الممكنة، أو الأنظمة، لنموذج ليكون في أي وقت $ t $ ثم يمكن أن تكتب وظيفة الانتقال كمصفوفة انتقال يصف احتمال الانتقال من الدولة $ $ $ إلى الدولة $ i $ في أي وقت خطوة $ t $. رياضيا، وتعطى عناصر مصفوفة الانتقال $ A $ من خلال:
\ بيجين A_ = p (X_t = j \ ميد X_ = i) \ إند.
وكمثال على ذلك من الممكن النظر في نموذج ماركوف سلسلة الدولتين بسيطة. ويمثل الرسم البياني التالي الحالات المرقمة كدوائر بينما تمثل الأقواس احتمال القفز من دولة إلى أخرى:
نموذج الدولة ماركوف سلسلة الدولتين.
لاحظ أن مجموع الاحتمالات للوحدة لكل دولة، أي $ \ ألفا + (1 - \ ألفا) = 1 $. مصفوفة الانتقال $ A $ لهذا النظام هو مصفوفة $ 2 \ تيمس 2 $ تعطى من قبل:
\ بيجين A = \ ليفت (\ بيجين 1- \ ألفا & \ ألفا \\ \ بيتا & 1- \ بيتا \ إند \ رايت) \ إند.
من أجل محاكاة $ n $ خطوات من نموذج دسم العام فمن الممكن تحديد $ n $ - step مصفوفة الانتقال $ A (n) $ على النحو التالي:
يمكن أن يظهر بسهولة أن $ A (m + n) = A (m) A (n) $ وبالتالي أن $ A (n) = A (1) ^ n $. وهذا يعني أن $ n $ خطوات من نموذج دسمك يمكن محاكاة ببساطة عن طريق تكرار ضرب مصفوفة الانتقال مع نفسها.
نماذج ماركوف المخفية.
نماذج ماركوف المخفية هي نماذج ماركوف حيث الدول الآن "مخفية" من وجهة نظر، بدلا من كونها يمكن ملاحظتها مباشرة. بدلا من ذلك هناك مجموعة من الملاحظات الإخراج، المتعلقة الدول، والتي هي واضحة للعيان. ولجعل هذا الأمر ملموسا لمثال التمويل الكمي، يمكن التفكير في أن الدول هي "أنظمة" مخفية يمكن أن يتصرف بموجبها السوق في حين أن الملاحظات هي عوائد الأصول المرئية بشكل مباشر.
في نموذج ماركوف فمن الضروري فقط لإنشاء وظيفة كثافة مشتركة للملاحظات. وقد تم تحديد مصفوفة انتقالية ثابتة زمنيا تسمح بالمحاكاة الكاملة للنموذج. ل ماركوف نماذج المخفية من الضروري إنشاء مجموعة من حالات منفصلة $ z_t \ في \ $ (على الرغم من أن لأغراض الكشف عن النظام فإنه غالبا ما يكون من الضروري فقط أن يكون $ K \ ليق 3 $) ونموذج الملاحظات مع احتمال إضافي موديل، $ p (_t \ ميد z_t) $. أي الاحتمال الشرطي لرؤية ملاحظة معينة (عائد الأصول) بالنظر إلى أن الدولة (نظام السوق) تساوي حاليا $ z_t $.
اعتمادا على الحالة المحددة والاحتمالات الانتقال الملاحظة نموذج ماركوف المخفية سوف تميل إلى البقاء في دولة معينة ومن ثم القفز فجأة إلى دولة جديدة والبقاء في تلك الدولة لبعض الوقت. هذا هو بالضبط السلوك المطلوب من مثل هذا النموذج عند محاولة تطبيقه على أنظمة السوق. ومن غير المتوقع أن تتغير النظم نفسها بسرعة كبيرة (النظر في التغييرات التنظيمية وغيرها من الآثار الاقتصادية الكلية البطيئة الحركة). ومع ذلك، عندما تتغير فإنه من المتوقع أن تستمر لبعض الوقت.
نموذج ماركوف المخفية المواصفات الرياضية.
وتعطى وظيفة الكثافة المشتركة المناظرة ل هم (مرة أخرى باستخدام تدوين من ميرفي (2018) [8]):
في السطر الأول هذا يشير إلى أن الاحتمال المشترك لرؤية مجموعة كاملة من الحالات والملاحظات الخفية يساوي احتمال رؤية ببساطة الحالات الخفية مضروبا في احتمال رؤية الملاحظات، مشروطا على الدول. وهذا أمر منطقي لأن الملاحظات لا يمكن أن تؤثر على الدول، ولكن الدول الخفية تؤثر بشكل غير مباشر على الملاحظات.
ينقسم السطر الثاني هذه التوزيعات إلى وظائف انتقالية. وتعطى الدالة الانتقالية للولايات بمقدار $ p (z_t \ ميد z_) $ بينما يعطى ذلك للملاحظات (التي تعتمد على الولايات) بمقدار $ p (_t \ ميد z_t) $.
وكما هو الحال مع وصف نموذج ماركوف أعلاه، يفترض لأغراض هذه المادة أن كل من وظائف الانتقال في الحالة والمراقبة تكون ثابتة زمنيا. وهذا يعني أنه من الممكن الاستفادة من $ K \ مرات K $ الدولة مصفوفة الانتقال $ A $ كما كان من قبل مع نموذج ماركوف لهذا المكون من النموذج.
ومع ذلك، بالنسبة للتطبيق الذي ينظر فيه هنا، أي ملاحظات عوائد الأصول، فإن القيم في الواقع مستمرة. وهذا يعني أن اختيار النموذج لوظيفة انتقال المراقبة أكثر تعقيدا. ويتمثل الاختيار المشترك في استخدام توزيع غوسي مشروط متعدد المتغيرات بمتوسط ​​$ _k $ والتغاير $ _k $. وهذا أمر رسمي أدناه:
أي إذا كانت الدولة z_t $ تساوي حاليا $ k $، فإن احتمال رؤية الملاحظة $ _t $، نظرا لمعايير النموذج $ \ ثيتا $، يتم توزيعه كغويان متعدد المتغيرات.
من أجل جعل هذا أكثر وضوحا قليلا يوضح الرسم البياني التالي تطور الدول $ z_t $ وكيف أنها تؤدي بشكل غير مباشر إلى تطور الملاحظات، $ _t $:
تصفية نماذج ماركوف المخفية.
مع تحديد وظيفة الكثافة المشتركة فإنه لا يزال للنظر في كيفية استخدام النموذج. في النمذجة العامة للدولة الفضاء هناك في كثير من الأحيان ثلاث مهام رئيسية من الفائدة: تصفية، والتلطيف والتنبؤ. تصف المقالة السابقة على نماذج الحالة الفضائية ومرشح كالمان هذه لفترة وجيزة. وسوف تتكرر هنا من أجل اكتمالها:
التنبؤ - التنبؤ القيم اللاحقة للدولة تصفية - تقدير القيم الحالية للدولة من الملاحظات الماضية والحالية تجانس - تقدير القيم السابقة للدولة نظرا للملاحظات.
الترشيح والتنعيم متشابهان، ولكنهما ليسا متطابقين. التملص هو القلق مع الرغبة في فهم ما حدث للدول في الماضي نظرا للمعرفة الحالية، في حين أن الترشيح يتعلق بما يحدث مع الدولة الآن.
ومن خارج نطاق هذه المقالة لوصف بالتفصيل الخوارزميات المتقدمة للفلترة والتجانس والتنبؤ. الهدف الرئيسي من هذه السلسلة هو تطبيق نماذج ماركوف المخفية للكشف عن النظام. ومن ثم تصبح المهمة قيد النظر ما يحدده "نظام السوق الحالي" في العالم في استخدام عائدات الأصول المتاحة حتى الآن. وبالتالي هذه مشكلة الترشيح.
رياضيا الاحتمال الشرطي للدولة في الوقت $ t $ نظرا لتسلسل الملاحظات حتى الوقت $ $ $ هو موضع اهتمام. وهذا يتضمن تحديد $ p (z_t \ ميد _) $. كما هو الحال مع تصفية كالمان فمن الممكن أن تطبق بشكل متكرر حكم بايس من أجل تحقيق تصفية على هم.
الخطوات التالية.
في المقالة الثانية من سلسلة الكشف عن النظام للأصول المالية سيتم مناقشة بمزيد من العمق. وبالإضافة إلى ذلك، ستطبق مكتبات من لغة بايثون على عوائد الأصول التاريخية من أجل إنتاج أداة للكشف عن النظام ستستخدم في نهاية المطاف كأداة لإدارة المخاطر من أجل التداول الكمي.
ملاحظة بيبليوغرافية.
نظرة عامة على نماذج ماركوف (فضلا عن تصنيفاتها المختلفة)، بما في ذلك نماذج ماركوف المخفية (والخوارزميات لحلها)، ويمكن الاطلاع عليها في المقالات التمهيدية على ويكيبيديا [1]، [2]، [3]، [4] ، [5]، [6]، [7].
ويمكن الاطلاع على نظرة عامة كتابية مفصلة للغاية الرياضية من نماذج ماركوف المخفية، مع تطبيقات لمشاكل التعرف على الكلام وخوارزمية تصنيف الصفحات جوجل، في ميرفي (2018) [8]. المطران (2007) [8] يغطي أرضية مماثلة لمورفي (2018)، بما في ذلك اشتقاق تقدير الاحتمال الأقصى (مل) ل هم وكذلك خوارزميات إلى الأمام والخلف وفيتربي. وتختتم المناقشة بالنظم الديناميكية الخطية وفلاتر الجسيمات.
المراجع.
مجرد بدء مع التداول الكمي؟
3 أسباب الاشتراك في قائمة البريد الإلكتروني كوانتستارت:
1. دروس التداول الكمي.
سوف تحصل على إمكانية الوصول الفوري إلى دورة مجانية 10-البريد الإلكتروني معبأة مع تلميحات ونصائح لمساعدتك على البدء في التداول الكمي!
2. جميع أحدث المحتوى.
كل أسبوع سوف نرسل لك التفاف جميع الأنشطة على كوانتستارت لذلك عليك أن لا يفوتون وظيفة مرة أخرى.
ريال مدريد، وقابلة للتنفيذ نصائح التداول الكمي مع أي هراء.

QuantStart.
الانضمام إلى كوانتكاديمي بوابة العضوية الخاصة التي تلبي احتياجات التجزئة المتزايد بسرعة المجتمع تاجر الكمي. سوف تجد مجموعة من ذوي الخبرة مثل التفكير من التجار الكميون على استعداد للرد على أسئلة التداول الكمي الأكثر إلحاحا.
تحقق من بلدي يبوك على التداول الكمي حيث أنا يعلمك كيفية بناء مربحة استراتيجيات التداول المنهجي مع أدوات بايثون، من الصفر.
نلقي نظرة على بلدي الكتاب الاليكتروني الجديد على استراتيجيات التداول المتقدمة باستخدام تحليل سلسلة زمنية، والتعلم الآلي والإحصاءات بايزي، مع بيثون و R.
من قبل مايكل هالز مور في 21 فبراير، 2017.
في المقالة السابقة عن نماذج ماركوف المخفية تم عرض كيف يمكن تطبيق تطبيقها على الفهرس يعود البيانات كآلية لاكتشاف "أنظمة السوق الكامنة". تم تحليل عوائد S & أمب؛ P500 باستخدام R بيئة البرمجة الإحصائية. وقد لوحظ أنه تم الكشف عن فترات من التقلبات المختلفة، وذلك باستخدام كل من دولتين وثلاث دول النماذج.
في هذه المقالة سيتم استخدام نموذج ماركوف المخفية ضمن إطار كسترادر ​​كمرشح لنظام إدارة المخاطر في السوق. وسوف يتم رفض الصفقات عندما يتم التنبؤ بأنظمة تقلب أعلى. والأمل هو أن يؤدي ذلك إلى القضاء على الصفقات غير المربحة وربما إزالة التقلب من الاستراتيجية، وبالتالي زيادة نسبة شارب لها.
من أجل تحقيق هذا بعض التعديلات كود صغير ل كسترادر ​​كانت ضرورية، والتي تم الآن جعل العيش على صفحة جيثب.
وسيتم إقران تراكب نظام السوق باستراتيجية مبسطة قصيرة الأجل للاتجاه، تستند إلى قواعد كروس أوفر متوسطة. والاستراتيجية نفسها غير مهمة نسبيا لأغراض هذه المادة، حيث أن أغلبية المناقشة ستركز على تنفيذ منطق إدارة المخاطر.
كسترادر ​​هو مكتوب في بيثون، في حين نفذ التنفيذ السابق لنموذج ماركوف المخفية في R. وبالتالي لأغراض هذه المادة فمن الضروري الاستفادة من مكتبة بايثون التي تنفذ بالفعل نموذج ماركوف المخفية. همليرن هي مكتبة من هذا القبيل، وسوف تستخدم هنا.
كشف النظام مع نماذج ماركوف المخفية.
إذا كنت غير مألوف مع نماذج ماركوف المخفية و / أو لا يدركون كيف يمكن استخدامها كأداة لإدارة المخاطر، فمن الجدير إلقاء نظرة على المقالات التالية في هذه السلسلة:
الأول يناقش الأساس الرياضي والإحصائي وراء النموذج في حين أن المادة الثانية تستخدم حزمة debmixS4 R لتتناسب مع عودة هم إلى S & أمب؛ P500.
نماذج ماركوف المخفية هي نوع من نموذج ستوشاستيك للفضاء. فهم يفترضون وجود حالت "مخفية" أو "كامنة" لا يمكن ملاحظتها مباشرة. هذه الحالات المخفية لها تأثير على القيم التي يمكن ملاحظتها، والمعروفة باسم الملاحظات. أحد أهداف النموذج هو التأكد من الحالة الراهنة من مجموعة الملاحظات المعروفة.
في التداول الكمي تترجم هذه المشكلة إلى وجود أنظمة سوق "مخفية" أو "كامنة"، مثل تغيير البيئات التنظيمية، أو فترات من التقلبات الزائدة. الملاحظات في هذه الحالة هي العائدات من مجموعة معينة من بيانات السوق المالية. وتتأثر العائدات بشكل غير مباشر بنظم السوق الخفية. تركيب نموذج ماركوف مخفي لبيانات العودة يسمح التنبؤ دول النظام الجديد، والتي يمكن استخدامها لإدارة المخاطر آلية تصفية التداول.
إستراتيجية التداول.
استراتيجية التداول لهذه المقالة بسيطة للغاية وتستخدم لأنها يمكن أن تكون مفهومة جيدا. والمسألة الهامة هي جانب إدارة المخاطر الذي سيولى اهتماما أكبر بكثير.
وتتمثل الاستراتيجية التالية على المدى القصير في المتوسط ​​الكلاسيكي المتوسط ​​المتحرك. القواعد بسيطة:
في كل شريط حساب المتوسطات المتحركة البسيطة لمدة 10 أيام و 30 يوما (سما) إذا تجاوز المتوسط ​​المتحرك ل 10 أيام المتوسط ​​المتحرك للسهم لمدة 30 يوما، ولا يتم استثمار الإستراتيجية، ثم انتقل لفترة طويلة إذا تجاوز المتوسط ​​المتحرك سما لمدة 30 يوما 10- يوم سما واستراتيجية يتم استثمارها، ثم إغلاق الموقف.
هذه ليست استراتيجية فعالة بشكل خاص مع هذه المعايير، وخاصة على أسعار مؤشر S & أمب؛ P500. ولن يحقق ذلك الكثير في مقابل شراء وشراء صندوق الاستثمار المتقاعد (سبي إتف) لنفس الفترة.
ومع ذلك، عندما يقترن ذلك بمرشح تجاري لإدارة المخاطر يصبح أكثر فعالية نظرا لإمكانية القضاء على الصفقات التي تحدث في فترات متقلبة للغاية، حيث يمكن لهذه الاستراتيجيات التي تتبع الاتجاه أن تفقد المال.
يعمل مرشح إدارة المخاطر هنا من خلال تدريب نموذج ماركوف المخفية على بيانات S & أمب؛ P500 من 29 يناير 1993 (أقرب البيانات المتاحة ل سبي على ياهو المالية) حتى 31 ديسمبر 2004. ثم يتم تسلسل هذا النموذج (عن طريق بيثون مخلل ) واستخدامها مع فئة فرعية كسترادر ​​ريسماناجر.
يقوم مدير المخاطر بالتحقق من كل تجارة يتم إرسالها، سواء كانت الحالة الحالية تقلبا منخفضا أو نظام تقلب عالي. وإذا كان التقلب منخفضا، فإن أي صفقات طويلة يتم السماح بها من خلال وتنفيذها. إذا كان التذبذب مرتفعا يتم إغلاق أية صفقات مفتوحة عند استلام إشارة الإغلاق، في حين يتم إلغاء أي صفقات طويلة محتملة جديدة قبل السماح لها بالمرور.
وهذا له الأثر المرغوب فيه المحتمل للقضاء على الصفقات التالية للاتجاه في فترات ذات حجم مرتفع حيث من المرجح أن تفقد المال بسبب التحديد غير الصحيح "للاتجاه".
يتم تنفيذ باكتست من هذه الاستراتيجية من 1 يناير 2005 إلى 31 ديسمبر 2018، دون إعادة تدريب نموذج ماركوف المخفية على طول الطريق. ويعني ذلك على وجه الخصوص أن وزارة الصحة العامة تستخدم العينة خارج العينة وليس على بيانات التدريب داخل العينة.
من أجل تنفيذ هذه الاستراتيجية من الضروري أن يكون بيانات التسعير أوهلكف اليومية لسجل إتف سبي للفترة المشمولة بتدريب هم و باكتست:
سوف تحتاج هذه البيانات إلى وضعها في الدليل المحدد بواسطة ملف إعدادات كسترادر ​​إذا كنت ترغب في تكرار النتائج.
بيثون التنفيذ.
إرجاع الحساب مع كسترادر.
من أجل تنفيذ تنبؤات النظام باستخدام نموذج ماركوف المخفية فمن الضروري لحساب وتخزين عوائد سعر إغلاق تعديل سبي. حتى الآن فقط تم تخزين الأسعار. الموقع الطبيعي لتخزين العوائد في الفئة الفرعية برايسهاندلر. ومع ذلك، كسترادر ​​لم يدعم سابقا هذا السلوك وهكذا تمت إضافته كميزة.
كان تعديل بسيط نسبيا ينطوي على اثنين من التغييرات الطفيفة. الأول هو إضافة علم منطقية Calc_adj_returns إلى إنيتياليساتيون من الفئة. إذا تم تعيين هذا إلى ترو ثم سيتم حساب العوائد المعدلة وتخزينها، وإلا فإنها لن تكون. من أجل تقليل التأثير على رمز عميل آخر يتم تعيين الافتراضي إلى خطأ.
التغيير الثاني يتجاوز الأسلوب "الظاهري" _store_event وجدت في فئة أبستراسباربريسيهاندلر مع ما يلي في الفئة الفرعية ياهودايليسفباربريسيهاندلر.
يتحقق الشفرة إذا كان cal_adj_returns يساوي ترو. فإنه يخزن أسعار الإغلاق المعدلة السابقة والحالية، وتعديلها مع بريسيبارسر، ويحسب عوائد النسبة المئوية ومن ثم إضافتها إلى قائمة adj_close_returns. وتسمى هذه القائمة في وقت لاحق من قبل ريجيممريسكاناجر من أجل التنبؤ حالة النظام الحالي:
هذا التعديل هو بالفعل في أحدث إصدار من كسترادر، والتي (كما هو الحال دائما) يمكن العثور عليها في صفحة جيثب.
تنفيذ كشف النظام.
وسيتجه الاهتمام الآن نحو تنفيذ مرشاح النظام واستراتيجية الاتجاهات القصيرة الأجل التي ستستخدم لتنفيذ الاختبار الخلفي.
وهناك أربعة ملفات منفصلة مطلوبة لتنفيذ هذه الاستراتيجية. يتم تقديم القوائم الكاملة لكل منها في نهاية المقالة. وهذا سوف يسمح تكرار مباشرة من النتائج لأولئك الذين يرغبون في تنفيذ طريقة مماثلة.
يتضمن الملف الأول تركيب نموذج ماركوف المخفية غاوس لفترة كبيرة من S & أمب؛ P500 العوائد. ويحتوي الملف الثاني على منطق تنفيذ الاتجاه القصير الأجل. الملف الثالث يوفر تصفية النظام من الصفقات من خلال كائن مدير المخاطر. الملف النهائي يربط كل هذه الوحدات معا في باكتست.
تدريب نموذج ماركوف المخفية.
قبل إنشاء مرشح كشف النظام من الضروري لتناسب نموذج ماركوف مخفي لمجموعة من البيانات العوائد. لهذا ستستخدم مكتبة بيثون همليرن. و أبي بسيطة للغاية، مما يجعلها واضحة لتناسب وتخزين نموذج لاستخدامها لاحقا.
وتتمثل المهمة الأولى في استيراد المكتبات اللازمة. المخلل ضروري لتسلسلي النموذج لاستخدامها في إدارة المخاطر الكشف عن النظام. يتم استخدام التحذيرات لقمع تحذيرات الإهمال المفرط التي تم إنشاؤها بواسطة سكيكيت تعلم، من خلال المكالمات أبي من همليرن. يتم استيراد غوسيانهم من همليرن تشكيل أساس النموذج. يتم استيراد ماتلوتليب وسيبورن لرسم في الدول مخبأة في العينة، اللازمة ل "فحص التعقل" على سلوك نماذج:
تفتح الدالة query_prices_df ملف كسف لبيانات سبي التي تم تنزيلها من ياهو فينانس في إطار بيانات بانداس. ثم تحسب النسبة المئوية لعائدات أسعار الإغلاق المعدلة وتقطع تاريخ الانتهاء إلى فترة التدريب النهائية المطلوبة. حساب عوائد النسبة المئوية يقدم قيم نان في داتافريم، والتي يتم إسقاطها في مكانها:
الدالة التالية، plot_in_sample_hidden_states، ليست ضرورية تماما لأغراض التدريب. تم تعديله من ملف تعليمي همليرن وجدت في الوثائق.
رمز يأخذ النموذج جنبا إلى جنب مع داتافريم الأسعار ويخلق سوبلوت، مؤامرة واحدة لكل حالة مخفية التي تم إنشاؤها بواسطة النموذج. ويعرض كل مخطط فرعي سعر الإغلاق المعدل الذي تحجبه تلك الحالة / النظام الخفي. هذا مفيد لمعرفة ما إذا كان هم تنتج حالات "عاقل":
وفيما يلي مخرجات هذه الوظيفة المحددة:
ويمكن ملاحظة أن الكشف عن النظام يلتقط إلى حد كبير فترات "التوجهات" والفترات شديدة التقلب. على وجه الخصوص غالبية 2008 يحدث في الدولة المخفية # 1.
ويرتبط هذا البرنامج النصي معا في وظيفة __main__. أولا، يتم تجاهل جميع التحذيرات. بالمعنى الدقيق للكلمة هذه ليست أفضل الممارسات، ولكن في هذه الحالة هناك العديد من تحذيرات الإهمال التي تم إنشاؤها بواسطة سكيكيت تعلم أن تحجب الناتج المطلوب من البرنامج النصي.
بعد ذلك يتم فتح ملف كسف ويتم إنشاء متغير ريتس باستخدام الأمر np. column_stack. وذلك لأن هملارن يتطلب مصفوفة من الكائنات سلسلة، على الرغم من حقيقة أن هذا هو نموذج أحادي المتغير (أنه يعمل فقط على عائدات أنفسهم). باستخدام نومبي بهذه الطريقة يضعه في الشكل الصحيح.
الكائن غوسيانهم يتطلب مواصفات عدد الحالات من خلال المعلمة n_components. وتستخدم دولتان في هذه المقالة، ولكن يمكن أيضا اختبار ثلاثة بسهولة. يتم استخدام مصفوفة التباين الكامل، بدلا من إصدار قطري. ويعطى عدد التكرارات المستخدمة في خوارزمية التوقع - التعظيم بواسطة المعلمة n_iter.
تم تركيب النموذج والنتيجة من الخوارزمية الإخراج. يتم رسم الولايات الخفية التي تخفي أسعار الإغلاق المعدلة. وأخيرا يتم اختلاط النموذج (مسلسل) إلى pickle_path، وعلى استعداد لاستخدامها في إدارة المخاطر الكشف عن النظام في وقت لاحق في هذه المادة:
الاتجاه قصير الأجل بعد الاستراتيجية.
المرحلة التالية في هذه العملية هو خلق فئة الاستراتيجية التي تغلف على المدى القصير اتجاه الاتجاه التالية التي سيتم في نهاية المطاف يتم تصفيتها من قبل وحدة ريسماناجر.
كما هو الحال مع جميع الاستراتيجيات التي وضعت داخل كسترادر ​​فمن الضروري لاستيراد بعض فئات محددة، بما في ذلك بريسيبارسر، سيغناليفنت و أبستراكتستراتيغي الطبقة الأساسية. وهذا يشبه العديد من الاستراتيجيات الأخرى التي نفذت على الموقع، وبالتالي فإن سبب هذه الواردات لن يتم التأكيد:
الفئة الفرعية موفينغافيراجكروسستراتيجي هي في الواقع واحدة من الأمثلة الموجودة ضمن دليل أمثلة كسترادر. ومع ذلك فقد تم تكرارها هنا لاستكمالها. وتستخدم الاستراتيجية اثنين من طوابير مزدوجة العضوية، وجدت في وحدة ديك، لتوفير النوافذ المتداول على بيانات التسعير. هذا هو لحساب المتوسطات الطويلة البسيطة والقصيرة البسيطة التي تشكل منطق الاتجاه التالي على المدى القصير:
كل كسترادر ​​أبستراكتستراتيغي تستخدم فئات فرعية - dived طريقة account_signals لتوليد الكائنات سيغناليفنت. الأسلوب هنا يتحقق أولا ما إذا كان الحدث هو شريط أوهلكف. على سبيل المثال، يمكن أن يكون سينتيمنتيفنت (كما هو الحال في استراتيجيات أخرى) وبالتالي مطلوب الاختيار. يتم إلحاق الأسعار بالديك بالطريقة الصحيحة، وبالتالي توفير النوافذ المتداول التي يمكن أن تؤدي إلى سما.
إذا كان هناك ما يكفي من الحانات لتنفيذ المتوسطات المتحركة ثم يتم حساب كلاهما. وبمجرد توافر هذه القيم يتم تنفيذ قواعد التداول المذكورة أعلاه. إذا تجاوزت النافذة القصيرة سما الإطار الطويل سما، ولم تستثمر الإستراتيجية بالفعل، فإنها تولد موقعا طويلا من أسهم قاعدة الأساس. إذا تجاوزت نافذة سما الطويلة الإطار القصير سما يتم إغلاق الموقف إذا استثمرت بالفعل:
مدير إدارة اكتشاف النظام.
كائن أبستراكتريسكاناجراجر فرعية هو الاستخدام الرئيسي الأول لإدارة المخاطر تطبيقها بشكل منفصل لاستراتيجية على الموقع حتى الآن. وكما هو مبين أعلاه، فإن الهدف من هذا الكائن هو تصفية الصفقات القصيرة الأجل التي تتبع الاتجاه عند وجود نظام تقلب مرتفع غير مرغوب فيه.
جميع الفئات الفرعية ريسماناجر تتطلب الوصول إلى أوردريفنت حيث لديهم القدرة على القضاء أو تعديل أو إنشاء أوامر اعتمادا على قيود المخاطر للمحفظة:
يتطلب ريجيممريسكاناجر ببساطة الوصول إلى ملف نموذج هم ديسيرياليسد. It also keeps track of whether the strategy is "invested" or not, since the Strategy object itself will have no knowledge of whether its signals have actually been executed:
A helper method, determine_regime , uses the price_handler object and the sized_order event to obtain the full list of adjusted closing returns calculated by QSTrader (see the code in the previous section for details). It then uses the predict method of the GaussianHMM object to produce an array of predicted regime states. It takes the latest value and then uses this as the current "hidden state", or regime:
The refine_orders method is necessary on all AbstractRiskManager - derived subclasses. In this instance it calls the determine_regime method to find the regime state. It then creates the correct OrderEvent object, but crucially at this stage does not return it yet:
The latter half of the method is where the regime detection risk management logic is based. It consists of a conditional block that firstly checks which regime state has been identified.
If it is the low volatility state #0 it checks to see if the order is a "BOT" or "SLD" action. If it is a "BOT" (long) order then it simply returns the OrderEvent and keeps track of the fact that it now has a long position open. If it is "SLD" (close) action then it closes the position if one is open, otherwise it cancels the order.
If however the regime is predicted to be the high volatility state #1 then it also checks which action has occurred. It does not allow any long positions in this state. It only allows a close position to occur if a long position has previously been opened, otherwise it cancels it.
This has the effect of never generating a new long position when in regime #1. However, a previously open long position can be closed in regime #1.
An alternative approach might be to immediately close any open long position upon entering regime #1, although this is left as an exercise for the reader!
This concludes the RegimeHMMRiskManager code. All that remains is to tie the above three scripts/modules together through a Backtest object. The full code for this script can be found, as with the rest of the modules, at the end of this article.
In regime_hmm_backtest. py both an ExampleRiskManager and the RegimeHMMRiskManager are imported. This allows straightforward "switching out" of risk managers across backtests to see how the results change:
In the run function the first task is to specify the HMM model pickle path, necessary for deserialisation of the model. Subsequently the price handler is specified. Crucially the calc_adj_returns flag is set to true, which sets the price handler up to calculate and store the returns array.
At this stage the MovingAverageCrossStrategy is instantiated with a short window of 10 days, a long window of 30 days and a base quantity of SPY shares of 10,000.
Finally the hmm_model is deserialised through pickle and the risk_manager is instantiated. The rest of the script is extremely similar to other backtests carried out on the site, so the full code will only be outlined at the end of the article.
It is straightforward to "switch out" risk managers by commenting the RegimeHMMRiskManager line, replacing it with the ExampleRiskManager line and then rerunning the backtest:
To run the backtest it is necessary to open up the Terminal and type the following:
The truncated output is as follows:
نتائج الاستراتيجية.
مصاريف التحويلات.
The strategy results presented here are given net of transaction costs. The costs are simulated using Interactive Brokers US equities fixed pricing for shares in North America. They are reasonably representative of what could be achieved in a real trading strategy.
No Regime Detection Filter.
اضغط على الصورة لعرض أكبر.
The underlying strategy is designed to capture short-term trends in the SPY ETF. It posts a Sharpe Ratio of 0.37, which means it is taking on a substantial amount of volatility in order to generate the returns. In fact the benchmark has an almost identical Sharpe ratio. The maximum daily drawdown is slightly larger than the benchmark, but it produces a slight increase in CAGR at 6.41% compared to 5.62%.
In essence the strategy performs about as well as the buy-and-hold benchmark. This is to be expected given how it behaves. It is a lagged filter and, despite making 41 trades, does not necessarily avoid the large downward moves. The major question is whether a regime filter will improve the strategy or not.
HMM Regime Detection Filter.
اضغط على الصورة لعرض أكبر.
Note that this application of the regime filter is out-of-sample . That is, no returns data used within the backtest was used in the training of the Hidden Markov Model.
The regime filter strategy produces rather different results. Most notably it reduces the strategy maximum daily drawdown to approximately 24% compared to that produced by the benchmark of approximately 56%. This is a big reduction in "risk". However the Sharpe ratio doesn't increase too heavily at 0.48 because the strategy still endures a lot of associated volatility to obtain those returns.
The CAGR does not see a vast improvement at 6.88% compared to 6.41% of the previous strategy but its risk has been reduced somewhat.
Perhaps a more subtle issue is that the number of trades has been reduced from 41 to 31. While the trades eliminated were large downward moves (and thus beneficial) it does mean that the strategy is making less "positively expected bets" and so has less statistical validity.
In addition the strategy did not trade at all from early 2008 to mid 2009. Thus the strategy effectively remained in drawdown from the previous high watermark through this period. The major benefit, of course, is that it did not lose money when many others would have!
A production implementation of such a strategy would likely periodically retrain the Hidden Markov Model as the estimated state transition probabilities are very unlikely to be stationary. In essence, the HMM can only predict state transitions based on previous returns distributions it has seen. If the distribution changes (i. e. due to some new regulatory environment) then the model will need to be retrained to capture its behaviour. The rate at which this needs to be carried out is, of course, the subject of potential future research!
مجرد بدء مع التداول الكمي؟
3 أسباب الاشتراك في قائمة البريد الإلكتروني كوانتستارت:
1. دروس التداول الكمي.
سوف تحصل على إمكانية الوصول الفوري إلى دورة مجانية 10-البريد الإلكتروني معبأة مع تلميحات ونصائح لمساعدتك على البدء في التداول الكمي!
2. جميع أحدث المحتوى.
كل أسبوع سوف نرسل لك التفاف جميع الأنشطة على كوانتستارت لذلك عليك أن لا يفوتون وظيفة مرة أخرى.
ريال مدريد، وقابلة للتنفيذ نصائح التداول الكمي مع أي هراء.

Using Machine Learning to Improve Your Strategy.
In this article, we’ll cover adjusting your position size using a random forest algorithm and turning your strategy on an off using a Hidden Markov Model. You can copy and paste the R code to try it yourself on your own strategies. This article assumes you already have a strategy. You can download the historical data set from my strategy here. If you are looking for a new strategy, you can quickly build one in TR AI DE and copy the trades from the trade table on the Dashboard to a csv. Just make sure you use the same format as the csv above.
Improving Position Sizing.
Position sizing is an important, often overlooked aspect of trading. Many traders look at position sizing as a way to decrease downside risk without seeing it as a tool to increase performance. While it is important not to risk too much of your total account on each trade (usually around 2%), there are far better ways than just using a fixed lot, or fixed percentage, position size for each trade.
One logical train of thought would be to enter a larger position when your trade has a higher probability of success and a smaller position when you are less sure about the trade. Using a random forest, a popular machine-learning algorithm, we can estimate the probability of success for each trade and size accordingly (never risking more than 2% per trade of course).
I went into greater detail on using a random forest to build a Bollinger Band-based strategy for the GBP/USD and we can use a similar approach to help us determine the optimal position size.
Given my data set of historical trades (you can download it here to play around with it yourself), first we classify each trade into three categories based on its return:
Winning trades Returns >= 10 pips Ideally we want to enter into larger positions for these trades Neutral trades Returns < 10 pips and Returns >= -10 pips We can use this as our default position size Losing trades Returns < -10 pips We want to enter into smaller positions for these trades.
Next we have to decide what information we want to use to make our decision, otherwise known as the inputs to the model. This is an area where you should use your experience with your own strategy to make a decision. A couple different options:
Current market conditions Inputs: Volatility, trending or sideways market, etc. This is appropriate if your strategy tends to perform well in certain market conditions Recent performance Inputs: the returns of the last “n” trades If you notice your strategy goes through periods when it performs well and periods when it underperforms, this is probably the way you want to go. External factors Inputs: major news announcements, holidays, Mondays/Fridays, etc. While some traders will avoid trading around these “external factors”, testing to see if this is justified is usually a good idea.
Let’s try using the returns of the last 3 trades to determine the position size of our next trade (you can download the R code here). We will double our position size if the model predicts the next trade will be a “Winning trade” (defined as a return over 10 pips) and cut it in half if it predicts a “Losing trade” (a return of less than -10 pips) and keep the default position size for all “Neutral trades” (returns less than 10 pips but greater than -10 pips). We train the model on the first two thirds of the data set (our historical trades) and then test it on the final third of the trades, our out-of-sample test:
نجاح باهر We were able to get a 20% increase in total return and increase our return per trade from 2.8 pips to over 3.3 pips just by using this fairly basic model. Not bad at all!
Turning On/Off Your Strategy.
Knowing when to start and stop trading can mean the difference between success and failure. However, determining when to “turn off” your strategy is a non-trivial task. Once again we can use a popular machine-learning algorithm, known as a Hidden Markov Model (HMM), to determine market regimes where our strategy underperforms and we should stop trading. (Check out my post on using an HMM to identify market conditions).
First we have to decide what we want to use to identify the different “regimes” of our strategy’s performance. We are asking ourselves “what factors will tell us that we should stop trading our strategy?”
Let’s try using two calculations based off of a 10-period simple moving average (SMA) of our equity curve. We are going to look at both the rate of change over 5-periods and the distance between the current balance of the equity curve and the SMA line. The rate of change (ROC) should tell us if our equity curve is in a general downtrend and the distance between the lines should give us a much more sensitive measure of how the strategy is performing.
Now, based on these two inputs, we will us a 2-state HMM model to decide when we should “turn off” our strategy (you can download the R code here):
We will then look at the performance of the strategy if we stop trading whenever the HMM model classifies the strategy in “Regime 2” (be sure that you shift the HMM’s classification back one data point so you are only using data that would actually be available):
Once again, we see a significant increase in performance! We were able to see a 13% increase in return despite decreasing our number of trades from 1259 to 726, almost doubling our return per trade from 2.1 pips to 4.2 pips, and increase our accuracy from 60% to 67%!
Combining Our Models.
Finally, let’s see what happens when we combine our random forest position sizing model with the HMM regime shifting model on our out-of-sample data set:
By both adjusting our position size based on a random forest model and halting trading when conditions were unfavorable we were able to significantly increase the performance of our strategy. The final return was 44% higher despite having 133 less trades, leading to our return per trading jumping from 2.7 pips to 5.7 pips and the accuracy increasing from 64% to 70%.
Machine learning algorithms and techniques can be a powerful weapon in your arsenal when looking to improve the performance of your strategy.
At Inovance, we use machine-learning algorithms as a method to uncover patterns in the indicators you use to trade but as we saw here, that is just one way to leverage these powerful algorithms to make you a successful trader.

جيكو كوانت - التداول الكمي.
التداول الكمي، التحكيم الإحصائي، تعلم الآلة والخيارات الثنائية.
آخر الملاحة.
Hidden Markov Models – الاتجاه التالي & # 8211؛ Part 4 of 4.
Update: There was a look forward bug in the code when calculating outOfSampleLongReturns and outOfSampleShortReturns, this has been corrected and sadly reduced the sharpe ratio from 3.08 to 0.857. This is why I always publish the code to provide greater transparency than other sites.
Part 3 of this series demonstrated how to train a HMM on a toy model, this post will focus on how to actually go about modelling real life data. A trend following strategy will be developed for trading the S&P 500.
In most machine learning classification problems you need a set of training data which has class labels. Whilst we have the market data we don’t have class labels, the first task is therefor to generate the class labels for the training data.
We are wanting to develop a trend following strategy, we need to select parts of the S&P 500 time series and label them as either in an up trend or down trend (could also have no trend label). In theory you could do this by hand, however this would be not be feasible to do over the whole universe of stocks. Instead we can write a program to automatically classify the data for us, how you classify data as in a trend depends upon your definition of trend.
The labels are seen in the chart below, and price with green underneath means it’s been labelled as a long signal, any price with red above it means that it has the short label.
In the code provided I check to see if the current price is the lowest price for the next 10 periods (variable NDayLookforwardLowHigh), if it is then go long, if the variable is the highest over the next 10 periods then close the long. Do the reverse for shorts. It’s a little crude and I imagine there are significantly better ways to classify trends, might be useful to put a volatility constraint on the trends (should hopefully filter through and improve the sharpe ratio).
In addition to labeling the data a set of vector “features” must be generated, the features should contain variables that are beneficial to detecting trends. The feature vector I used has the ratios of open to close price, open to high price, open to low price and all the intermediate combinations. Often it is desirable to model the dynamics of these variables and put the one period change in these variables inside of the feature vector.
The above image shows the likelihood of each market regime given the HMM trained on the same data set. It is reassuring to see that the Long Regime became very unlikely during the crash of 2008.
واحدة من خصائص ممتازة من هم هو أنها تسمح النمذجة من الحالات التي لها مدة مختلفة ولكن هي من نفس الفئة. For example a trend might last for 10 days, and another trend might last for 35 days, we can pass both of these examples into the HMM and it will try and model the duration difference using the internal state transition probabilities.
13 أفكار حول & لدكو؛ Hidden Markov Models – الاتجاه التالي & # 8211؛ Part 4 of 4 ”
Thank you for sharing the code.
Unfortunately RHmm is deprecated. Perhaps it would be a good idea to adjust the code for depmixS4: cran. r-project/web/packages/depmixS4.
In general this package is even more powerful.
There is a bug in this code – I put random data in and still gave me out of sample sharpe ratio 2.5.
The lag is the wrong way.
Thank you, I have updated the article. My sharpe ratio has evaporated 🙁
This is why I hate R, it’s slow, not object orientated and most of all it’s too easy to introduce look forward bias!
Which is why I look forward to seeing this code converted to python. 🙂
Seriously, I’d love to see your machine-learning work as examples in python. And likely many other folks would too.
All the best and thanks for sharing,
What are you missing in R that is present in other languages that would prevent look ahead bias?
(It is object-oriented by the way, key words are generic functions, S3- and S4-objects)
I’d recommend breaking up the code a little bit more and adding in a bit more explanation per chunk of code. The horizontal scrolling also makes the code very difficult to read. I believe style guidelines recommend fewer than 80 characters per line.
Also, when using xts data, lag is a positive number, though I believe if not, it goes the other way.
Gekko – RHmm doesn’t seem to work anymore – any suggestion for a suitable replacement? Novice quant here so appreciate your advice….awesome blog btw!
Thank you for sharing the code. I think I finally got the ideia of HMM.
how did you specify the initial conditions?
Thanks for share the code, without it I probably won’t figure out how to use HMM.
Thank you for sharing the code. I have question: why do you fit two models with three states? To my mind that trains two models to find three latent states within either a long or short trend but does not tell you if the features are bullish or bearish. The LLH just gives you a measure on how well the three states fit the test features in one model or the other.

No comments:

Post a Comment