كيف تجري اختبارًا رجعيًا لاستراتيجية على العقود الآجلة دون أن تخدع نفسك
يعيد الاختبار الرجعي (Backtest) تطبيق مجموعة قواعد على بيانات سابقة. وإذا أُجري بلا عناية فإنه يقيس في الغالب مدى مواءمة القواعد لتلك البيانات. إليك كيف تبني اختبارًا يستطيع على الأقل أن يفشل بنزاهة.
تاريخ النشر · آخر تحديث · 9 دقائق قراءة
أهم النقاط
- يطبّق الاختبار الرجعي قواعد ثابتة ومكتوبة على بيانات تاريخية ويسجل كل صفقة محاكاة؛ وتتوقف قيمته على البيانات وافتراضات التنفيذ وعدد الخيارات التي ضُبطت على البيانات نفسها.
- الفخاخ التقليدية هي تحيز النظر إلى المستقبل، وأخطاء البيانات، والإفراط في المواءمة عبر التحسين، والانتقاء من بين متغيرات كثيرة، وإهمال العمولات والانزلاق.
- احتفظ ببيانات لم ترها القواعد قط: فترة خارج العينة، أو اختبار Walk-Forward يحسّن على نافذة ويختبر على النافذة التالية.
- في NinjaTrader 8 يشغّل Strategy Analyzer الاختبارات الرجعية والتحسين والتحسين المتدرج (Walk Forward)؛ والتنفيذ فيه محاكى من بيانات الشموع، لذا تستحق إعدادات العمولة والانزلاق والتنفيذ الانتباه.
- حتى الاختبار الرجعي النظيف يبقى افتراضيًا: تُلزم قواعد CFTC المستشارين الذين يعرضون نتائج محاكاة بالتحذير من أنها لا تمثل تداولًا فعليًا.
كيف تجري اختبارًا رجعيًا لاستراتيجية على العقود الآجلة: الإجابة المختصرة
إجراء اختبار رجعي لاستراتيجية على العقود الآجلة يعني تطبيق مجموعة ثابتة من القواعد، مكتوبة بدقة تكفي لأن يتبعها الحاسوب، على بيانات تاريخية، وتسجيل كل صفقة كانت تلك القواعد ستفتحها، مع تكاليف واقعية. والناتج قائمة من الصفقات الافتراضية والإحصاءات المشتقة منها: النتيجة الصافية، والتراجع (drawdown)، وعدد الصفقات، ومتوسط الصفقة.
الجزء الصعب ليس تشغيل الاختبار، فمنصات مثل NinjaTrader 8 تفعل ذلك بسرعة، بل التأكد من أن النتيجة تعني شيئًا. فمعظم الاختبارات الرجعية المضللة ليست غير نزيهة، بل تنتج عن خيارات تبدو معقولة لكنها تسرّب معلومات من المستقبل، أو تضبط القواعد على الضجيج، أو تفترض عمليات تنفيذ ما كان السوق ليمنحها. والخطوات التالية مصممة لاكتشاف هذه التسريبات قبل أن تصل إلى حساب حقيقي.
الخطوة الأولى: قواعد وبيانات يمكن الوثوق بها
اكتب القواعد قبل أن تنظر إلى أي نتيجة: الدخول، والخروج، ووقف الخسارة، والهدف، وحجم المركز، والجلسات التي تتداولها، وما يحدث حول تجديد العقود والبيانات المجدولة. والقاعدة التي تحتاج إلى تقدير شخصي، مثل الدخول عندما يبدو الاتجاه قويًا، لا يمكن اختبارها رجعيًا حتى تتحول إلى شرط قابل للقياس.
ثم تحقق من البيانات، لأن بيانات العقود الآجلة تطرح أسئلة خاصة. فالعقد المتصل (continuous contract) يربط الاستحقاقات المتتالية بعضها ببعض، وطريقة تعديل الأسعار عند كل تجديد تغيّر الماضي: السلسلة المعدّلة إلى الخلف (back-adjusted) تناسب القواعد المبنية على الحركات بالنقاط، لا القواعد المبنية على مستويات أسعار مطلقة تعود إلى سنوات مضت. كما أن التيكات الخاطئة والجلسات المفقودة وتغيّر ساعات التداول تصنع صفقات لم يكن من الممكن أن تحدث. وبالنسبة إلى القواعد التي تعتمد على ما جرى داخل الشمعة، فإن دقة البيانات مهمة أيضًا: شمعة الدقيقة الواحدة لا تقول هل جاء أعلى سعر فيها قبل أدنى سعر أم بعده.
- استخدم بيانات من المصدر نفسه وقالب الجلسة نفسه اللذين ستتداول بهما.
- افحص القيم الشاذة: سعر خاطئ واحد قد يصنع أفضل صفقة في الاختبار كله.
- قرر طريقة التعامل مع التجديد وراجع الصفقات المحيطة بكل استحقاق.
- احتفظ بسجل لفترة البيانات وإعدادات كل اختبار تجريه، بما فيها الاختبارات التي تستبعدها.
التحيزات التي تجعل الاختبارات الرجعية أجمل من الواقع
يستخدم تحيز النظر إلى المستقبل (look-ahead bias) معلومات لم تكن متاحة لحظة اتخاذ القرار. وأشكاله الشائعة دقيقة: قاعدة تقرأ إغلاق الشمعة لتدخل عند افتتاح الشمعة نفسها، أو أعلى أو أدنى سعر يومي يُستخدم قبل انتهاء اليوم، أو مؤشر تتغير قيمه السابقة مع وصول بيانات جديدة، أو بيانات اقتصادية تُستخدم بقيمتها المعدّلة لا بقيمتها عند صدورها الأول.
أما الإفراط في المواءمة (overfitting أو curve fitting) فينتج عن ضبط عدد كبير من المعاملات على البيانات نفسها. فكل مدخل إضافي وكل عملية تحسين ترفع احتمال أن تكون أفضل نتيجة مطابقة لضجيج تلك العينة بالذات. والاستراتيجية ذات المدخلات الكثيرة المضبوطة على قيم دقيقة، التي تنهار نتائجها إذا تحركت قيمة واحدة قليلًا، تعلّمت الماضي لا سلوكًا للسوق.
وتحيز الانتقاء هو المشكلة نفسها على مستوى أعلى. اختبر عشرين فكرة واحتفظ بالتي نجحت، وسيبالغ اختبارها الرجعي في تقدير أفضليتها، لأن الحظ كان جزءًا من الانتقاء. والعدّ النزيه هو عدد المتغيرات التي جُرّبت، لا عدد التي احتُفظ بها.
- النظر إلى المستقبل: أي قيمة استُخدمت قبل أن يكون من الممكن معرفتها.
- الإفراط في المواءمة: معاملات مضبوطة على ضجيج عينة واحدة.
- الانتقاء: الاحتفاظ بأفضل اختبار من بين كثيرين دون احتساب أثر البحث.
- تحيز البقاء: الاختبار على أسواق أو عقود اختيرت فقط لأنها رائجة أو لأنها ما زالت موجودة اليوم.
- التنفيذ المتفائل: أوامر محددة السعر تُنفَّذ بمجرد ملامسة السعر، وأوامر سوق تُنفَّذ بسعر الإشارة.
التكاليف والانزلاق والتنفيذ: حيث تختفي الأفضليات قصيرة الأجل
الاختبار الرجعي بلا تكاليف يصف السعر لا التداول. فالعمولات والرسوم تُحتسب لكل عقد في كل صفقة كاملة، والانزلاق يُدفع على أوامر السوق وأوامر الوقف. وفي الاستراتيجيات قصيرة الأجل قد تتجاوز هذه التكاليف متوسط الصفقة الإجمالي وتحوّل اختبارًا يبدو مربحًا إلى اختبار خاسر؛ ويعرض دليل ما تتطلبه المضاربة السريعة على العقود الآجلة فعلًا هذا الحساب.
وافتراضات التنفيذ تستحق الاهتمام نفسه. فالأمر محدد السعر المنتظر عند سعر ما لا يُنفَّذ بالضرورة عندما يلمسه السعر، لأن أوامر أخرى كانت قبله في الطابور. والاختبار الذي ينفّذ كل ملامسة متفائل، أما اشتراط أن يتجاوز السعر الحدّ فأكثر تحفظًا. ويجب افتراض أن أوامر السوق والوقف تُنفَّذ بسعر أسوأ من سعر الإشارة، بتيك واحد على الأقل في الظروف العادية وبأكثر من ذلك حول البيانات الاقتصادية.
وتتفاعل دقة البيانات مع التنفيذ. فإذا احتوت شمعة واحدة على الوقف والهدف معًا، فإنها وحدها لا تقول أيهما بُلغ أولًا. وعلى الاختبار أن يفترض ترتيبًا للأحداث، وقد يحوّل افتراض مريح الصفقات الخاسرة بهدوء إلى رابحة.
الاختبار خارج العينة واختبار Walk-Forward
أنفع حماية من الإفراط في المواءمة هي بيانات لم ترها القواعد قط. قسّم التاريخ: طوّر الاستراتيجية واضبطها على جزء منه، أي الفترة داخل العينة (in-sample)، ثم اختبرها مرة واحدة على جزء لاحق، أي الفترة خارج العينة (out-of-sample). فإذا انهار الأداء خارج العينة، كانت النتيجة داخل العينة في معظمها مواءمة. وإذا عدت لتعديل القواعد بعد رؤية النتيجة خارج العينة، فقد أصبحت تلك الفترة بدورها داخل العينة.
ويكرر تحليل Walk-Forward هذه الفكرة عبر الزمن. تُحسَّن المعاملات على نافذة وتُختبر على النافذة التالية، ثم تتقدم النافذتان ويبدأ الأمر من جديد، وتُجمع نوافذ الاختبار في سجل واحد خارج العينة. وتصف NinjaTrader تحسين Walk Forward لديها بالمصطلحات نفسها: يُقيَّم الأداء على بيانات الاختبار لا على البيانات المستخدمة في التحسين، مع فترة تحسين (Optimization period) وفترة اختبار (Test period) تُحددان بالأيام.
وهناك فحصان آخران قليلا التكلفة. الحساسية: غيّر كل معامل قليلًا وانظر هل تتراجع النتائج تدريجيًا أم تنهار فجأة. وظروف مختلفة: طبّق القواعد نفسها، دون إعادة ضبط، على فترة أخرى أو على سوق قريبة. فالفكرة المتينة تصمد عادةً أمام الفحصين بصورة أضعف، أما الفكرة المفرطة في المواءمة فلا تصمد غالبًا.
| الخطوة | فترة التحسين | فترة الاختبار |
|---|---|---|
| 1 | الأشهر 1 إلى 12 | الأشهر 13 إلى 15 |
| 2 | الأشهر 4 إلى 15 | الأشهر 16 إلى 18 |
| 3 | الأشهر 7 إلى 18 | الأشهر 19 إلى 21 |
الاختبار الرجعي في NinjaTrader 8: أساسيات Strategy Analyzer
في NinjaTrader 8 تُجرى الاختبارات الرجعية في Strategy Analyzer، الذي يُفتح من قائمة New في Control Center. وهو يختبر استراتيجيات NinjaScript، سواء كُتبت يدويًا أو أُنشئت بأداة Strategy Builder. ويقدّم إعداد Backtest type الخيارات Backtest وOptimization وWalk Forward Optimization وMulti-Objective Optimization؛ ثم تختار الاستراتيجية والأداة المالية وسلسلة البيانات وتاريخي البداية والنهاية وقالب ساعات التداول، وتضغط Run.
وتحدد عدة إعدادات مدى واقعية النتيجة، وتستحق المراجعة قبل كل تشغيل لأن القيم الافتراضية تفضّل السرعة على الحذر.
- Include commission: يفعّل العمولات في نتائج الأداء أو يعطّلها؛ وتأتي الأسعار من قالب عمولة (commission template).
- Slippage: عدد من التيكات يُطبَّق على تنفيذ أوامر السوق وأوامر stop market وMarket-if-touched؛ قيمته الافتراضية صفر ولا ينطبق على الأوامر محددة السعر.
- Order fill resolution: الخيار Standard، وهو الافتراضي، يحاكي التنفيذ من افتتاح كل شمعة وأعلاها وأدناها وإغلاقها عبر تقسيمها إلى شموع افتراضية؛ أما High فيستخدم سلسلة ثانوية أدق للتنفيذ مقابل اختبارات أطول.
- Fill limit orders on touch: عند تفعيله يُعدّ الأمر محدد السعر منفذًا بمجرد ملامسة سعره مرة واحدة، وهو الافتراض المتفائل المذكور أعلاه.
- Exit on session close: عند تفعيله تُغلق المراكز المفتوحة على آخر شمعة في كل جلسة.
ويشرح دليل المساعدة في NinjaTrader أيضًا سبب اختلاف نتائج الاختبار الرجعي عن نتائج الوقت الحقيقي: فالتنفيذ التاريخي يعتمد فقط على افتتاح كل شمعة وأعلاها وأدناها وإغلاقها، بينما يعتمد التنفيذ الحقيقي على بيانات السوق الواردة والحجم، كما تُعالَج الاستراتيجية أثناء الاختبار الرجعي عند إغلاق كل شمعة لا تيكًا بتيك. ولا يمكن الجمع بين Order fill resolution وTick Replay، وهذا مهم لاستراتيجيات order flow؛ ويشرح دليل Tick Replay في NinjaTrader 8 هذا الإعداد. ومراجعة عرضَي Trades وExecutions، لا الملخص وحده، تبيّن ما إذا كانت عمليات التنفيذ الفردية معقولة.
قراءة النتيجة بنزاهة
ينتج الاختبار المكتمل تقريرًا، ويشرح دليل إحصاءات التداول كل رقم فيه. وبعض العادات تحافظ على نزاهة القراءة. انظر إلى عدد الصفقات قبل أي نسبة، لأن حفنة من الصفقات لا تقول شيئًا تقريبًا. وانظر إلى أقصى تراجع وأطول فترة خاسرة، واسأل نفسك هل كنت ستواصل التداول خلالهما فعلًا. وقارن متوسط الصفقة بتكاليفك لكل صفقة: فإذا كان الهامش ضيقًا محته تغيرات صغيرة في الانزلاق. وتحقق من أن النتيجة لا تعتمد على بضع صفقات استثنائية، وحدد حجم أي استخدام حقيقي انطلاقًا من مخاطرة محددة لكل صفقة، كما يشرح دليل إدارة المخاطر في تداول العقود الآجلة.
ثم تعامل مع النتيجة على حقيقتها: افتراضية. فبموجب قواعد CFTC الخاصة بالإعلان، يجب على مستشاري تداول السلع ومشغلي صناديقها الذين يعرضون أداءً محاكى أو افتراضيًا أن يحذّروا من أن هذه النتائج لها قيود متأصلة، ولا تمثل تداولًا فعليًا، وربما بالغت أو قصّرت في احتساب عوامل السوق مثل نقص السيولة، وأنها تُصمَّم عمومًا بالاستفادة من معرفة ما حدث لاحقًا. والحذر نفسه ينطبق على اختباراتك الخاصة. والخطوة التالية للاختبار الرجعي هي الاختبار الأمامي في المحاكاة، ثم حجم صغير، مع اعتبار الاختبار الرجعي مرجعًا للمقارنة لا توقعًا.
طبّق ما تعلمته
الأسئلة الشائعة
كم أحتاج من البيانات لإجراء اختبار رجعي لاستراتيجية على العقود الآجلة؟
لا توجد كمية ثابتة. المهم هو عدد الصفقات وتنوع الظروف التي تغطيها: فترات هادئة وأخرى متقلبة، واتجاهات ونطاقات، والجلسات التي تنوي تداولها. والاختبار الذي يضم صفقات قليلة، أو نظامًا سوقيًا واحدًا، لا يستطيع التمييز بين الأفضلية والحظ.
ما الفرق بين الاختبار الرجعي والاختبار الأمامي؟
يطبّق الاختبار الرجعي القواعد على بيانات سابقة. أما الاختبار الأمامي (forward test) فيطبّقها على بيانات جديدة لحظة وصولها، في المحاكاة أو بحجم صغير، فلا يمكن ضبط أي شيء عليها مسبقًا. نتائجه أبطأ في التجميع لكنها أصعب كثيرًا في الخداع.
هل يثبت اختبار Walk-Forward أن الاستراتيجية تنجح؟
لا. إنه يزيل مصدرًا واحدًا لخداع النفس، أي الضبط والاختبار على البيانات نفسها، لكن اختيار النوافذ ومعيار التحسين والاستراتيجيات المختبرة قد يبقى مفرطًا في المواءمة. كما أنه يظل محاكاة بتنفيذ محاكى.
هل يمكن إجراء اختبار رجعي لاستراتيجية تعتمد على order flow؟
فقط ببيانات تتضمن كل صفقة مع سعري الطلب والعرض لحظة تنفيذها. وفي NinjaTrader يعني ذلك Tick Replay، الذي يذكر دليل المساعدة أنه لا يمكن جمعه مع Order fill resolution. ويبقى موقع الأمر في الطابور وتاريخ عمق السوق صعبي المحاكاة، لذا تعامل مع هذه الاختبارات بحذر إضافي.
لماذا تختلف نتائجي الحقيقية عن الاختبار الرجعي؟
من الأسباب الشائعة: عمليات تنفيذ لم تستطع بيانات الشموع إعادة إنتاجها، وانزلاق وتكاليف غائبة أو مقدَّرة بأقل من حقيقتها، وقواعد استخدمت المعلومات مبكرًا، والفروق بين البيانات التاريخية وبيانات الوقت الحقيقي. ويعدّد دليل المساعدة في NinjaTrader عددًا من هذه الفروق.
المصادر
- Strategy Analyzer (NinjaTrader 8) — NinjaTrader Help Guide
- Backtest a Strategy (NinjaTrader 8) — NinjaTrader Help Guide
- Walk Forward Optimization (NinjaTrader 8) — NinjaTrader Help Guide
- Understanding Historical Fill Processing (NinjaTrader 8) — NinjaTrader Help Guide
- Discrepancies: Real-Time vs Backtest (NinjaTrader 8) — NinjaTrader Help Guide
- 17 CFR § 4.41: Advertising by commodity pool operators, commodity trading advisors, and the principals thereof — Legal Information Institute, Cornell Law School
اقرأ أيضًا
كُتب بمساعدة أدوات الذكاء الاصطناعي انطلاقًا من مصادر رسمية، ثم رُوجعت الأرقام والتواريخ والمصادر وفق منهجيتنا. المنهجية · السياسة التحريرية · الإبلاغ عن خطأ
محتوى تعليمي. هذه المؤشرات ليست نصيحة استثمارية ولا تضمن أي نتيجة. ينطوي تداول العقود الآجلة على خطر خسارة قد تتجاوز رأس المال الأولي. شروط الاستخدام · إخلاء المسؤولية