قناة Donchian لمدة 20 يوماً تبدو بريئة في المواصفات. يكتب الوكيل أقصى قيمة متدحرجة على 20 شمعة، ويبدأ الاختبار الرجعي من الصف الأول في ملف parquet، وطوال الأسبوعين الأولين لا يكون «أعلى مستوى لـ 20 يوماً» سوى أقصى قيمة جارية لأي شموع موجودة. في اليوم الرابع هو أعلى مستوى لأربعة أيام. الاستراتيجية التي ظننت أنك تختبرها ليست تلك التي أنتجت أول دستة من التنفيذات.
لدي دفتر على شموع ETHUSDT اليومية تبلغ فيه نسبة Sharpe للعينة الكاملة 1.4. احذف أول 20 جلسة فتنخفض إلى 0.6. احتفظ بتلك الـ 20 واحذف بقية السنة الأولى فتطبع 3.1. لم يُسرِّب أحد الغد. الاستراتيجية استخدمت الماضي، لكن ليس بما يكفي منه، واعتبر التقرير تلك الصفقات نصف المتكوّنة دليلاً.
دع النافذة تتداول وهي لا تزال تمتلئ
الخراب المعتاد هو min_periods=1. يحسب Pandas متوسطاً متدحرجاً على شمعة واحدة إن سمحت له. يفعل الوكلاء هذا باستمرار، لأن قيمة NaN في أعلى الإطار تبدو كعلّة، وملؤها يجعل اختبار الوحدة يمرّ بالأخضر.
هدف تقلب محقق لـ 20 يوماً بملاحظتين فقط للعائد هو انفجار في الحجم. تباين رقمين رمية عملة، تعكسه، فيصبح المركز الأول أضعاف المخاطر المقصودة. ودرجة z مقابل انحراف معياري قريب من الصفر تؤدي الحيلة نفسها مع إشارة: تبدو الاستراتيجية كأنها تملك دخولاً حادّاً كالشفرة لا يظهر مجدداً متى صارت النافذة صادقة.
الاختراقات أسوأ، لأنها تبدو كالقاعدة الحقيقية. قناة من 20 شمعة على الشمعة السادسة هي قناة من ست شموع. تحصل على عنقود صفقات في البداية مباشرة، غالباً في فترة هادئة ما كانت لتفعّل المؤشر المكتمل. الأسواق الهادئة تنزاح قليلاً. قناة ضيقة تُطلق. منحنى حقوق الملكية يحصل على انطلاقة لا تكررها أي سنة لاحقة.
ملء الأصفار والملء الأمامي يخترعان كذبة مختلفة. قراءة RSI عند 0 تعني تشبعاً بيعياً. وATR مفقود بقيمة 0 يفجّر حجم الوحدة، فيشتري الاختبار الرجعي مستودعاً بطاعة. أفضّل أن تقتل قيمة NaN الأمر على أن يخترع 0 أمراً.
ما زلت أجد نفسي أرسم من الصف 0 لأن شهراً فارغاً على يسار الرسم يبدو غير مكتمل. الشهر الفارغ هو الجزء الصادق.
قصّ منحنى حقوق الملكية، واحتفظ بالمركز
هذا ينجو من مراجعة الشفرة. تحسب خصائص الـ 20 يوماً بشكل صحيح، وتحذف أول 20 صفاً من المنحنى المرسوم، وتنشر من 21 يناير. المركز في 21 يناير فُتح في 14 يناير. العلامة المائية العليا لوقف التتبع، وعدد الهرم، والنقد بعد تلك الإحماءات: كلها دخلت إلى العينة «النظيفة».
الخراب استراتيجية ورقية لا يمكن بدؤها في التاريخ المذكور في المقال. أعد التشغيل من دون مراكز عند البداية المعلنة فتختلف أوامر الأسبوع الأول. أحياناً يكون الاختبار الرجعي داخل صفقة ليس لدى النظام الورقي سبب لدخولها. وأحياناً يدخل النظام الورقي لأن نافذة نظره باردة، بينما الاختبار الرجعي يجلس خارجاً لأن شهره المخفي التقط الاختراق مسبقاً. دفتران للافتتاح، وتاريخ بداية منشور واحد.
طيات walk-forward تفعل هذا بهدوء. لكل نافذة اختبار ذيل نظر إلى الماضي لا ترسمه. تخطَّ محاكاة ذلك الذيل فتعود صفقات الاختبار الأولى صفقات نافذة غير مكتملة مجدداً. حاكِه وأبلغ عن أيام الاختبار فقط، فيصبح مركز يوم الاختبار مشروطاً بتنفيذات لا تعرضها. هذه النسخة الثانية قد تكون خياراً بحثياً مشروعاً. أما تسمية صباح الطية الأول بداية باردة، بينما وقف التتبع حيّ أصلاً من الذيل، فهي كيف يحصل باحثان على نسبتَي Sharpe من إعداد واحد.
الإحماء بأيام التقويم حين لا تكون الخاصية يوماً
«أعطها 30 يوماً» يترك الخاصية ناقصة التحديد. ثلاثون يوماً تقويمياً على قناة Donchian بفاصل 5 دقائق تعني آلاف الشموع بعد نافذة نظر من 20 فترة. وثلاثون يوماً على خاصية يومية تحتاج 20 جلسة إما مفرطة أو شحيحة، بحسب عطل نهاية الأسبوع والفجوات.
حصلت درجة z لمعدل التمويل في إحدى منصات العقود الدائمة لدينا على إحماء من 30 يوماً لأن المواصفات قالت 30 فترة وترجم أحدهم الفترات إلى تقويم. التمويل هناك يُطبع كل ثماني ساعات. ثلاثون يوماً نحو 90 تسوية. وثلاثون فترة عشرة أيام. شهرا الإحماء الإضافيان شملا بالصدفة أسبوع فكّ الربط. حذفه جعل النافذة الحية تبدو أهدأ من التاريخ الحقيقي للاستراتيجية. لام الناس حساسية تاريخ البداية. الإحماء كان قد ابتلع النظام.
والعملات المشفرة مقابل الأسهم تجعل الرقم نفسه يغيّر معناه دون أن يعدّل أحد معلَمة. عشرون «يوماً» من ETH تشمل أيام السبت. وعشرون جلسة أسهم تكاد تكون شهراً تقويمياً. انسخ نافذة نظر من 20 يوماً من دفتر أسهم إلى شموع العقود الدائمة الساعية فتحصل على قناة من 20 ساعة باسم 20 يوماً. أول شمعة صالحة تكون عندئذ إما بعد 20 ساعة، أو بعد 20 يوماً إن أعادت دالة لاحقة أخذ العينات، وقد رأيت الحالتين في نفس فرق الوكيل.
ثبّت أول طابع زمني قابل للتداول
الإحماء متطلب بيانات، لا عينة إضافية. كل خاصية تسمّي عدد المشاهدات المكتملة التي تحتاجها، بالوحدات التي تُحسب بها. أول طابع زمني قابل للتداول هو أول شمعة تتحقق فيها كل تلك الشروط ويُسمح لحساب بلا مراكز بإرسال أمر.
| الخاصية | ما تقوله المواصفات عادةً | ما يجب أن يوجد فعلاً | البديل الصامت |
|---|---|---|---|
| Donchian لمدة 20 يوماً | 20 أعلى مستوى يومي | 20 جلسة مكتملة | أقصى جارٍ مع min_periods=1 |
| تقلب محقق لـ 30 يوماً | نافذة 30 يوماً | 30 عائداً من إغلاق إلى إغلاق | تباين يومين، معكوس إلى حجم |
| درجة z للتمويل على 20 طبعة | 20 يوماً | 20 تسوية تمويل | 20 يوماً تقويمياً (~90 طبعة)، أو 20 شمعة من إطار زمني خاطئ |
| RSI لـ 14 فترة على 5m | 14 فترة | 14 شمعة خمس دقائق مغلقة | 14 يوماً، أو 14 شمعة بفجوات مملوءة أمامياً |
يبقى P&L قبل ذلك الطابع الزمني خارج سجل الأداء. الحالة قبل ذلك الطابع قد تحتاج محاكاة رغم ذلك، حتى يكون وقف التتبع أو فترة التهدئة حقيقيين عندما تصل الساعة إلى أول شمعة قابلة للتداول، لكن تلك التنفيذات لا تدخل في Sharpe ولا في عدد الصفقات ولا في حساب السعة. ثم نفّذ الفحص القبيح: أعد التشغيل من دون مراكز عند ذلك الطابع، مع إتاحة نافذة النظر كبيانات فقط. إن تغيّرت الأوامر، كنت تُصدِر صفقات مخفية.
يبدأ التداول الورقي على العقد نفسه. وكذلك كل نافذة اختبار walk-forward. إن بدا الرسم كأنه ينقصه شهر، اتركه ناقصاً.
→ جميع المقالات


