Indikora
خواندن چارت · 10/10

بک‌تست صادقانه: بیش‌برازش، نگاه به آینده و بازماندگان

پیشرفته 11 دقیقه مطالعه

منحنی سرمایه‌ای دارید که بالا و به راست می‌رود. شارپ بالای ۲، حداکثر دراودانی که می‌شود با آن زندگی کرد، چند صد معامله. یک آخر هفته تنظیم‌کردن برد و نتیجه حس دستاورد می‌دهد.

احتمالاً بی‌ارزش است، به دلایلی مکانیکی نه به‌خاطر کمبود مهارت. بک‌تست یک استراتژی را تست نمی‌کند. اندازه می‌گیرد یک قاعده چقدر خوب مجموعه‌داده‌ای را که از قبل دیده‌اید توصیف می‌کند. این‌ها دو ادعای متفاوت‌اند، و دومی هیچ نتیجه‌ای درباره‌ی پول پشتیبانی نمی‌کند. اگر استراتژی‌ای دارید که به آن می‌بالید، بقیه‌ی این متن را با همان استراتژی در ذهن بخوانید.

بیش‌برازش شلختگی نیست، یک مسئله‌ی شمارش است

قاب استاندارد این است که بیش‌برازش وقتی رخ می‌دهد که پارامتر زیادی اضافه کنید. بخشی از ماجرا همین است. بخش بزرگ‌تر این است که چند بار نگاه کرده‌اید.

هر تستی که روی همان مجموعه‌داده اجرا می‌کنید یک آزمایش است. یک دوره‌ی نگاه را عوض کنید و دوباره اجرا کنید: آزمایش. یک فیلتر اضافه کنید و دوباره اجرا کنید: آزمایش. دارایی دیگری را امتحان کنید چون اولی ناامیدکننده بود: آزمایش. بعد از ۲۰۰ آزمایش روی یک تاریخچه، بهترین نتیجه همان چیزی است که صرفاً از نویز انتظار می‌رفت، چه برتری‌ای وجود داشته باشد چه نداشته باشد.

در آستانه‌ی معناداری ۵٪، ۲۰۰ آزمایش مستقل تقریباً ۱۰ نتیجه‌ی «معنادار» کاذب صرفاً از روی شانس تولید می‌کنند. بعد بهترینشان را انتخاب می‌کنید، که دقیقاً همان روال انتخابی است که تضمین می‌کند یک مثبت کاذب برداشته‌اید.

شمار آزمایش‌ها تقریباً هرگز در گزارش کسی ظاهر نمی‌شود، و باید اولین عدد گزارش‌شده باشد. هر پیکربندی‌ای را که تست می‌کنید ثبت کنید، از جمله رهاشده‌ها، و با نتیجه‌ی نهایی مثل یک قرعه از کل آن جست‌وجو رفتار کنید.

و این شمار از آزمایش‌های خودتان بزرگ‌تر است. اگر دارید تقاطع میانگین متحرک را روی S&P تست می‌کنید، اولین نفر نیستید. هزاران نفر گونه‌هایی از همین ایده را روی همین تاریخچه تست کرده‌اند، و آن‌هایی که شکست خوردند هرگز منتشر نشدند. جست‌وجویی را به ارث برده‌اید که خودتان اجرایش نکرده‌اید.

سوگیری نگاه به آینده در کد معمولی پنهان می‌شود

نگاه به آینده یعنی استفاده از اطلاعاتی در زمان t که در زمان t در دسترس نبوده. بیانش آسان است و مدام نقض می‌شود.

استفاده از قیمت بسته‌شدن هم به‌عنوان سیگنال و هم به‌عنوان قیمت پرشدن. قاعده‌تان روی بسته‌شدن امروز فعال می‌شود و شما روی بسته‌شدن امروز پر می‌شوید. در معامله‌ی واقعی نمی‌توانید قیمت بسته‌شدن را پیش از وقوعش بدانید. این فاصله روی کندل‌های روزانه‌ی نقدشونده کوچک است و روی هر چیز درون‌روزی یا کم‌عمق عظیم.

داده‌ی بازنگری‌شده. ارقام اقتصادی تجدیدنظر می‌شوند. پایگاه داده‌ای که مقدار نهایی بازنگری‌شده را روی تاریخ اصلی نشان دهد به قاعده‌ی شما اجازه می‌دهد عددی را به کار ببرد که هفته‌ها وجود نداشته است.

اندیکاتورهای محاسبه‌شده روی کل سری. هر نرمال‌سازی، رتبه‌بندی یا امتیاز z که روی کل تاریخچه حساب شود، اطلاعات آینده را به تک‌تک کندل‌های ابتدایی تزریق می‌کند.

نشانه‌اش منحنی سرمایه‌ی مشکوکانه صاف است با نرخ برد بالا و دراودان‌های کم‌عمق. این شکل معمولاً یعنی به سیستم دارند جواب می‌دهند نه اینکه سیستم پیش‌بینی می‌کند.

بازماندگی خاصیت داده‌ی شماست، نه کدتان

اگر جهان دارایی‌های شما فهرست امروز باشد، از قبل هر چیزی را که مرده حذف کرده‌اید. سهم‌های حذف‌شده از تابلو، توکن‌های شکست‌خورده، صرافی‌های فروپاشیده، جفت‌هایی که معامله‌شان متوقف شده. تک‌تکشان در زمان خودشان در جهان قابل سرمایه‌گذاری بودند و از تست شما غایب‌اند.

در کریپتو این شدید است. مجموعه‌ی توکن‌هایی که تاریخچه‌ی قیمت چندساله‌ی کامل دارند نمونه‌ای به‌شدت گزینش‌شده است - همان‌هایی که جان به در بردند. استراتژی‌ای که فقط روی بازمانده‌ها تست شود مقاوم به‌نظر می‌رسد چون ورشکستگی از نمونه حذف شده است.

هزینه‌ها خطای گرد کردن نیستند

اصطکاک‌ها آخر از همه اضافه می‌شوند، اگر اصلاً بشوند، و نتیجه‌ها را بیشتر از هر پارامتری عوض می‌کنند. اسپردی را که واقعاً می‌پردازید به‌جای میانگین اعلامی وارد کنید، اسلیپیجی که با نوسان و حجم مقیاس می‌گیرد، و کارمزد، فاندینگ یا سواپ روی پوزیشن‌های نگه‌داشته‌شده.

سیستمی که با هزینه‌ی صفر زنده می‌ماند و با هزینه‌ی واقعی می‌میرد از اول سیستم نبوده. توصیفی از قیمت میانی بوده. اصطکاک فرضی‌تان را دو برابر کنید و ببینید چه می‌ماند. اگر برتری ناپدید شد، داخل اسپرد بوده است.

یک تست صادقانه چه شکلی است

داده را پیش از شروع تقسیم کنید، و به بخش کنارگذاشته دست نزنید. روی یک بخش توسعه دهید، بعد یک بار روی داده‌ای که هرگز بررسی‌اش نکرده‌اید اجرا کنید. یک بار. اگر بعد از دیدن آن نتیجه برگردید و تنظیم کنید، بخش کنارگذاشته آلوده شده و دیگر بخش کنارگذاشته‌ای ندارید.

واک‌فوروارد را ترجیح دهید. روی یک پنجره برازش کنید، پنجره‌ی بعدی را معامله کنید، بغلتید جلو. تقریبی از این است که واقعاً چطور عمل می‌کردید، و استراتژی‌هایی را که فقط در یک رژیم کار می‌کردند لو می‌دهد.

شمار آزمایش‌ها، اصطکاک‌ها و حساسیت پارامتری را گزارش کنید. نتیجه‌ای که از تغییر ۱۰٪ در هر پارامتر جان به در ببرد از نتیجه‌ی بهتری که جان به در نبرد ارزشمندتر است.

بعد هم انتظار داشته باشید عملکرد زنده به‌هرحال بدتر باشد. مقداری افت حتی با روش‌شناسی تمیز عادی است، چون بازارها عوض می‌شوند و چون نمی‌توانید گزینش خودتان را کاملاً حذف کنید.

برای همین است که سند رو به جلو از بک‌تست مهم‌تر است. ایندیکورا هر سیگنال منتشرشده را با SHA-256 هش می‌کند و به سیگنال قبلی زنجیر می‌کند، پس سابقه‌ی عمومی را نمی‌شود ویرایش یا تاریخ‌عقب کرد، و کالیبراسیون احتمال منتشر می‌کند - وقتی می‌گوید ۶۰٪، می‌توانید بررسی کنید چند بار درست بوده. هیچ‌کدام با بک‌تست ممکن نیست، چون بک‌تست طبق تعریف بعد از واقعه نوشته می‌شود.

استراتژی‌ای که یک آخر هفته تنظیمش کردید ممکن است هنوز هم خوب باشد. ولی هنوز این را نمی‌دانید، و موضع صادقانه این است که پیش از اینکه حجمی رویش بگذارید، بلند بگویید نمی‌دانید.

نکته کلیدی

بک‌تست اندازه می‌گیرد یک قاعده چقدر خوب گذشته را توصیف می‌کند، و فقط نتیجه‌ی خارج از نمونه روی داده‌ای که دست نزده‌اید درباره‌ی آینده حرفی می‌زند.

خودت را بسنج

تقریباً ۳۰۰ ترکیب پارامتری را تست کرده‌اید و بهترینش را نگه داشته‌اید. عملکرد بک‌تست آن چه به شما می‌گوید؟
بک‌تست کریپتوی شما از ۲۰۱۸ تا امروز را با همه‌ی دارایی‌هایی که اکنون در ۲۰۰ ارز برتر بازارند پوشش می‌دهد. ایراد ساختاری چیست؟
تمرین

تعداد پیکربندی‌هایی را که پیش از رسیدن به قواعد فعلی‌تان تست کرده‌اید به‌همراه اصطکاک‌هایی که فرض گرفته‌اید بنویسید، و آن یادداشت را به استراتژی بچسبانید تا نتایج آینده در برابرش قضاوت شوند.

ژورنال معاملات
آنچه خواندی را تمرین کن

ایندیکورا شبیه‌ساز رایگان، بازپخش کندل و کوچ رفتاری دارد که معاملات خودت را می‌خواند.

ورود به اپ