
قام محررو بوابة QuantStart بكتابة
مادة حول ما يجب أن تعرفه عندما تبدأ في تطوير نظامك الخاص لاختبار استراتيجيات التداول. لقد درسنا بعض المشكلات التي أثيرت في المقالة في وقت سابق من المدونة ، لذلك قمنا هذه المرة بإعداد سرد مقتبس للأطروحات حول المشكلات التي يواجهها المطورون ، وما الفرق بين الاختبارات الخلفية لأنواع مختلفة ، وما هي إيجابياتها وسلبياتها.
ما هو باكستر
Backtest هو تطبيق قواعد إستراتيجية التداول على مجموعة من البيانات التاريخية حول أسعار الأدوات المالية. جوهر النهج هو أنه إذا قمنا بتطوير آلية لتحديد لحظة الدخول والخروج من مركز (شراء / بيع) ، على سبيل المثال ، الأسهم من محفظة معينة ، وتطبيق القواعد الناتجة على البيانات التاريخية ، فإن هذا سيعطي فكرة عن إنتاجية استراتيجية التداول "في الماضي ".
قال أحدهم ذات مرة أن "جميع النماذج خاطئة ، ولكن بعضها مفيد". هذه العبارة رائعة للاختبار الخلفي. تساعد أنظمة الاختبار التاريخي للاستراتيجيات المالية في تحديد ما إذا كان من المفيد تطبيق مجموعة القواعد الحالية على التداول الحقيقي. إذا علمنا كيف يمكن أن تتصرف إستراتيجية في الماضي ، فسوف تساعد في تصفية الاستراتيجيات السيئة دون الحاجة إلى خسائر مالية حقيقية.
المشكلة هي أن نتيجة الاختبار الخلفي لا علاقة لها بنتائج التداول الحقيقي في البورصة. هذا مجرد نموذج للواقع. نموذج يحتوي غالبًا على العديد من الافتراضات.
هناك نوعان رئيسيان من أجهزة اختبار backtest - للحلقة وقائمة على الحدث.
عند تطوير مثل هذه الأنظمة ، هناك دائمًا حاجة إلى حل وسط بين الدقة وتعقيد التنفيذ. يمثل هذان النوعان من الاختبار الخلفي مجموعة كاملة من الخيارات لمثل هذا الحل الوسط.
تحديات الاختبار الخلفي
ينطوي اختبار البيانات التاريخية على الكثير من الصعوبات. كلهم مرتبطون بحقيقة أن العملية برمتها ليست سوى محاكاة للواقع. فيما يلي عدد قليل منهم:
- الاختبار داخل العينة - تنشأ مشكلة عند استخدام نفس البيانات للتدريب على نماذج التداول ولإجراء المزيد من الاختبارات. في هذه الحالة ، يتم استهلاك الإنتاجية المعروضة بشكل كبير - لأن النتيجة تم تحقيقها على نظام بيانات معروف سابقًا. في الواقع ، ستختلف البيانات في الغالب بشكل كبير عن التدريب. في الواقع ، هذا شكل من أشكال إعادة التدريب.
- خطأ الناجي - مؤشرات الأسهم (على سبيل المثال ، S & P500) تتميز بعملية الإدراج والشطب عند ظهور بعض الأسهم والأدوات المالية أو استبعادها منها. إذا لم تؤخذ هذه التغييرات في الاعتبار أثناء الاختبار الخلفي ، فيمكن اعتبار الاستراتيجية التي لا تأخذ في الاعتبار حصص الشركات التي تم استبعادها من المؤشر بسبب انخفاض رأس المال ناجحة. لتجنب مثل هذه المشاكل ، عند تشغيل الاختبارات الخلفية لفترات طويلة من الوقت ، تحتاج إلى استخدام البيانات التي لا تخضع لخطأ الناجي.
- أخطاء التنبؤ (التحيز في المستقبل) - قد تؤثر البيانات من المستقبل أيضًا على نتيجة الاختبار الخلفي. على سبيل المثال ، ضع في اعتبارك الحالة عندما يتم حساب مؤشر الانحدار الخطي في فترة زمنية معينة. إذا تم استخدام هذا المؤشر في نفس العينة ، فقد تبين أن البيانات من المستقبل قد اخترقت فيه ، مما يعني أن إنتاجية الإستراتيجية الناتجة قد انخفضت بشكل كبير. تساعد backtesters الموجهة نحو الحدث على حل هذه المشكلة.
- التغيير في ظروف السوق - معايير السوق المالية ليست ثابتة. وهذا يعني أن العمليات التي تؤدي إلى تحركات أسعار الأسهم لا تعتمد على معلمات ثابتة بمرور الوقت. تعقد هذه الحقيقة تعميم النماذج ذات المعايير (العديد من استراتيجيات التداول هي حالات خاصة لمثل هذه الاستراتيجيات) ، مما يؤدي إلى حقيقة أن فعالية الاستراتيجية على البيانات التاريخية أفضل بكثير من التداول الحقيقي.
- تكاليف المعاملات - لا تأخذ العديد من أجهزة الاختبار الخلفية الدورية في الاعتبار حتى المعلومات الأساسية حول تكاليف المعاملات ، مثل الرسوم والرسوم المختلفة. في كثير من الأحيان ، يخطئ مؤلفو الأوراق العلمية الذين يفضلون عدم الانحناء على مثل هذه التفاهات. إن إيجاد استراتيجية مربحة للغاية في ظل ظروف مثالية بدون تكلفة أمر سهل للغاية. المشكلة هي أنه عند التداول في ظروف حقيقية ، يمكن أن تكون هذه الاستراتيجيات غير مربحة للغاية. من المهم للغاية أن تأخذ في الاعتبار الفروق ، وحالة السوق ، والرسوم المختلفة ، والانزلاق (في المعاملات مع الأصول المتقلبة للغاية ، قد يختلف السعر الحقيقي للمعاملة قليلاً عن السعر المتوقع عند وضع التطبيق - في الاتجاه الإيجابي والسالب).
هناك أيضًا مشكلات أخرى لا تتم مناقشتها كثيرًا ، ولكنها مع ذلك مهمة للغاية لإنشاء اختبار خلفي عالي الجودة. من بينها:
- بيانات OHLC هي معلومات حول سعر الافتتاح ، وأعلى سعر للأداة المالية خلال جلسة التداول ، وأدناها ، وسعر إغلاق فترة التداول (مخطط Open-high-low-close ، OHLC). وعادة ما يتم استيرادها من مصادر مثل Yahoo Finance. في هذه الحالة ، يمكن أن يكون مزيجًا من خلاصات البيانات المختلفة. هذا يعني أن الحصول على قيم متطرفة (بما في ذلك الأسعار المرتفعة والمنخفضة) لنظام التداول في الوقت الحقيقي سيكون أمرًا صعبًا. هذا أيضا يجب أن يؤخذ في الاعتبار في نموذج التداول.
- القيود السعوية - الاختبار الرجعي يغري باستخدام إمدادات لا حصر لها من المال. في الواقع ، دائمًا ما يكون مقدار الأموال المتاحة للتداول محدودًا (مثل المبلغ المحتمل للأموال المقترضة لتداول الهامش). من المهم أيضًا عدم نسيان متوسط حجم التداول اليومي (ADV) ، خاصةً بالنسبة للأسهم منخفضة السيولة ، عندما يكون هناك خطر كبير من أن يؤدي نظام التداول إلى تغيير حقيقي في السعر. يجب أيضًا مراعاة تأثير السوق هذا.
- اختيار المعيار - من الضروري الإجابة على سؤال ما إذا تم اختيار المعيار بشكل صحيح والذي سيتم مقارنة الاستراتيجية المختبرة به. على سبيل المثال ، إذا كنت تتداول العقود الآجلة للسلع المحايدة لمؤشر S & P500 ، فهل يستحق استخدام هذا المؤشر كمعيار؟ من المحتمل أن تكون سلة صناديق السلع الأخرى خيارًا أكثر ملاءمة.
- المتانة - إذا قمت بتغيير وقت بدء الإستراتيجية أثناء الاختبار الخلفي ، فما مدى تأثير ذلك على النتيجة؟ بالنسبة للاستراتيجيات طويلة المدى ، يجب ألا يؤثر وقت بدء عملهم بشكل خطير على الإنتاجية - لا يهم إذا بدأ الاختبار الخلفي يوم الاثنين أو الخميس. إذا كانت حساسة للغاية للظروف الأولية ، فهذا يعني أنه لا توجد طريقة للتنبؤ بإنتاجيتها المحتملة في بداية التداول الحقيقي.
- إعادة التدريب والتباين - لقد تناولنا بالفعل مشاكل إعادة التدريب أعلاه ، ولكن هذه مشكلة أوسع نطاقا متأصلة في جميع الأساليب الخاضعة للإشراف لتعلم الآلة. لا يمكن حل هذه المشكلة إلا من خلال الاستخدام الدقيق لتقنيات التحقق المتقاطع. وحتى في هذه الحالة ، يجب على المرء توخي الحذر الشديد عند تكييف الاستراتيجيات مع الضوضاء في مجموعات بيانات الاختبار.
- التسامح النفسي - غالبًا ما يتم تجاهل علم النفس عند إنشاء أنظمة تداول مؤتمتة ، لأنه يجب تقليل تأثيرها عن طريق الخوارزميات. ومع ذلك ، يظل الناس بشرًا ، حتى عندما لا يتاجرون بأيديهم ، ولكن بمساعدة الروبوتات. نتيجة لذلك ، قد يؤثر هذا على النتائج. على سبيل المثال ، إذا كان سحب وديعة بنسبة 50٪ أثناء الاختبار الخلفي قد يبدو خطرًا مقبولًا ، فإن خسارة نصف قيمة الأصول تصبح في الواقع تجربة أكثر صدمة. ليس من السهل مقاومة الأعمال غير المخطط لها في مثل هذه الحالة.
هذا كل شيء مع مشاكل الاختبار في التاريخ ، ننتقل الآن إلى وصف الأنظمة نفسها لمثل هذه الاختبارات.
نوعان من أجهزة اختبار الظهر
أولاً ، ضع في اعتبارك الأنظمة الدورية. هذا هو أبسط نوع من الاختبار الخلفي الذي يتم وصفه غالبًا في العديد من مشاركات المدونات المالية.
حلقة Backtest
تعمل هذه الطريقة - يتكرر النظام ببساطة خلال كل يوم تداول (أو شريط OHLC) ، ويقوم بإجراء الحسابات المتعلقة بسعر الأصل المطلوب (على سبيل المثال ، يحسب متوسط أسعار الإغلاق المتحركة) ، ثم يقوم بإجراء العملية المقابلة (الدخول في مركز طويل أو قصير). تستمر التكرارات الأخرى. في هذه العملية ، يتم تخزين المعلومات حول الأداء من أجل بناء رسم بياني (منحنى الأسهم) نتيجة لذلك.
هذا ما يبدو عليه الرمز الكاذب لهذه الخوارزمية:
for each trading bar: do_something_with_prices(); buy_sell_or_hold_something(); next_bar();PythonCopy
كما ترى ، فإن النظام بسيط للغاية ، مما يجعل مثل هؤلاء المختبرين الخلفيين خيارًا ممتازًا للحصول على التقديرات الأولى حول احتمالات نظام التداول.
الايجابيات
يعتبر Backtester Cyclic بسيطًا جدًا في تنفيذه باستخدام أي لغة برمجة تقريبًا ، والقيام بذلك بسرعة. هذا مفيد عندما تريد اختبار تأثير العديد من المعلمات المختلفة.
سلبيات
العيب الرئيسي هو النتائج غير الواقعية. في كثير من الأحيان في الاختبار الخلفي الدوري لا توجد حتى وظيفة أساسية للمحاسبة عن تكاليف المعاملات ، يجب تنفيذها بشكل منفصل. كما يشيع استخدام أوامر السوق فقط.
أيضًا ، فإن إمكانية إعادة استخدام التعليمات البرمجية للاختبار والنظام الإنتاجي ضئيلة ، لذا يجب عليك كتابتها مرة أخرى. هذا يزيد من احتمال حدوث أخطاء في البرامج.
اختبار الاسترجاع عرضة لأخطاء التنبؤ. يجب استخدامها حصريًا كأداة تصفية لرفض الاستراتيجيات غير الناجحة بشكل واضح. في الوقت نفسه ، من المهم أن تظل متشككا للغاية في الاستراتيجيات التي أظهرت نتائج جيدة. من المهم أن نتذكر أنه في الحياة الواقعية ، نادرًا ما تحقق الاستراتيجيات أداءً أفضل من الاختبار الخلفي.
النظم الموجهة نحو الحدث
توجد أنظمة من هذا النوع على الجانب الآخر من الطيف. هم أقرب بكثير إلى الواقع. عادة ما تعمل في حلقات كبيرة أثناء البحث ، يتم خلالها البحث عن "الأحداث" باستمرار في "قائمة انتظار الأحداث" الخاصة ، بما في ذلك:
- القراد - ظهور بيانات السوق الجديدة ؛
- أحداث الإشارات - ظهور إشارات التداول ؛
- حدث الطلب - أمر إكمال المعاملة جاهز للإرسال إلى نظام الوسيط ؛
- حدث المعاملة - استلام معلومات من الوسيط عن تنفيذ الطلب.
عندما يتم التعرف على حدث معين ، يتم نقله إلى الوحدة المقابلة في البنية التحتية لنظام التداول لمزيد من المعالجة وربما يولد أحداثًا جديدة تقع مرة أخرى في قائمة الانتظار.
الرمز الزائف لمثل هذا الاختبار الخلفي هو كما يلي:
while event_queue_isnt_empty(): event = get_latest_event_from_queue(); if event.type == "tick": strategy.calculate_trading_signals(event); else if event.type == "signal": portfolio.handle_signal(event); else if event.type == "order": portfolio.handle_order(event); else if event.type == "fill": portfolio.handle_fill(event) sleep(600);
كما ترى ، يعتمد النظام بشكل كبير على وحدة معالجة المحفظة - وهذا هو القلب الحقيقي في الأنظمة الموجهة نحو الحدث.
الايجابيات
الاختبار الخلفي من هذا النوع له مزايا عديدة:
- الحد من احتمالية أخطاء التنبؤ - نظرًا للهيكل ، الذي يفترض الإرسال المرحلي للرسائل ، فإن أخطاء التنبؤ أقل شيوعًا في الأنظمة الموجهة نحو الحدث ، على الأقل على مستوى التداول. ومع ذلك ، لا يزال يتم الاحتفاظ باحتمالية حدوثها ، حيث يمكن احتواء الأخطاء في النموذج نفسه.
- القدرة على إعادة استخدام الرمز - لاستخدام الاستراتيجية في التداول الحقيقي ، ما عليك سوى استبدال وحدة معالجة البيانات ومحرك تنفيذ الأمر. وصف للإستراتيجية ووحدة إدارة المخاطر وإدارة المركز ، رمز لتقييم إنتاجية النظام - كل هذا يمكن استخدامه بدون تغييرات. هذا يقلل من احتمال وجود أخطاء جديدة.
- مستوى الحافظة - تجعل الاستراتيجيات القائمة على الأحداث من السهل التفكير على مستوى الحافظة. في النهاية ، هذا يجعل من السهل إجراء تغييرات على الاستراتيجية وتطوير طرق التحوط.
- إدارة المخاطر "الصحيحة" - في مثل هذه الأنظمة من الأسهل "تعديل" إدارة المخاطر. يمكن للمتداول بسهولة استخدام تقنيات مثل معيار Kelly ، وكذلك تضمين تنبيهات مختلفة ، ووضع حدود (على سبيل المثال ، على التقلبات).
- النشر والمراقبة عن بُعد - يبسط المبدأ المعياري لكتابة التعليمات البرمجية نشرها في السحابة أو وفقًا لنظام تجميع التبادل.
سلبيات
مزايا الأنظمة الموجهة للحدث مفهومة ، ولكن هناك عيوب معينة. من بينها:
- رمز معقد - سيستغرق تطوير نظام مغطى بالكامل بالاختبارات أسابيع وشهورًا من العمل في وضع بدوام كامل.
- اتجاه الكائن - يتطلب التصميم المعياري للنظام اتباع نهج موجه نحو البرمجة. لذا فنحن بحاجة إلى لغة تدعم هذه المبادئ. اختبار الوحدة لن يصبح أسهل.
- عتبة إدخال عالية - لن يتمكن الوافد الجديد على البرمجة من إنشاء مثل هذا النظام. ستكون هناك حاجة إلى خبرة هندسية كبيرة ، مما سيجعل من الممكن التعامل مع كتابة التعليمات البرمجية وتنفيذ التسجيل وإجراء اختبارات الوحدة وتنفيذ التحكم في الإصدار وممارسات التكامل المستمر.
- سرعة منخفضة - نهج يتم من خلاله إرسال الرسائل داخل النظام بشكل متسلسل ضمن مستوياته المختلفة ، ويبطئ سرعة تنفيذ التطبيقات بالمقارنة مع النهج الدوري المتجه. يمكن أن يستغرق حساب مجموعات مختلفة من المعلمات وقتًا طويلاً.
المواد المالية الأخرى والمتعلقة بسوق الأوراق المالية من ITI Capital :