یک استراتژی تا زمانی که آزمون نشده، فقط یک عقیده است. بکتست، فرایندی است که این عقیده را به فرضیه قابل سنجش تبدیل میکند — به شرطی که درست انجام شود.
هوش مصنوعی این فرایند را بهطور چشمگیری سریعتر میکند، اما اگر مراقب نباشید، سریعتر هم شما را به نتیجه اشتباه میرساند.
مرحله اول: رفع ابهام
پیش از هر کدنویسی، استراتژی باید بدون ابهام تعریف شود. این مرحله را معمولاً رد میکنند و بعداً هزینهاش را میدهند.
سؤالاتی که باید پاسخ داده شوند: سیگنال روی کندل بستهشده ارزیابی میشود یا جاری؟ ورود در بسته شدن همان کندل یا باز شدن کندل بعد؟ چند پوزیشن همزمان مجاز است؟ اگر سیگنال مخالف رسید، پوزیشن فعلی بسته شود یا نادیده گرفته شود؟ اگر حد ضرر و حد سود در یک کندل هر دو لمس شوند، کدام اول فرض شود؟
پاسخ آخر معمولاً باید محافظهکارانه باشد: فرض کنید حد ضرر اول فعال شده. این فرض، نتیجه بکتست را بدبینانهتر میکند و همین درست است.
تکنیک مفید: استراتژی را به مدل توضیح دهید و بخواهید پیش از کدنویسی، فقط ابهامها را فهرست کند. معمولاً متوجه میشوید استراتژیتان چند نقطه تعریفنشده دارد.
مرحله دوم: کد بدون نگاه به آینده
خطرناکترین خطای بکتست، استفاده از دادهای است که در زمان تصمیم هنوز در دسترس نبوده. این خطا منحنی سرمایه زیبایی میسازد که در اجرای واقعی کاملاً فرو میریزد.
قاعده کلیدی: سیگنال در کندل n، اجرا در باز شدن کندل n+1.
خطاهای مشابه دیگر: استفاده از های و لوی کندل جاری برای تصمیمی که در همان کندل اجرا میشود، محاسبه اندیکاتور با داده آینده، و استفاده از داده تایمفریم بالاتر بدون تأخیر مناسب.
کد تولیدشده را باید از این زاویه بازبینی کنید. یک روش عملی: خروجی معاملات را نگاه کنید. اگر ورودها بهطور غیرعادی نزدیک به کفها و سقفها انجام میشوند، تقریباً قطعاً جایی نگاه به آینده وجود دارد.
مرحله سوم: هزینههای واقعی
بکتست بدون کارمزد و اسلیپیج، برای استراتژیهای پرتکرار کاملاً بیمعنی است.
تست مفید: کارمزد و اسلیپیج را دو برابر کنید و ببینید نتیجه چه میشود. اگر استراتژی با دو برابر هزینه فرو میریزد، حاشیه ایمنی ندارد و در شرایط واقعی — که هزینهها گاهی بیشتر از انتظار است — دوام نمیآورد.
مرحله چهارم: معیارهای درست
بازدهی کل، گمراهکنندهترین معیار ممکن است. معیارهایی که واقعاً اطلاعات میدهند:
انتظار آماری به R — میانگین نتیجه هر معامله به واحد ریسک. این تنها عددی است که بهتنهایی میگوید سیستم لبه دارد یا نه.
حداکثر دراودان و مدت آن — دراودان ۴۰ درصدی که شش ماه طول کشیده، از نظر روانی تحملناپذیر است حتی اگر بازدهی نهایی خوب باشد.
طولانیترین توالی ضرر — عددی که تعیین میکند آیا میتوانید به سیستم پایبند بمانید.
توزیع نتایج — آیا بازدهی از چند معامله استثنایی میآید یا توزیعشده است؟
مرحله پنجم: تشخیص بیشبرازش
اگر بهاندازه کافی پارامتر تنظیم کنید، همیشه میتوانید نتیجهای عالی روی داده گذشته بسازید. این نتیجه هیچ ارزشی برای آینده ندارد.
آزمون حساسیت پارامتر بهترین ابزار است. پارامترها را ۱۰ تا ۲۰ درصد تغییر دهید. استراتژی سالم باید در محدودهای از مقادیر عملکرد قابل قبولی داشته باشد. اگر فقط در یک نقطه دقیق کار میکند، آن نقطه را روی نویز پیدا کردهاید.
نسبت پارامتر به معامله. با ده پارامتر و پنجاه معامله، عملاً داده را حفظ کردهاید نه الگو را.
پایداری در زیردورهها. داده را به دو یا سه بخش تقسیم کنید. اگر عملکرد فقط در یک بخش خوب است، احتمالاً شرایط خاص آن دوره را برازش کردهاید.
آزمون خارج از نمونه. بخشی از داده را از ابتدا کنار بگذارید و تا پایان توسعه به آن دست نزنید. این سختترین و صادقانهترین آزمون است.
نقش هوش مصنوعی بهعنوان منتقد
کاربرد کماستفاده اما بسیار مفید: نتایج بکتست را به مدل بدهید و بخواهید نقش منتقد بدبین را بازی کند و دلایلی بیاورد که چرا این نتیجه ممکن است واقعی نباشد.
مدل معمولاً موارد خوبی پیدا میکند: فرضهای خوشبینانه، نشانههای بیشبرازش، آزمونهای انجامنشده، و مقایسههای نشده با معیار ساده.
آن آخری مهم است: آیا این استراتژی از یک روش ساده — مثلاً خرید و نگهداری — بهتر عمل میکند؟ اگر نه، پیچیدگی آن توجیهی ندارد.
واقعیت نهایی
بکتست خوب، احتمال شکست را کم میکند؛ موفقیت را تضمین نمیکند. تفاوت بین نتیجه بکتست و عملکرد واقعی تقریباً همیشه وجود دارد و تقریباً همیشه به ضرر شماست.
انتظار معقول این است: اگر بکتست نشان میدهد استراتژی لبهای ندارد، تقریباً قطعاً ندارد. اگر نشان میدهد لبه دارد، شاید داشته باشد — و باید با حجم کوچک و در شرایط واقعی آزمایش شود.
این عدم تقارن، مهمترین نکتهای است که باید از بکتست فهمید.