597 / 736BT

Backtesting

الاختبار التاريخي للاستراتيجية

يختبر Backtesting قواعد التداول على بيانات الماضي. يساعد على اكتشاف الأخطاء والتكاليف، لكن الربح التاريخي وحده لا يثبت أن الاستراتيجية ستواصل النجاح.

Backtesting هو محاكاة لنتائج قواعد تداول محددة مسبقًا على بيانات تاريخية، وفق نموذج مختار لتنفيذ الصفقات واحتساب التكاليف.

يلاحظ بيتر أن يوم الصعود يتبعه أحيانًا صعود آخر. بدل الشراء اعتمادًا على الحدس، يكتب قاعدة ويطبقها على أسعار قديمة. هذا هو Backtesting: تجربة فكرة على الماضي. تصف النتيجة ما جرى في النموذج المختار، لا مالًا كسبه بيتر فعلًا. يشرح Bailey et al. لماذا يجب التمييز بين نتيجة تاريخية جذابة والتحقق الموثوق من الاستراتيجية. [1]

لا يجوز لبيتر استخدام إلا المعلومات المتاحة قبل الصفقة. إذا اعتمدت القاعدة على سعر إغلاق اليوم، فلا يمكن الشراء صباح اليوم نفسه بناءً عليه. تسمي QuantConnect هذا الخطأ Look-ahead Bias: تسرب معلومة مستقبلية إلى قرار ماضٍ. في البيانات المنشورة يهم وقت النشر، لا الفترة التي تصفها فقط؛ والتعديلات اللاحقة لم تكن معروفة أيضًا. لذلك يستخدم مثالنا إغلاقات سابقة مكتملة ثم سعر الافتتاح التالي. [2]

اختيار الأسواق أو الشركات الباقية إلى اليوم فقط يخلق تحريفًا آخر. تسميه QuantConnect باسم Survivorship Bias، وتوضحه بتطبيق مكونات مؤشر اليوم على الماضي. وتعتمد بيانات Bitcoin كذلك على المنصة والانقطاعات وطريقة إعداد الأسعار. سعر من خدمة ما ليس بالضرورة قابلًا للتنفيذ في مكان آخر. يمكن تصحيح السجلات الخاطئة مع توثيق التغييرات؛ أما حذف الانهيارات المزعجة فيغير السؤال الذي نختبره. [2]

يجب أن يحدد البرنامج متى ينفذ الأمر، وبأي سعر وكمية. لهذا تُستخدم نماذج التنفيذ التي توثقها QuantConnect. ملامسة الرسم لسعر لا تثبت إمكانية تنفيذ كامل الأمر عنده. قد ينفذ الأمر الحقيقي جزئيًا، بينما تفترض النماذج الجاهزة لهذه المنصة التنفيذ الكامل في الاختبار التاريخي. يجب أيضًا فحص قِدم السعر والسيولة، أي إمكانية العثور على طرف مقابل للصفقة. [3]

Slippage هو الفرق بين سعر التنفيذ المتوقع والسعر المحقق؛ وقد يكون في صالح المتداول أو ضده. تشرح QuantConnect كيفية نمذجته. وتُضاف الرسوم والتمويل إن انطبق وسائر تكاليف الاستراتيجية. لا تُخصم التكلفة المدرجة أصلًا في السعر مرة أخرى. افتراض انعدام Slippage ليس إثباتًا لحال السوق الحقيقي. إعادة الاختبار بتنفيذ أسوأ وتكاليف أعلى تساعد على معرفة إن كان الاستنتاج يصمد. [4]

إذا عدّل بيتر القاعدة باستخدام البيانات نفسها التي يقيس بها النجاح، فكأنه يخوض امتحانًا يعرف إجاباته. عليه أولًا تخصيص بيانات أقدم للتطوير وأخرى لاحقة للتحقق. تساعد أداة TimeSeriesSplit من scikit-learn على حفظ هذا الترتيب. لكنها لا تمنع وحدها تسرب المعلومات أثناء تجهيز البيانات أو تداخل الفترات المستهدفة أو التعديل المتكرر. عندما يغير بيتر القاعدة بعد رؤية نتيجة التحقق، يكون قد استخدم تلك البيانات أيضًا في التطوير. [5]

قد يبدو أحد إعدادات كثيرة ممتازًا بالمصادفة. عرض الفائز وحده يخفي عدد المحاولات. يدرس Bailey et al. مشكلة Backtest Overfitting: تكييف الاستراتيجية أكثر من اللازم مع خصوصيات تاريخ محدد. سجّل المعلمات والفترات والأسواق المجربة، لا أفضل منحنى فقط. يقترح الباحثون إجراءً خاصًا لتقدير احتمال المشكلة؛ تقسيم البيانات ببساطة لا يحل محله، ومثالنا لا يحسب هذا التقدير. [1]

يتيح التقرير الصادق تتبع البيانات ونسخة القواعد والصفقات والتكاليف وفترات الخسارة. وتحتاج الاستراتيجية المرجعية إلى افتراضات قابلة للمقارنة. تنبه NFA الأمريكية كذلك إلى ميزة معرفة الماضي وغياب تجربة الخسارة المالية الحقيقية في النتائج الافتراضية؛ قواعدها الإعلانية تخص أعضاء محددين. يساعد الاختبار على استبعاد فكرة أو دراستها أكثر. حتى الحساب الصحيح لا يثبت أنها ستنجح في سوق مختلفة أو في التداول الفعلي. [6]

مثالمثال · BT

قاعدة يمكن مراجعتها يدويًا

نستخدم مثالًا افتراضيًا من إعدادنا بفترات متساوية الطول A وB وC وD. نبدأ بنقد قدره ⁦1000 USD⁩ دون مركز مفتوح أو دين أو إيداعات أو سحوبات. سعرَا الإغلاق السابقان للفترة A هما ⁦[100, 100] USD/BTC⁩. أسعار الافتتاح من A إلى D هي ⁦[101, 103, 102, 105] USD/BTC⁩، وأسعار الإغلاق ⁦[102, 101, 104, 103] USD/BTC⁩. تشتري القاعدة ⁦1 BTC⁩ عند بداية الفترة فقط إذا تجاوز آخر إغلاق مكتمل الإغلاق السابق، ثم تبيع المركز كله عند نهاية الفترة نفسها. إذن الإشارات هي ⁦[0, 1, 0, 1]⁩: تعني 1 التداول وتعني 0 عدم التداول. نفترض التنفيذ الكامل بالأسعار المحددة تمامًا، دون فرق بين سعري الشراء والبيع أو Slippage، وتكلفة وحيدة هي رسم ⁦0.1 USD⁩ لكل شراء ولكل بيع. في B نشتري مقابل ⁦103 USD⁩ ونبيع مقابل ⁦101 USD⁩؛ وفي D نشتري مقابل ⁦105 USD⁩ ونبيع مقابل ⁦103 USD⁩. النتائج الإجمالية للفترات هي ⁦[0, -2, 0, -2] USD⁩. تكلف عمليات الشراء والبيع الأربع المنفذة مجتمعة ⁦0.4 USD⁩، فتكون النتائج الصافية ⁦[0, -2.2, 0, -2.2] USD⁩. النتيجة الإجمالية الكلية ⁦-4 USD⁩، والصافية ⁦-4.4 USD⁩، والنقد النهائي ⁦995.6 USD⁩. يعرض الرسم المساهمة الصافية لكل فترة، لا رصيد الحساب أو احتمال الربح. يراجع المثال ترتيب المعلومات والحسابات؛ ولا يستخدم بيانات سوق حقيقية أو يبحث عن أفضل إعدادات أو يتنبأ بالمستقبل.

للحصول على صورة أوضح، اقرأ هذا المدخل مع Trading Plan, Trading Journal, Slippage, Overfitting, Walk-forward Analysis. تشير إلى هذا المدخل أيضًا Technical analysis, OHLCV, Timeframe, Candlestick chart.

01هل يعني الاختبار التاريخي المربح أنني سأربح بهذه الاستراتيجية؟

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

02هل يكفي خصم جميع الرسوم في النهاية؟

فقط إذا وافق ذلك النموذج ولم تكن التكاليف أثناء المسار ستغير الأموال المتاحة أو القرارات. عادةً تنسب التكلفة إلى الصفقة المعنية. يجب تسجيل التنفيذ والرسوم بلا إغفال ولا احتساب مزدوج.

DOC · 001Bailey et al. — The Probability of Backtest Overfittingمصدر أولي DOC · 002QuantConnect — Research Guideتوثيق DOC · 003QuantConnect — Trade Fills: Key Conceptsتوثيق DOC · 004QuantConnect — Slippage: Key Conceptsتوثيق DOC · 005scikit-learn — TimeSeriesSplitتوثيق DOC · 006NFA — Use of Promotional Material Containing Hypothetical Performance Resultsتوثيق
تمت المراجعة: المصادر أولًا · ليست نصيحة استثمارية