تحسين روبوت التداول: خوارزمية جينية



في مقال سابق ، بدأت بمقارنة طرق التحسين البارامترية ، أي اختيار المعلمات ، وتقييم ربحية تداول الروبوت خلال الاختبار الخلفي اللاحق. اتضح أن طريقة مونت كارلو العادية - توليد مجموعات عشوائية غير مترابطة من معلمات الروبوت - تعمل بشكل جيد. أريد الآن اختبار خوارزمية شائعة ، بما في ذلك خوارزمية في مجتمع تجار البرمجة: خوارزمية التحسين الوراثي .

خوارزمية جينية لتحسين استراتيجية التداول


سننظر في هذه الخوارزمية كمثال على تحسين معلمتين. المعلمات المحسنة لروبوتنا هي فترة المتوسط ​​المتحرك و TakeProfit . لمزيد من الانغماس في "علم الوراثة" ، دعونا نتفق على تسمية فترة المتوسط ​​المتحرك الجين المسؤول عن "النمو" ، و TakeProfit - جين "لون العين".

في مساحة قيم المعلمات المقبولة ، في كل نقطة ، يصف كل زوج من الإحداثيات - "لون / ارتفاع العين" نظريًا "فرد" واحد. لنفترض أننا أنشأنا 10 أفراد بشكل عشوائي. كانت هذه هي الخطوة الأولى من خوارزمية التحسين الوراثي - لإنشاء الجيل الأول:



في الفضاء الإحداثي M - T ، يتم تحديد النقاط بشكل عشوائي. على سبيل المثال ، النقطتان اللتان تم تمييزهما بإطار أحمر هما "أفراد" بأسماء محايدة جنسانيا (هذه نقطة مهمة!) Zhenya و Sasha. "نمو" ساشا (في الصيغة الأولية للمشكلة هو متوسط ​​الفترة المتحركة) هو 11 وحدة ، "لون العين" هو 0.6 (عيون خضراء زرقاء). Zhenya يختلف قليلاً في المعلمات. تصف نفس الخصائص الأفراد الثمانية المتبقين.

الخطوة الثانية هي التكاثر


من الجيل الأول بأكمله ، نحدد عددًا معينًا من أنجح الأفراد. المعيار ، بوضوح ، هو قيمة CF. هؤلاء الأفراد سوف يولدون أزواجًا بشكل عشوائي (لهذا السبب ، حصلوا على أسماء محايدة بين الجنسين). بشكل عام ، يمكن تعيين عدد من القواعد لمطابقة الأزواج. على سبيل المثال ، لتحديد الأفراد القريبين في الخصائص (أي حرفيا ، الأقرب في مساحة الإحداثيات) من الأفراد - التزاوج. يمكنك ، على العكس من ذلك ، البحث عن الأضداد (التكاثر). لم أتمكن من العثور على حجج لصالح أحد هذه الخيارات - في تنفيذي ، يتم تشكيل الأزواج بصرامة عن طريق الصدفة ... على سبيل المثال ، اجتازت Zhenya و Sasha المؤهل وقررتا أن تنجب سليل. ماذا يعني هذا في سياقنا:



من شخصين "أبوين" نحصل على الفرد الثالث ، الذي يرث جزءًا من خصائص أحد الوالدين ، وجزء من الآخر. على سبيل المثال ، أنجبت Zhenya و Sasha فردًا من Nikita (Nikita ، Nikita؟):

  • ورث نيكيتا علامة "لون العين" (معلمة TakeProfit للروبوت) من أحد والديه - "Zhenya" ،
  • "النمو" (فترة المتوسط ​​المتحرك للروبوت) ورث نيكيتا من "ساشا" ... ولكن تم تعديله قليلاً في اتجاه والد آخر ، زينيا.

والحقيقة هي أنه كلما صغر حجم مساحة التحسين (في حالتنا يساوي 2) ، كلما كان النسل "أقرب". لا تحدد خوارزمية التحسين الجيني بدقة قواعد "وراثة" الجينات لفرد ابنة. لذلك ، بشكل عشوائي ، استعار نيكيتا لون عينيه دون أي تغييرات ، لكنه تبين أنه في الوسط بين كلا الوالدين ، أقرب إلى أحدهما. في تنفيذي ، بنفس النجاح ، يمكن أن يقترض نيكيتا المعلمات الأصلية من كلا الوالدين.

الخطوة الثالثة هي التكاثر


المحرك للعملية التطورية ، الانتقاء الطبيعي. أعطى 4 من أصل أفضل 10 أفراد 10 أحفاد أكثر. الآن لدينا 20 فردا. تتضمن خوارزمية التحسين الوراثي الحفاظ على حجم سكان ثابت. 10 أفراد يجب أن يموتوا. في هذا التطبيق ، "يموت" معظم أفراد الجيل الأول ، من 80٪ إلى 100٪.
وفقًا لذلك ، في مثالنا ، سيتكون الجيل الجديد من 0 ... والدين و 8 - 10 من نسلهم. بمعنى آخر ، إذا حذفت الكلمات ، فسيتم حساب المتجهات الجديدة لمعلمات الروبوت التجاري من المتجهات التي تم الحصول عليها في الخطوة السابقة ، "الانتشار" (توليفة) من أفضل 4 اختبارات. لن يقبل معظم "كبار السن" المشاركة في تكرار الاختيار الجديد (من الممكن تنفيذ خيارات أخرى).

إكمال الخوارزمية


يتم تكرار الاستنساخ والاختيار مرات N. على وجه التحديد ، في مثالنا ، للمقارنة مع ثلاث خوارزميات تم اختبارها مسبقًا ، يتم اختبار 4 أجيال من 10 أفراد ، أي ما مجموعه 40 اختبارًا.
ولكن قد يحدث أن ينهار سكان آخرون. وبعبارة أخرى ، ستكون جميع الاختبارات بالقرب من عدة نقاط. لتجنب هذا الوضع ، يتم استخدام العديد من الآليات ، على وجه الخصوص:

  • ضخ "الدم الطازج" إلى السكان. إلى أحفاد السكان الحاليين يتم إضافة العديد من الأفراد الجدد الذين تم الحصول عليهم عن طريق الصدفة ، بنفس الطريقة التي تم بها تشكيل السكان الأوليين ،
  • آلية التحور: قد يكون لدى فرد النسل بعض الخصائص (الإحداثيات) المختلفة قليلاً عن خصائص والديه:



في هذا المثال

  • صفات السليل جين وجوس - "النمو" و "لون العين" يتم استعارتهما من كل من الوالدين ،
  • تختلف خصائص نسل Sam و Siri إلى حد ما عن الخصائص المقابلة لكلا الأبوين.

في تنفيذي ، على الرغم من الطفرات و "الأفراد الجدد" ، كان يجب تحديث السكان بشكل دوري ككل لتجنب التقارب المبكر ، وتوطين السكان بالكامل في مساحة محدودة.

إذا عدنا إلى البيانات الأصلية التي اختبرنا عليها خوارزميات مونت كارلو ، وهبوط التدرج ، والخوارزمية التي تحمل اسم العمل "معركة بحرية" ، فيمكن توضيح عملية التحسين من خلال الرسوم المتحركة التالية:



كما ترى من الرسوم المتحركة ، في البداية يكون ترتيب النقاط فوضوياً ، ولكن مع الأجيال اللاحقة ، يميل إلى مناطق ذات قيم أعلى من DF.

قارن الآن الخوارزميات على نفس السطح: P = f ( M ، T ):



مونتي كارلوأصل متدرج"معركة بحرية"الخوارزمية الجينية
95.7٪92.1٪97.0٪96.8٪

متوسط ​​قيمة الطرف الأقصى من CF كنسبة مئوية من القيمة العالمية.

بالطبع ، من السابق لأوانه الحكم على مجموعة واحدة من بيانات الإدخال ، ولكن حتى الآن ، فيما يتعلق بروبوت التداول لدينا ، أقل شأنا من خوارزمية "المعركة البحرية":

  • بشكل غير مهم - بمتوسط ​​القيمة شبه المثلى التي تم العثور عليها من التليف الكيسي ،
  • يعطي أسوأ تقدير للاستقرار البارامي لخوارزمية التداول ، لأنه لا "يبحث" في محيط المعلمات شبه المثلى الموجودة بتفاصيل قليلة جدًا.

الاختبار النهائي ل 4 خوارزميات التحسين


تم إجراء الاختبار النهائي على 4 مجموعات من بيانات الإدخال - نتائج الاختبار الخلفي لاستراتيجية التداول في 4 قطاعات مختلفة من تاريخ الأسعار ( EURUSD : 2016 ، EURUSD: 2017 ، XAUUSD : 2016 ، XAUUSD: 2017).



(أمثلة للمرشحات الرقمية كدالة لمعلمتين لأربع سلاسل زمنية للأسعار)

هذه المرة ، تم تنفيذ التحسين وفقًا لثلاث معلمات:

  1. فترة المتوسط ​​المتحرك "السريع"
  2. فترة المتوسط ​​المتحرك "البطيء"
  3. TakeProfit (الربح على المعاملة ، بالنسبة المئوية ، عند الوصول إلى الصفقة التي تم إنجازها).

أخذت كل من المعلمات 20 قيمة مختلفة. الإجمالي لبناء الجدول
P = F (Mf ، Ms ، T)
حيث P هو الربح ، و Mf هي فترة المتوسط ​​المتحرك "السريع" ، و Ms هي فترة المتوسط ​​المتحرك "البطيء" ، و T هي TakeProfit ،
20 * 20 * 20 = تم إجراء 8000 تكرار اختبار.

تم تنفيذ التحسين مع تقييد 160 و 400 و 800 اختبار (حسابات DF في الإحداثيات المحددة). في كل مرة ، تم حساب متوسط ​​النتائج لـ 1000 تكرار تحسين. كان متوسط ​​قيمة DF للمتجه شبه المثلى للمعلمات:
مونتي كارلوأصل متدرج"معركة بحرية"الخوارزمية الجينية
84.1٪83.9٪77.0٪92.6٪

بشكل منفصل ، تجدر الإشارة إلى أن GA تظهر نتيجة جيدة حتى مع نسبة صغيرة من الاختبارات لإجمالي عدد ممكن من الخيارات:
الاختباراتمونتي كارلوأصل متدرج"معركة بحرية"الخوارزمية الجينية
160 من أصل 800079.1٪76.7٪73.1٪87.7٪
400 من أصل 800084.7٪85.0٪77.4٪93.7٪
800 من أصل 800088.6٪90.1٪80.4٪96.3٪

بدلا من الاستنتاج


لقد فوجئت إلى حد ما بالنتيجة ، التي أظهرت خوارزمية التحسين الوراثي. لا أعتقد أن "النموذج الجيني" للطريقة على وجه التحديد قد زوده بالمركز الأول في القائمة. إلى حد ما ، وفقًا لمنطق اختيار الإحداثيات ، كان يشبه طرق الانقسام / النسبة الذهبية. ربما يجدر تجربة إحدى هذه الخوارزميات ومقارنة GA بها.

بالعودة إلى روبوت التداول ، تجدر الإشارة إلى كيف يتغير "ارتياح" السطح الذي تشكله CF (الربح) من عام إلى آخر. أي أنه بعد "تحسين" الروبوت في تاريخ عام 2017 ، لا معنى لتطبيق هذه الإعدادات في 2018 (الربع الأول ، الشهر ، الأسبوع ... 2018).

من المحتمل أن استراتيجيات التداول الصناعية والعقيدة والعاجزة مثل استراتيجياتنا (الشراء عند تقاطع المتوسط ​​المتحرك) لن تفقد أسلوبها قريبًا. لسوء الحظ ، لم يكن لدي أي استراتيجيات أخرى. وبناءً على ذلك ، فإنني أعزو ربح أو خسارة الروبوتات التجارية إلى الحظ بدلاً من مزايا / عيوب الخوارزمية. لذلك ، فإن مهمة التحسين البارامترية لروبوت التداول هي بالنسبة لي شخصيًا حصريًا ذات اهتمام أكاديمي.

Source: https://habr.com/ru/post/ar430138/


All Articles