مقدمه
سلام! در این مقاله قصد دارم به بررسی اشتباهات رایج در انجام و تفسیر نتایج بکتست بپردازم. بکتست اساس ارزیابی در کوانت تریدینگ و معاملات الگوریتمی است و اعتبار آن، مهمترین رُکن موفقیت ما در بازارهای مالی است. اما به همان اندازه که بکتست ضروری است، اشتباهات رایجی در اجرا و تفسیر نتایج آن وجود دارد که میتواند منجر به نتایج گمراهکننده و ضررهای سنگین در ترید واقعی شود.
این اشتباهات را میتوان به دو دسته کلی تقسیم کرد:
- اشتباهات مستقیم: اینها مستقیماً با خود فرآیند بکتست در ارتباط هستند.
- اشتباهات غیرمستقیم: اینها به شکل مستقیمی با یک بکتست تکی مرتبط نیستند و بیشتر محیط بر بکتستهای متعدد و تفسیر تجمعی نتایج آنها هستند.
هدف من در این مقاله، روشن کردن این نکات کلیدی است تا بتوانید بکتستهای معتبرتر و استراتژیهای سودآورتر و پایدارتری تدوین کنید.
اگر با مشاهده ویدئو راحتترید، ویدئوهای زیر را نگاه کنید.
1) بخش اول
2) بخش دوم
اگر با متن راحتترید، به خواندن ادامه بدید!
اشتباهات مستقیم در بکتست
سفارشگذاری روی دیتای محاسباتی (Calculated Data)
یکی از شایعترین و فاجعهبارترین اشتباهاتی که یک فرد میتواند مرتکب شود، سفارشگذاری (Order Placement) روی دیتای محاسباتی یا مصنوعی (Synthetic) مانند هایکن آشی (Heiken Ashi)، کاگی (Kagi)، رنکو (Renko) و غیره است. در حالی که رایجترین دیتای مورد استفاده در تحلیل پرایس اکشن، کندلاستیکها هستند، برخی تریدرها به اشتباه استراتژیهای خود را روی چارتهای محاسباتی اجرا میکنند.
چرا این یک اشتباه مهلک است؟
وقتی استراتژی را روی دیتای هایکناشی اجرا میکنیم، نتایج بکتست به شکل فوقالعادهای بهبود مییابند که کاملاً غیرواقعی است. به عنوان مثال، در یک بکتست واقعی روی دیتای استاندارد (کندلاستیک) بیتکوین، ممکن است نت پرافیت حدود 100 درصد، وینریت 35.7 درصد و دراودان 63 درصد باشد. اما همین استراتژی روی هایکناشی، نت پرافیت را به 130 هزار درصد، وینریت را به 71.68 درصد و دراودان را به شکل معجزهآسایی به 14.74 درصد کاهش میدهد. باور کنید یا نه، 70 تا 80 درصد کسانی که به من میگویند استراتژی سودآوری پیدا کردهاند، یا مستقیماً روی هایکناشی سفارشگذاری میکنند یا ناخودآگاه همین اشتباه را مرتکب میشوند.
علت عدم اعتبار: مشکل اصلی دیتای محاسباتی این است که قیمتی که به استراتژی میدهد، واقعیت ندارد؛ بلکه یک قیمت محاسبهشده است. هایکناشی و چارتهای مشابه، اطلاعات نویز (Noise) را از دیتا حذف میکنند. این فرآیند نویزگیری (De-noising) باعث میشود کندلها بسیار منظم به نظر برسند (مثلاً چندین کندل سبز پشت سر هم یا چندین کندل قرمز پشت سر هم). این “عملکرد عالی” در بکتست، هرگز در ترید واقعی تکرار نخواهد شد.
مثلاً، یک معامله که در بکتست روی هایکناشی 55 درصد سوددهی داشته، در واقعیت و روی دیتای استاندارد، میتواند به منفی 11 درصد ضرر تبدیل شود. این تفاوت فاحش به این دلیل است که قیمتهای بستهشدن (Close Price) هایکناشی با قیمتهای واقعی بازار (Real Market Close) متفاوت است.
این مشکل تنها به هایکناشی محدود نمیشود؛ هر چارت محاسباتی دیگری نیز همین ایراد را دارد. حتی اگر در چارتهایی مانند رنکو، نت پرافیت تفاوت فاحشی با دیتای استاندارد نداشته باشد، اما کاهش غیرواقعی دراودان (Drawdown) باید شاخکهای ما را تیز کند.
راهحل
برای جلوگیری از این اشتباه، باید فقط روی دیتای استاندارد سفارشگذاری کرد. این دیتا شامل کندلاستیک، قیمت کلوز (Close Price)، تیک دیتا (Tick Data) یا هر دیتای دیگری است که عملیات ریاضی (جمع، تفریق، ضرب، تقسیم) روی آن برای ساخت یک نمایش جدید از قیمت انجام نشده باشد. حتی خود کندلاستیک نیز نمونهبرداری (Sampled) از تیک دیتا است، اما روی آن عملیات ریاضی برای تغییر قیمت انجام نمیشود.
لوکاَهد بایاس (Look-Ahead Bias)
لوکاَهد بایاس زمانی اتفاق میافتد که دیتای آینده، به شکل مستقیم یا غیرمستقیم، آگاهانه یا ناآگاهانه، در تصمیمات جاری استراتژی دخیل شود. همانطور که اشاره کردم، سفارشگذاری روی هایکناشی نوعی از این بایاس محسوب میشود. این بایاس نیز تقریباً همیشه نتایج بکتست را بسیار بهتر از واقعیت نشان میدهد.
چرا این اتفاق میافتد؟ ترید و سرمایهگذاری با عدم قطعیت فوقالعاده زیادی درگیر است. در این عدم قطعیت مطلق، هر روزنه نوری که اطلاعاتی از آینده به ما بدهد، میتواند به شدت در تصمیمگیریها و بهرهبرداری از بازار کمک کند. کل هدف ما در ترید و سرمایهگذاری، رسیدن به قدرت پیشبینی (Prediction Power) است. اگر من به هر شکلی (رانت، توان پردازشی بالا و…) به این قدرت برسم، تصمیمگیری درست متناسب با دیتای آینده، کار آسانی خواهد بود. بنابراین، دخیل کردن دیتای آینده، چه آگاهانه و چه ناآگاهانه، در بکتست که یک فرآیند گامبهگام است، نتایج را متورم و غیرواقعی میکند.
نشانههای رایج لوکاِهد بایاس:
- استفاده از های (High) یا لو (Low) در استراتژیهای میاندورهای (Intra-Period Strategies):
- استراتژیهای پایاندورهای (End-of-Period Strategies): در این حالت، ما صبر میکنیم تا قیمت در یک پنجره زمانی (تایمفریم) بسته شود و سپس محاسبات را روی قیمت کلوز (Close Price) انجام داده و روی اپن (Open) کندل بعدی سفارش میگذاریم. بکتست گرفتن از این نوع استراتژیها سادهتر است.
- استراتژیهای میاندورهای: در این نوع استراتژیها، ترید قبل از بسته شدن کامل کندل در تایمفریم انجام میشود (مثلاً خرید یا فروش در شدو کندل یا استفاده از حد ضرر/حد سود درون بدنه کندل). بکتست گرفتن از این استراتژیها دشوار است و ابزارهای خاصی را میطلبد. شکل شایع این بایاس زمانی است که با ابزاری که توان مدلسازی استراتژیهای میاندورهای را ندارد، این استراتژیها را مدلسازی میکنیم و از های و لو کندل استفاده میکنیم.
- استفاده از ابزارهای بکتست شخصی: طراحی یک انجین بکتست فوقالعاده پیچیده و پیشرفته است. بسیاری از ابزارهای شخصی در معرض این بایاس قرار دارند؛ مثلاً برخی از آنها اردرها را روی قیمت کلوز فیل (Fill) میکنند، نه روی اپن کندل بعدی. حتی تریدینگ ویو (TradingView) که یک ابزار قدرتمند است، اگر حواس نباشد که چه استراتژیای را روی آن بکتست میگیریم، میتواند دچار این بایاس شود.
- استراتژیهای مولتیتایمفریم (Multi-Timeframe Strategies) با ابزارهای شخصی: شبیهسازی صحیح دیتای یک تایمفریم بالاتر و استفاده از آن، کار فوقالعاده سختی است و سادهسازی آن میتواند منجر به این بایاس شود.
راهحلهای جلوگیری از لوکاِهد بایاس
- منطق استراتژی را به پایاندورهای محدود کنید: در این حالت، بسیاری از ابزارها میتوانند نیاز شما را برطرف کنند. اما همچنان باید دقت کنید که ابزار مورد استفاده، اردرها را دقیقاً چگونه شبیهسازی میکند (مثلاً روی اپن کندل بعدی، نه کلوز کندل قبلی).
- به نحوی از دیتای حقیقی میاندورهای استفاده کنید: تیک دیتا (Tick Data)، دیتای خام و حقیقی میاندورهای است. هر تریدی که انجام میشود و یک حجم مشخص، زمان مشخص و قیمت مشخص دارد، یک “تیک” است. تعداد تیکها معمولاً در یک ثانیه هزاران عدد است و پردازش آنها با امکانات معمولی دشوار است. میتوان از نمونهبرداری مجدد (Re-sampling) از تیک دیتا (مثلاً دیتای هر یک ثانیه یک بار) استفاده کرد.
سوگیری شناختی (Cognitive Bias)
سوگیری شناختی زمانی رخ میدهد که فقط به نتیجه نهایی بکتست نگاه میکنیم و زمانهای ناکارایی استراتژی در طول بکتست را نادیده میگیریم. مثلاً، یک استراتژی در طی 4 سال 1000 درصد سود ساخته است، اما همین استراتژی ممکن است با دراودان (سقوط) نزدیک به 70 درصد و دورههای طولانی ناکارایی (مثلاً 1 سال و 5 ماه درجا زدن) همراه باشد که اگر به آنها دقت نکنیم، دچار این بایاس شدهایم.
مشکلات ناشی از سوگیری شناختی
- نادیده گرفتن روانشناسی و آستانه تحمل خود: اگر آستانه تحمل ما در برابر دراودانها و دورههای ناکارایی در نظر گرفته نشود، ممکن است در ترید واقعی تصمیمات درستی نگیریم، به استراتژی مهلت ندهیم و آن را قبل از رسیدن به سود، متوقف کنیم.
- تست استراتژی فقط در شرایط مناسب: فرض کنید یک استراتژی را تنها در یک دوره روند صعودی یا بدون کرشهای بزرگ تست کردهاید. این نیز نوعی سوگیری شناختی است، زیرا استراتژی در شرایط واقعی بازار ممکن است با روندهایی که باعث ناکارایی میشوند، روبرو شود.
- ظهور دراودانهای زیاد و طولانیمدت: این بایاس معمولاً به شکل دراودانهای 70 درصدی و طولانیمدت در یک استراتژی به ظاهر کارا خود را نشان میدهد.
راهحلهای بیاثر کردن سوگیری شناختی
- انتخاب فیلتر درست: این به معنای آن است که استراتژی را متناسب با وضعیت بازار، فعال (On) یا غیرفعال (Off) کنیم. مثلاً، اگر بازار ساید (Side) و کمجان است، استراتژی را خاموش کنیم. داشتن فیلتری که وضعیت آینده بازار را پیشبینی کند، میلیاردها دلار ارزش دارد، اما تقریباً غیرممکن است. بنابراین، به راهکارهای عملیتر میپردازیم.
- محدود کردن دراودان:
- قرار دادن حد ضرر (Stop-Loss): این یک ابزار اساسی برای مدیریت ریسک است.
- کم کردن حجم پوزیشنها (Position Size) بعد از ضررهای متوالی: سادهترین روش این است که پوزیشن سایز شما درصدی از اکوئیتی (Equity) باشد (مثلاً 10 درصد). بدین ترتیب، در دوره سود، حجم دلاری پوزیشنها زیاد میشود و در دوره ضرر، کمتر میشود.
- امرجنسی استاپ (Emergency Stop): وقتی به یک میزان از پیش مشخصی از ضرر رسیدید، همه چیز را خاموش کرده، تمامی پوزیشنها را ببندید و بررسی کنید که چه اتفاقی افتاده است.
- متنوعسازی درست (Proper Diversification): در “مثلث طلایی ترید و سرمایهگذاری” (که در دوره مبانی و مفاهیم الگوتریدینگ به تفصیل به آن پرداختهایم)، متنوعسازی درست یکی از رئوس این مثلث است. با متنوعسازی صحیح، استراتژیها به طور همزمان ضررهای یکدیگر را پوشش میدهند و سودهای هم را جمع میزنند. این کار هم میزان ضرر را کاهش میدهد و هم میزان سود را افزایش میدهد و در بیاثر کردن این بایاس نقش مهمی دارد.
اشتباهات غیرمستقیم در بکتست
اُپتیمایزیشن بایاس (Optimization Bias)
این بایاس که با نامهای دیتا اسنوپینگ (Data Snooping) و کرو فیتینگ (Curve Fitting) نیز شناخته میشود، به معنای تلاش برای رسیدن به حداکثر بازدهی ممکن در بازه زمانی بکتست است. در این حالت، هدف اصلی نه تدوین استراتژی سودآور برای آینده، بلکه ماکسیمم کردن نت پرافیت در دیتای گذشته است، حتی اگر منطقی پشت آن نباشد.
چرا این یک مشکل است؟
چون این رویکرد معمولاً ناقض متد علمی حل مسئله است. در متد علمی، پس از مشاهده و فرضیهسازی و فرمولهسازی، تست انجام میشود. اگر نتیجه مطلوب نبود، باید از ابتدا (مشاهده و فرضیهسازی) چرخه را طی کرد.
اما در اُپتیمایزیشن بایاس، فرد به جای بازگشت به مراحل اولیه، مستقیماً به مرحله فرمولهسازی میپرد، اندیکاتورهای جدید اضافه میکند، یا فیلترها را تغییر میدهد تا نتایج گذشته را به بهترین شکل ممکن “فیت” کند.
فیت کردن (Fit) عملکرد استراتژی روی دیتای گذشته (Curve Fitting)، احتمال تکرار شدنش در آینده را نزدیک به صفر مطلق میکند.
به دلیل عدم قطعیت بسیار زیاد در بازارهای سرمایه، استراتژی که روی دیتای گذشته به این شکل فیت شده باشد، بلافاصله پس از اجرا در مود واقعی، با نتایج ناامیدکنندهای روبرو میشود.
این بایاس همچنین زمانی رخ میدهد که قواعد استراتژی یا بازه تست آنها بدون منطق کافی انتخاب شوند. مثلاً، اگر یک اندیکاتور مانند SMA در استراتژی استفاده شده و مقادیر آن (مثلاً از 2 تا 100) بدون منطق خاصی (مانند SMA 5 به دلیل 5 روز کاری در بازارهای جهانی) تست شود، منجر به کرو فیتینگ میشود.
راهحل: تست واک فوروارد (Walk-Forward Testing)
تست واک فوروارد میتواند تا حد زیادی این بایاس را کماثر کند. این تست به این صورت انجام میشود:
- یک دوره زمانی (مثلاً 4 سال) برای تست کلی انتخاب میشود.
- بر روی یک پنجره زمانی اولیه (مثلاً 3 ماه اول)، بهینهسازی (Optimization) انجام میشود.
- سپس، استراتژی بهینه شده برای یک دوره بعدی (مثلاً 1 ماه بعد از دوره بهینهسازی) “ترید” میشود و نتایج ذخیره میشوند.
- این پنجره بهینهسازی (مثلاً 3 ماه) و پنجره ترید (مثلاً 1 ماه) به جلو حرکت میکنند (مثلاً بهینهسازی روی ماه دوم تا چهارم و ترید روی ماه پنجم).
- این فرآیند تا پایان دوره 4 ساله تکرار میشود.
تست واک فوروارد به ما اجازه میدهد تا رفتار واقعی استراتژی را ماه به ماه مشاهده کنیم و دچار سوگیری شناختی نشویم. بهترین کار این است که استراتژی را در بازههای زمانی مشخص (مثلاً هر 3 تا 6 ماه) دوباره بهینهسازی کنیم و سپس برای دوره محدودتری (مثلاً 1 تا 2 ماه) به آن اجازه کار بدهیم. اگر حتی در این حالت نیز استراتژی سودآور نبود یا حاشیهای (Marginal) عمل کرد، باید آن را کنار گذاشت و درگیر بهینهسازی بیشتر نشد.
سروایورشیپ بایاس (Survivorship Bias)
این اشتباه یا چالش غیرمستقیم زمانی رخ میدهد که تنها نمادهایی (Symbols) که در گذشته عملکرد موفقی داشتهاند را برای بکتست انتخاب کنیم و احتمال نابودی یا حذف شدن آنها از بازار (مانند دلیست شدن) را نادیده بگیریم.
مثال واضح آن، بکتست گرفتن صرفاً روی بیتکوین از روز اول و بسنده کردن به آن است. در حالی که ما اکنون میدانیم بیتکوین به اینجا رسیده و عملکرد درخشانی داشته، اما هیچ کس نمیتواند تضمین کند که همین فردا صفر نشود.
چرا این یک مشکل است؟
بازارهای مالی پر از داراییهایی هستند که در طول زمان از بین رفتهاند یا عملکرد بسیار ضعیفی داشتهاند (مانند لونا که سقوط کرد یا بیتکوین اسوی که دلیست شد). اگر استراتژی خود را فقط بر روی “بازماندگان” تست کنیم، نتایج بکتست بیش از حد خوشبینانه خواهد بود و در دنیای واقعی، با قرار گرفتن در معرض داراییهای ضعیف، عملکرد استراتژی دچار مشکل میشود.
راهحل
برای بیاثر کردن سروایورشیپ بایاس، باید طیف وسیعی از نمادها را برای انجام بکتست انتخاب کرد. این شامل:
- کوینهای ممتاز (مانند بیتکوین و اتریوم)
- کوینهای ضعیف یا “نفله” که حذف شدهاند (مانند بیتکوین اسوی)
- کوینهایی که ناگهان سقوط کرده و به صفر رسیدهاند (مانند لونا)
- کوینهایی که به آرامی ارزش خود را از دست دادهاند.
تست کردن استراتژی روی این طیف وسیع از نمادها، به ما در ارزیابی “تست پایداری (Stability Test)” کمک میکند. استراتژیای که از این تست سربلند بیرون بیاید، پایداری بیشتری دارد و احتمال کمتری دارد که ما را متضرر کند.
همچنین، استراتژیهایی که با متد علمی تدوین شده و “رفتار مورد انتظار پایدار” دارند، حساسیت کمتری نسبت به این بایاس دارند. رفتار مورد انتظار پایدار به این معنی است که ما میدانیم استراتژی ما در شرایط مختلف بازار (صعود شارپ، کرش شدید، ساید زدن کمجان) چه عملکردی از خود نشان خواهد داد. این دانش به ما اجازه میدهد تا به سرعت تناقض بین رفتار بازار و عملکرد استراتژی را تشخیص دهیم و در صورت لزوم، استراتژی را متوقف و بازبینی کنیم.
نتیجهگیری
همانطور که دیدید، بکتستینگ فرآیندی پیچیده است و اشتباهات رایج در آن میتواند منجر به نتایج بسیار گمراهکننده شود. سفارشگذاری روی دیتای محاسباتی، لوکاِهد بایاس (درگیر کردن دیتای آینده)، سوگیری شناختی (نادیده گرفتن دورههای ناکارایی و آستانه تحمل) و اُپتیمایزیشن بایاس (فیت کردن استراتژی بر روی دیتای گذشته) و سروایورشیپ بایاس (انتخاب فقط نمادهای موفق)، از جمله مهمترین خطاهایی هستند که باید از آنها اجتناب کرد.
با درک عمیق این مفاهیم و بهکارگیری راهکارهای ارائهشده (مانند استفاده از دیتای استاندارد، منطق پایاندورهای، مدیریت ریسک، متنوعسازی، تست واک فوروارد و تست روی طیف وسیعی از نمادها)، میتوانید اعتبار بکتستهای خود را به شدت افزایش دهید و خود را برای موفقیت پایدارتر در دنیای واقعی ترید آماده کنید.
⭐️ محتوای این مطلب از دوره آموزشی مبانی و مفاهیم بکتستینگ استراتژیهای معاملاتی اقتباس شده است. ⭐️
〰️〰️〰️〰️〰️
🔵🔵🔵 همین حالا در دوره رایگان مبانی و مفاهیم بکتستینگ استراتژیهای معاملاتی ثبت نام کنید! 🔵🔵🔵
🔴🔴🔴 در کانال یوتیوب الگویو عضو شوید و بخشهای رایگان سایر دورهها را مشاهده کنید! 🔴🔴🔴
🟢🟢🟢 در بحث و تبادل نظر تخصصی درباره این دوره شرکت کنید! 🟢🟢🟢
〰️〰️〰️〰️〰️



