داخل العينة وخارجها، واختبار السير إلى الأمام
قسّم البيانات التاريخية قبل أن تبدأ. فترة داخل العينة (In-Sample) هي التي تصمم فيها القواعد وتضبطها، وفترة خارج العينة (Out-of-Sample) تُحجز جانباً وتُستخدم مرة واحدة والقواعد مجمّدة، لترى هل تصمد النتيجة على بيانات لم يرها الضبط قط. والتقسيم الشائع نحو 70% داخل العينة و30% خارجها، مع جعل فترة خارج العينة هي الأحدث زمنياً. فإن اطّلعت على نتيجة خارج العينة ثم غيّرت قاعدة وأعدت الاختبار، فقد صارت تلك الفترة داخل العينة هي الأخرى.
ويكرر تحليل السير إلى الأمام (Walk-Forward) هذا التقسيم على نافذة متدحرجة: اضبط الإعدادات على أربع سنوات مثلاً، واختبر الإعدادات المختارة دون تغيير على السنة التالية، ثم تقدّم سنة وكرّر. ووصل سنوات الاختبار يعطي سجلاً طويلاً خارج العينة أُنتج بالطريقة التي ستتداول بها فعلاً: إعادة ضبط من حين لآخر، وعلى الماضي دائماً. ويقارن بعض الممارسين النتيجة السنوية خارج العينة بنظيرتها داخل العينة، في نسبة تسمى كفاءة السير إلى الأمام، ويرتابون في نظام يحتفظ بأقل بكثير من نحو نصف أدائه داخل العينة؛ اعتبر ذلك دليلاً تقريبياً لا قانوناً.
كثرة المعاملات والتنقيب في البيانات وثبات الإعدادات
كل معامل وكل مرشّح وكل استثناء درجة حرية تتيح للقواعد أن تنحني حول الماضي. اختبر 20 قيمة لإعدادين فيصير لديك 400 نسخة، وأضف ثلاثة مرشّحات تعمل أو تتوقف فيصير لديك 3,200. وحتى لو لم تكن لأي منها أفضلية، فأفضل نسخة من 3,200 ستبدو مبهرة بالمصادفة وحدها. هذا هو التنقيب في البيانات (Data Snooping): كلما جرّبت نسخاً أكثر على البيانات نفسها، عكس الفائز الحظ أكثر. وقد وضع الإحصائيون تصحيحات رسمية، مثل اختبار White’s Reality Check (2000) واحتمال الإفراط في ملاءمة الاختبار الذي وصفه بيلي وزملاؤه، لكن القواعد العملية بسيطة: قلّل المعاملات، واحسب كل نسخة جرّبتها، وقِس الفائز بأفضل نتيجة من العدد نفسه من المحاولات العشوائية.
ثم انظر إلى الجيران. فالإعداد المتين يقع على هضبة: القيم المجاورة تعطي نتائج متقاربة ومقبولة. أما المفرط في الملاءمة فقمة حادة: خلية واحدة تلمع وجيرانها متواضعون أو خاسرون، كما في يمين الرسم أدناه. اختر الإعدادات من وسط الهضبة حتى لو سجلت قمة حادة رقماً أعلى، واعتبر وقوع أفضل قيمة على حافة المدى المختبر علامة على أن البحث لم يكتمل.
تحيز النظر إلى المستقبل: أمثلة ملموسة
تحيز النظر إلى المستقبل (Look-Ahead Bias) يعني أن الاختبار يستخدم معلومات لم تكن متاحة لحظة اتخاذ القرار. ومن السهل برمجته عن غير قصد، وقد يجعل أي فكرة تقريباً تبدو عبقرية. والرسم أدناه يبيّن صورتين شائعتين. يساراً قاعدة تقرر عند افتتاح 9:30 الشراء إن أغلق اليوم فوق مستوى ما، مستخدمة إغلاقاً لن يوجد قبل 16:00. ويميناً وُسمت كل صفقة بحسب كون السوق فوق متوسطها لـ200 يوم أو لا، لكن الوسم حُسب يوم الخروج؛ والصفقات الناجحة تميل إلى الانتهاء في أسواق قوية، فيبدو المرشّح تنبؤياً وهو لا يصف إلا النتيجة. وصور أخرى يجب تعقّبها:
- قرارات الشمعة نفسها: استخدام إغلاق الشمعة أو قمتها أو قاعها لتفعيل دخول عند افتتاحها. قرّر بالإغلاق السابق وادخل عند الافتتاح التالي.
- معلومات وقت الخروج: مرشّحات أو أوسمة أو تصنيفات محسوبة عند الخروج أو على امتداد الصفقة كلها. احسب كل مرشّح ببيانات تنتهي عند شمعة الدخول.
- قيم الإطار الزمني الأعلى قبل إغلاقها: قراءة قيمة اليوم أو الأسبوع على شمعة داخل اليوم وهي لا تزال تتشكل. راجع تحليل الأطر الزمنية المتعددة وإعادة الرسم.
- البيانات المعدّلة: بيانات أساسية أو اقتصادية أو عضوية مؤشر كما تُعرف اليوم لا كما كانت في تاريخ الصفقة.
- إحصاءات العينة كاملة: التطبيع بمتوسط أو تقلب التاريخ كله، وهو يتضمن المستقبل.
تحيز البقاء والتكاليف وتغيّر أنظمة السوق
ثلاثة أسباب أخرى تجعل الاختبار التاريخي يجمّل الاستراتيجية:
- تحيز البقاء (Survivorship Bias): اختبار استراتيجية أسهم على أعضاء المؤشر اليوم أو الأسهم المدرجة اليوم يُسقط الشركات التي أفلست أو استُحوذ عليها أو خرجت من المؤشر. فيختفي الخاسرون من البيانات، وتبدو النتائج أفضل من أي شيء كان يمكن تداوله وقتها. استخدم عضوية المؤشر كما كانت في كل تاريخ، وبيانات تشمل الأسهم المشطوبة.
- التكاليف والانزلاق: العمولة والفارق السعري والانزلاق تُدفع في كل صفقة، وتكون أكبر بوحدة R مع الوقف القصير. وقد تنقلب استراتيجية كثيرة الصفقات الصغيرة من رابحة إلى خاسرة بمجرد إدخال تكاليف واقعية، ويعرض درس التوقع الرياضي في التداول الحساب. وأوامر الحد التي يفترض الاختبار تنفيذها دائماً تكلفة خفية من النوع نفسه.
- تغيّر أنظمة السوق: التقلب وقوة الاتجاه وأسعار الفائدة وبنية السوق كلها تتغير. ونظام ضُبط على سنوات هادئة ذات اتجاه واضح قد يفشل في فترة متذبذبة أو شديدة التقلب. افحص النتائج سنة بسنة، وفي الأسواق الصاعدة والهابطة والجانبية، واحذر إن جاء معظم الربح من فترة واحدة.
مونت كارلو: أعد خلط ترتيب الصفقات
الاختبار التاريخي الواحد مسار واحد عبر التاريخ. وإعادة خلط ترتيب صفقاته مرات كثيرة تبيّن مقدار الحظ في ذلك المسار. فمع مخاطرة ثابتة بوحدة R، أو بنسبة ثابتة من رأس المال، يكون المجموع واحداً في كل ترتيب، لأن الجمع والضرب لا يتأثران بالترتيب؛ أما ما يتغير فهو المسار، ومعه أقصى تراجع وأطول سلسلة خسائر.
في المثال الافتراضي أدناه، 70 صفقة بين +2R و−1R مجموعها +14R في كل ترتيب. كان أقصى تراجع في ترتيب الاختبار نفسه −6R، لكن في 1,000 خلطة كان الوسيط −8R، وهبطت أسوأ 5% من الخلطات 13R أو أكثر، وبلغت الحالة الأسوأ −19R. خطّط على الأرقام الأعمق لا على رقم الاختبار: فإن لم تكن قادراً على تحمّل تراجع 13R، فالاستراتيجية أكبر من طاقتك بهذا الحجم. وثمة اختبار قريب يعيد سحب الصفقات مع الإرجاع، فيتغير المجموع أيضاً ويعطي مدى تقريبياً له.
الدخول العشوائي: المعيار الذي يجب أن تتفوق عليه استراتيجيتك
الصفر معيار خاطئ. ففي سوق صعدت خلال فترة الاختبار تربح أي استراتيجية شراء تقريباً، وفي سوق متذبذبة تدفع التكاليف وحدها التداول العشوائي تحت الصفر. والمعيار العادل يحتفظ بكل شيء في استراتيجيتك ما عدا إشارة الدخول: السوق والفترة نفسيهما، والاتجاه نفسه، ومسافة الوقف نفسها، وقاعدة الخروج نفسها، والتكاليف نفسها، وعدداً مقارباً من الصفقات، مع دخول في أوقات عشوائية. كرّر ذلك 1,000 مرة وانظر أين تقع استراتيجيتك.
إن وقعت استراتيجيتك داخل نطاق النتائج العشوائية، فإشارات دخولها لا تضيف شيئاً يعجز الحظ وانجراف السوق عن تفسيره. وإن وقعت فوقه بوضوح، فقد تحمل الإشارة معلومة، في هذه العينة. وإن اختيرت الاستراتيجية بوصفها الأفضل بين نسخ كثيرة، فقارنها بأفضل نتيجة من العدد نفسه من التجارب العشوائية لا بتجربة نموذجية، وإلا كان الاختبار منحازاً لصالحك.
تحفظات على Strategy Tester في TradingView
يحاكي Strategy Tester في TradingView استراتيجية Pine Script بمحاكي وسيط، وقد تجعل إعداداته الافتراضية النتائج أفضل أو أسوأ من التداول الحقيقي. افحص النقاط التالية قبل أن تثق بأي تقرير، وراجع كيف تختبر استراتيجية تداول تاريخياً لخطوات العمل الأساسية. والميزات والخطط تتغير، فتأكد من التفاصيل في وثائق TradingView الحالية:
- توقيت التنفيذ: افتراضياً يُنفَّذ الأمر المنشأ عند إغلاق شمعة عند افتتاح الشمعة التالية، والإعداد process_orders_on_close ينفّذه عند ذلك الإغلاق بدلاً من ذلك، وهو لا يكون واقعياً إلا إن كنت قادراً فعلاً على التداول عند الإغلاق.
- المسار داخل الشمعة: على الشموع التاريخية لا يرى المحاكي إلا الافتتاح والقمة والقاع والإغلاق، فيفترض مساراً داخل كل شمعة. وإن لمست شمعة الوقف والهدف معاً، حسم الترتيب المفترض النتيجة. وتستخدم ميزة Bar Magnifier، المتاحة في خطة Premium وما فوقها وقت كتابة هذا الدرس، بيانات إطار زمني أصغر لحسم ذلك، ضمن حد لعدد الشموع الداخلية.
- إعادة الرسم والنظر إلى المستقبل: الدالة request.security() مع تفعيل النظر إلى المستقبل، وقيم الإطار الأعلى المقروءة قبل إغلاق شمعتها، وإعادة الحساب مع كل تحديث سعري، كلها قد تجعل التاريخ مختلفاً عما كان سيحدث حياً، ويبيّن دليل إعادة الرسم كيف تتحقق.
- التكاليف: العمولة والانزلاق صفر ما لم تُدخلهما في تبويب Properties.
- تنفيذ أوامر الحد: افتراضياً قد يُنفَّذ أمر الحد بمجرد أن يلمسه السعر، والإعداد Verify price for limit orders يشترط أن يتجاوزه السعر بعدد من التكّات، وهذا أكثر واقعية عند المستويات المزدحمة.
- نوع الشارت: شموع Heikin Ashi وRenko وغيرها من الشارتات غير القياسية تستخدم أسعاراً اصطناعية، فقد يكون التنفيذ عليها غير واقعي؛ اختبر على الشموع العادية.
- التاريخ المتاح: لا يغطي الاختبار إلا الشموع المحمّلة على الشارت، وقد تكون صفقاتها أقل من أن تعطي تقديراً موثوقاً. تتبّع الصفقات يدوياً بأداة Bar Replay لتتأكد من مطابقتها للقواعد.
مثال محلول: الأفضل من 400 إعداد
مثال افتراضي: قاعدة لتتبع الاتجاه على 10 سنوات من البيانات اليومية لصندوق مؤشر أسهم واحد، من 2016 إلى 2025. تشتري حين يقطع متوسط متحرك سريع متوسطاً بطيئاً صعوداً، وتخرج عند التقاطع المعاكس، مع وقف على بعد 2 ATR؛ راجع دليل تقاطع المتوسطات المتحركة. الفترة 2016–2022 داخل العينة، و2023–2025 محجوزة.
- البحث: 20 طولاً سريعاً × 20 طولاً بطيئاً = 400 نسخة، اختُبرت داخل العينة مع العمولة والانزلاق.
- الفائز: سريع 13 وبطيء 47، بمعامل ربح 2.1 على 64 صفقة وأقصى تراجع 7%.
- الجيران: الإعدادات على بعد خطوة واحدة (12–14 للسريع و45–50 للبطيء) تسجل بين 1.0 و1.2: قمة حادة لا هضبة.
- الهضبة: منطقة واسعة حول السريع 20–30 والبطيء 100–150 تسجل بين 1.3 و1.5 في كل خلاياها، ومركزها سريع 25 وبطيء 125.
- مونت كارلو: إعادة خلط صفقات الفائز الـ64 تعطي وسيطاً لأقصى تراجع قدره 10%، وأسوأ 5% عند 16% أو أكثر، وهذا أعمق بكثير من 7% في التقرير.
- المعيار العشوائي: مقارنة بتجارب دخول عشوائي منفردة يبدو الفائز مميزاً، إذ يتفوق على 97% منها، لكن أفضل تجربة من 400 تجربة عشوائية بلغت معامل ربح 1.9، أي قريباً جداً منه.
- خارج العينة، مرة واحدة: سريع 13 / بطيء 47 يعطي معامل ربح 0.9 على 21 صفقة، وسريع 25 / بطيء 125 يعطي 1.2 على 9 صفقات، وهي أقل من أن تثبت شيئاً.
- القرار: استبعاد القمة الحادة، والإبقاء على إعداد الهضبة فرضيةً، واختباره للأمام على حساب تجريبي أو بحجم صغير جداً، ومراجعته بعد عدد كافٍ من الصفقات الجديدة.
قائمة فحص قبل أن تثق باختبار تاريخي
راجع هذه القائمة قبل أن يتوقف أي مال على اختبار تاريخي. كل جواب بالنفي سبب لمواصلة الاختبار لا للتداول:
والأسئلة نفسها تنطبق على أي إحصاءات منشورة، ومنها جدول النتائج المحاكى في استراتيجية UpTickFlow: فهو يصف الماضي وليس وعداً.
- هل كُتبت القواعد قبل الاختبار، وهل أحصيت كل نسخة جرّبتها؟
- هل توجد فترة خارج العينة، أو سجل سير إلى الأمام، لم يلمسها الضبط؟
- هل يقع الإعداد المختار على هضبة، بنتائج متقاربة للقيم المجاورة؟
- هل يستخدم كل مرشّح بيانات متاحة عند الدخول فقط، دون معلومات من الشمعة نفسها أو من وقت الخروج؟
- هل تشمل البيانات الأسهم المشطوبة وعضوية المؤشر كما كانت في كل تاريخ؟
- هل العمولة والفارق السعري والانزلاق واقعية، وهل تصمد النتائج إن ضاعفتها؟
- هل الصفقات كافية، وهل يتجاوز المدى بخطأين معياريين حول التوقع الصفر؟
- هل تتفوق الاستراتيجية على الدخول العشوائي بالاتجاه والوقف والخروج نفسها، وعلى أفضل نتيجة من عدد من التجارب العشوائية يساوي عدد النسخ التي جرّبتها؟
- هل تناسب تراجعات مونت كارلو قدرتك على تحمّل المخاطرة بالحجم المخطّط؟
- هل تصمد النتائج عبر السنوات وأنظمة السوق المختلفة، وهل أكدها اختبار للأمام على بيانات جديدة؟