یک اصطلاح معروف در زمینشناسی وجود دارد که میگوید: «گذشته، کلید آینده است.» در بسیاری از علوم، تحلیل دادههای گذشته مهمترین ابزار برای درک رویدادهای پیشین و حتی پیشبینی اتفاقات آتی است؛ بازار فارکس نیز از این قاعده مستثنی نیست. دقیقاً به همین دلیل، بکتست (Backtest) به ابزاری حیاتی برای بررسی گذشته جهت ارزیابی پتانسیل آینده تبدیل شده است.
بکتست به معاملهگر اجازه میدهد عملکرد استراتژی خود را پیش از درگیر کردن سرمایه واقعی بسنجد؛ اما یک چالش بزرگ وجود دارد: هر نتیجهای که از بکتست به دست میآید الزاماً در آینده تکرار نمیشود. بسیاری از معاملهگران به دلیل اشتباهات رایج در فرآیند تست گرفتن، به نتایجی بیش از حد امیدوارکننده میرسند و تصور میکنند استراتژی فوقالعادهای یافتهاند، در حالی که آن سودآوری فقط یک «توهم آماری» است.
از انتخاب اشتباه دادههای تاریخی گرفته تا نادیده گرفتن اسپرد، اسلیپیج، مدیریت سرمایه و تغییر شرایط بازار، عوامل زیادی میتوانند باعث شوند یک بکتست نتیجهای غیرواقعی نشان دهد. در این مطلب بررسی میکنیم که چه خطاهایی باعث ایجاد نتایج جعلی میشوند و چگونه میتوانیم یک بکتست اصولی انجام دهیم تا به جای رویاپردازی، به یک ارزیابی قابل اعتماد از استراتژی خود برسیم.
اشتباهات رایج در بک تست در یک نگاه
| اشتباه رایج در بکتست | چرا نتیجه را غیرواقعی میکند؟ | راه جلوگیری |
| Look-ahead Bias | استفاده از اطلاعاتی که در زمان معامله هنوز در دسترس نبوده | چک کردن دقیق کد برای استفاده از کندل های قدیمی و کمک از هوش مصنوعی برای چک مجدد کدها و چک دستی چند پوزیشن رندوم. |
| Overfitting | سازگار شدن بیش از حد استراتژی با نویز دادههای گذشته | ساده نگه داشتن مدل و استفاده از forward test |
| بهینهسازی بعد از هر باخت | قوانین برای حذف معاملات بازنده گذشته تغییر میکنند | ثبت نسخه جدید و تست روی داده دستنخورده |
| تعداد معاملات کم | نوسان آماری زیاد و وابستگی به چند معامله خاص | افزایش حجم نمونه و بررسی دورههای مختلف بازار |
| انتخاب بهترین بازه تاریخی | استراتژی فقط در شرایط مطلوب آزمایش میشود | تست در روند، رنج، نوسان شدید و آرام |
| نادیده گرفتن هزینهها | اسپرد، کمیسیون، سواپ و Slippage سود را کاهش میدهند | وارد کردن هزینههای واقعی و سناریوی محافظهکارانه |
| فرض اجرای کامل در خبر و گپ | ورود و خروج ممکن است با قیمت بدتری اجرا شود | مدلسازی Slippage و تعریف قوانین مشخص برای زمان خبر |
| تغییر دستی معاملات | معاملهگر بعد از دیدن نتیجه، معاملات نامطلوب را حذف میکند | استفاده از چکلیست ثابت قبل از مشاهده ادامه نمودار |
| انتخاب بهترین نماد بعد از تستهای زیاد | احتمال انتخاب یک برنده تصادفی افزایش مییابد | ثبت تعداد آزمایشها و تأیید روی داده خارج از نمونه |
| نادیده گرفتن تغییر رژیم بازار | عملکرد استراتژی ممکن است با تغییر شرایط بازار افت کند | بررسی عملکرد در دورهها و رژیمهای مختلف |
| تمرکز فقط روی Net Profit | میزان ریسک و Drawdown پنهان میشود | بررسی همزمان Profit Factor، Win Rate و Max Drawdown |
| تبدیل بکتست به وعده درآمد | نتیجه تاریخی بهاشتباه بهعنوان درآمد قطعی آینده تفسیر میشود | در نظر گرفتن عدمقطعیت، Drawdown و دامنه نتایج احتمالی |
| عدم در نظر گرفت ریسک | بک تست با 10000 دلار تست می شود و تست واقعی را روی 100 دلار انجام می دهد | مدیریت ریسک و سرمایه در بک تست و تست واقعی همسان باشند |
چرا یک بک تست خوب ممکن است قابل اعتماد نباشد؟
گاهی گزارشی میبینیم که تقریباً همه چیز در آن عالی است: سود بالا، Drawdown پایین، درصد برد چشمگیر و منحنی سرمایهای که تقریباً بدون وقفه صعود میکند. وسوسهانگیز است که چنین نتیجهای را نشانه کشف یک استراتژی استثنایی بدانیم. اما در عمل هرچه بک تست «بینقصتر» به نظر برسد، باید دقیقتر بررسی کنیم که این زیبایی و بینقصی از کجا آمده است.
بک تست شبیهسازی تاریخی است. شبیهسازی به فرضهایی درباره داده، هزینه، اجرای سفارش و قوانین استراتژی وابسته است. اگر یکی از این فرضها غیرواقعی باشد یا قوانین بعد از مشاهده نتایج بارها تغییر کرده باشند، خروجی میتواند تصویری بسازد که در بازار زنده تکرار نمیشود.
CFA Institute در مبحث Backtesting & Simulation تأکید میکند که فهم فرضها، محدودیتها و خطاهای فرایند به اندازه اجرای خود بک تست اهمیت دارد. پژوهش معروف The Probability of Backtest Overfitting نیز نشان میدهد وقتی تعداد زیادی مدل یا پارامتر روی داده گذشته امتحان میشوند، احتمال انتخاب مدلی که صرفاً به شکل تصادفی در همان نمونه برتر دیده شده افزایش مییابد.
پس سؤال حرفهای این نیست که «چطور بک تست را سودده کنم؟» بلکه این است که «چطور تلاش کنم نتیجه را رد کنم و اگر هنوز رد نشد، اعتماد بیشتری به آن داشته باشم؟»
اشتباه اول: نگاه به آینده یا Look-ahead Bias
Look-ahead Bias زمانی رخ میدهد که تصمیم تاریخی به اطلاعاتی دسترسی داشته باشد که در لحظه واقعی معامله هنوز وجود نداشته است. در بک تست دستی، سادهترین شکل آن این است که ادامه نمودار را ببینید و ناخودآگاه فقط موقعیتهایی را انتخاب کنید که بعداً خوب حرکت کردهاند.
در بک تست کدنویسیشده، خطا میتواند ظریفتر باشد. مثلا استفاده از کد دستوری close در کندل شماره 0 به معنی این است که برنامه می داند نمودار چگونه حرکت کرده و صعودی است یا نزولی. این نوع خطا میتواند نتیجه را بهشدت خوشبینانه کند و یکی از خطرناکترین اشتباهات فنی در بکتست است.
برای جلوگیری از این خطا می توانید در مرحله اول چند خرید و فروش را بصورت دستی چک کنید ( اگر ممکن است) و در مرحله دوم کد را به هوش مصنوعی داده و تایید کنید چک کند کد شما از اطلاعات آینده استفاده نمی کند.
اشتباه دوم: Overfitting یا بیشبرازش
یکی از مهمترین مشکلات بکتست، Overfitting یا بیشبرازش است. به زبان ساده، زمانی اتفاق میافتد که یک استراتژی آنقدر با دادههای گذشته تنظیم و بهینه شود که به جای پیدا کردن یک الگوی نسبتاً پایدار در بازار، به جزئیات و اتفاقات خاص همان دادهها وابسته شود. در این حالت ممکن است نتیجه بکتست بسیار جذاب باشد، اما وقتی همان استراتژی روی دادههای جدید یا بازار واقعی اجرا شود، عملکرد آن بهشدت ضعیف شود.
برای مثال، فرض کنید یک استراتژی اولیه دارید که نتیجه متوسطی دارد. سپس شروع میکنید به تغییر دادن پارامترهای مختلف؛ مثلاً دوره میانگین متحرک، مقدار RSI، حد سود، حد ضرر، ساعت ورود، فیلترهای مختلف و حتی نماد و تایمفریم را تغییر میدهید. اگر تعداد زیادی ترکیب مختلف را امتحان کنید، ممکن است در نهایت ترکیبی پیدا کنید که روی دادههای دو سال گذشته سود بسیار زیادی ساخته است. اما این سود الزاماً به معنی پیدا کردن یک استراتژی قدرتمند نیست؛ ممکن است فقط بهترین ترکیب از بین تعداد بسیار زیادی آزمایش باشد که بهصورت اتفاقی با همان گذشته هماهنگ شده است.
مثلاً تصور کنید یک میلیون ترکیب مختلف از پارامترها را آزمایش کردهاید و در نهایت سه ترکیب عملکرد فوقالعادهای روی دادههای گذشته نشان میدهند. اینکه این سه ترکیب بهترین نتیجه را گرفتهاند، بهتنهایی ثابت نمیکند که منطق معاملاتی آنها واقعاً درست است. ممکن است سیستم در واقع به همان دادههای تاریخی «چسبیده» باشد و در شرایط جدید دیگر نتواند همان عملکرد را تکرار کند.
به همین دلیل، هرچه تعداد پارامترها، تغییرات و آزمایشهای انجامشده بیشتر شود، باید نسبت به نتیجه نهایی محتاطتر باشیم. یک استراتژی سالم نباید فقط روی همان دادههایی که با آنها ساخته و بهینه شده است عملکرد خوبی داشته باشد؛ بلکه باید روی دادههای جدید و دستنخورده نیز بتواند عملکردی قابل قبول و منطقی نشان دهد. به همین دلیل استفاده از Out-of-Sample و Forward Test یکی از روشهای مهم برای بررسی این است که آیا نتیجه بکتست واقعاً قابل اتکاست یا فقط حاصل بیشبرازش دادههای گذشته است.
In-Sample و Out-of-Sample یعنی چه؟
به زبان ساده، دادههای In-Sample همان بخشی از دادههای تاریخی هستند که برای ساخت، آزمایش و تنظیم استراتژی از آنها استفاده میکنیم. در مقابل، دادههای Out-of-Sample دادههایی هستند که در زمان طراحی و بهینهسازی استراتژی کنار گذاشته میشوند و بعداً برای بررسی عملکرد نسخه نهایی به کار میروند. دلیل این جداسازی این است که اگر استراتژی روی تمام دادهها بارها تنظیم شود، ممکن است به گذشته بیش از حد وابسته شود؛ اما اگر روی دادهای که قبلاً ندیده آزمایش شود، بهتر میتوانیم بفهمیم آیا عملکرد آن واقعاً قابل تکرار است یا فقط نتیجه Overfitting بوده است.
اشتباه سوم: بهینهسازی بعد از دیدن هر باخت
این خطا در تست دستی بسیار رایج است. معاملهای با ضرر میبینید و میگویید «اگر اینجا یک فیلتر حجم داشتیم وارد نمیشدیم.» چند معامله بعد دوباره باخت میبینید و فیلتر دیگری اضافه میکنید. در پایان، مجموعهای از قوانین ساختهاید که برای حذف باختهای همان گذشته طراحی شده است.
هر تغییر ممکن است منطقی به نظر برسد، اما مشکل در ترتیب فرایند است. اگر قانون بعد از مشاهده نتیجه ساخته شده، همان داده دیگر برای ارزیابی مستقل آن قانون مناسب نیست. باید تغییر را ثبت کنید، نسخه استراتژی را جدید کنید و روی بخشی از داده که در طراحی استفاده نشده آزمایش کنید.
این عادت به ترمیم پسنگر یا Post-hoc optimization یکی از دلایلی است که معاملهگر در بک تست سیستم عالی دارد اما در فوروارد تست با اولین شرایط جدید غافلگیر میشود.
اشتباه چهارم: تعداد معاملات بسیار کم
یک سیستم ممکن است روی 20 معامله Win Rate برابر 70 درصد و Profit Factor بالا داشته باشد، اما چند نتیجه بعدی تصویر را کاملاً تغییر دهند. نمونه کوچک نوسان آماری بالایی دارد و به معاملههای استثنایی حساس است.
عدد ثابت و جادویی برای تعداد معاملات وجود ندارد. استراتژی هفتگی طبیعتاً نسبت به اسکالپ فرصت کمتری ایجاد میکند. با این حال، باید نمونه آنقدر بزرگ و متنوع باشد که چند دوره برد و باخت و چند وضعیت متفاوت بازار را پوشش دهد. برای سیستمهای پرتکرار، معمولاً انتظار داریم صدها معامله بررسی شوند؛ برای سیستمهای کمتکرار باید بازه تاریخی طولانیتر شود.
از خودتان بپرسید: اگر پنج معامله بهترین را حذف کنیم، آیا سیستم هنوز مثبت است؟ اگر سه باخت دیگر به انتهای نمونه اضافه شود، معیارها چقدر تغییر میکنند؟ این تستهای ساده حساسیت نمونه را روشن میکنند.
بازه زمانی کوتاه؛ چرا ۶ ماه همیشه کافی نیست؟
یکی از اشتباهات رایج این است که استراتژی را فقط روی یک بازه کوتاه، مثلاً ۶ ماه، بکتست کنیم و نتیجه را به کل بازار تعمیم دهیم. ممکن است در این مدت شرایط بازار دقیقاً با استراتژی ما سازگار بوده باشد و نتیجهای بسیار خوب به دست بیاید، اما در یک دوره متفاوت، مثل زمان روندهای شدید، بازار رنج یا نوسان بالا، عملکرد کاملاً تغییر کند. بنابراین مسئله فقط تعداد معاملات نیست؛ مدت و تنوع شرایط بازار هم اهمیت دارد. هرچه استراتژی کمتکرارتر باشد، معمولاً به بازه تاریخی طولانیتری نیاز دارد تا بتوانیم عملکرد آن را در شرایط مختلف بررسی کنیم. به همین دلیل، یک بکتست ۶ ماهه نباید بهتنهایی مبنای اعتماد به یک استراتژی قرار بگیرد.
اشتباه پنجم: انتخاب فقط بهترین بازه تاریخی
گاهی معاملهگر ابتدا نمودار را بررسی میکند، دورهای را میبیند که روندهای تمیز دارد و سپس همان بازه را برای تست استراتژی روندی انتخاب میکند. نتیجه طبیعی است: سیستم در محیطی که برای آن مناسب بوده خوب عمل میکند.
مشکل وقتی ایجاد میشود که این نتیجه به عنوان عملکرد عمومی استراتژی معرفی شود. بک تست باید تا حد امکان شامل رژیمهای مختلف باشد؛ دوره روندی، رنج، نوسان شدید و آرام. اگر سیستم فقط برای یک رژیم طراحی شده، این موضوع باید شفاف گفته شود و فیلتر تشخیص رژیم نیز جداگانه اعتبارسنجی شود.
مقاله بهترین زمان معامله در فارکس میتواند برای شناخت تفاوت سشنها مفید باشد، اما انتخاب بهترین ساعت بعد از دیدن تمام نتایج، بدون تست مستقل، خود میتواند نوعی دادهکاوی باشد.
اشتباه ششم: نادیده گرفتن اسپرد، کمیسیون و اسلیپیج
یکی از سریعترین راهها برای ساخت بک تست غیرواقعی، قرار دادن هزینه معامله روی صفر است. استراتژیای که میانگین سود هر معامله آن کوچک است، ممکن است فقط روی کاغذ سودده باشد. اسپرد، کمیسیون، سواپ و Slippage هر کدام بخشی از بازده را کم میکنند.
هزینه ثابت نیز همیشه کافی نیست. اسپرد در زمان خبر، شروع روز معاملاتی یا دورههای کمنقدشونده ممکن است بزرگتر شود. استاپلاس در بازار سریع همیشه دقیقاً روی قیمت دلخواه پر نمیشود. بنابراین یک سناریوی محافظهکارانه برای هزینهها بسازید و ببینید مزیت استراتژی چقدر حاشیه دارد.
همچنین اگر معامله در زمان آرامش بازار مثل نیمه های شب بسته شود، اسپرد می تواند از 1 پیپ به 10 پیپ یا بیشتر افزایش پیدا کند به این معنی که معامله شما سریعتر در ضرر بسته می شود و یا کندل حد سود شما را لمس می کند ولی معامله در سود بسته نمی شود.
برای شناخت تفاوت حسابها میتوانید بهترین بروکرهای کماسپرد و کمهزینه را بررسی کنید، اما اعداد واقعی را از مشخصات نماد و گزارش اجرای همان بروکر وارد بک تست کنید.
اشتباه هفتم: فرض اجرای کامل در خبر و گپ
وقتی یک خبر مهم منتشر میشود، قیمت ممکن است در چند ثانیه با سرعت زیادی بالا یا پایین برود و حتی از بعضی قیمتها عبور کند. در چنین شرایطی ممکن است سفارش شما دقیقاً در همان قیمتی که در بکتست دیده میشود اجرا نشود؛ شاید سرعت حرکت بازار به حدی باشد که شما نتوانید در نقطه مورد نظر وارد خرید یا فروش شوید.
اگر بکتست همیشه فرض کند که سفارش دقیقاً روی قیمت موردنظر اجرا میشود، نتیجه میتواند بهتر از چیزی باشد که در معاملات واقعی اتفاق میافتد. برای همین باید تأثیر Slippage و شرایط اجرای سفارش در زمان خبر و گپ را در نظر گرفت.
نظر 30pip: اگر تعداد داده زیاد باشد، نتیجه Slippage قابل چشم پوشی است چرا که Slippage میتواند موجب سود و یا ضرر شود که در دیتای آماری بالا و عدم معاملات اسکالپ، سود ها و ضررها همپوشانی می کنند.
اشتباه هشتم: تغییر دستی معاملههایی که «من انجام نمیدادم»
در بکتست دستی ممکن است بعد از دیدن یک معامله ضررده با خودمان بگوییم: «اگر آن موقع بودم، این معامله را انجام نمیدادم.» اما اگر قبل از دیدن نتیجه، چنین قانونی در استراتژی وجود نداشته باشد، حذف کردن آن معامله باعث میشود نتیجه بکتست غیرواقعی شود.
برای جلوگیری از این اشتباه، قبل از شروع بکتست یک چکلیست مشخص داشته باشید و فقط بر اساس همان قوانین تصمیم بگیرید. اگر تمام شرایط ورود وجود داشت، معامله را ثبت کنید؛ حتی اگر بعداً مشخص شود که معامله ضررده بوده است. این کار باعث میشود نتیجه بکتست به جای تصمیمهای لحظهای، عملکرد واقعی قوانین استراتژی را نشان دهد.
نظر 30pip: اگر مطابق قانونی برای خودتان یا فرد دیگر خرید و فروش می کنید کامل مطابق آن پیش بروید. اگر معتقد هستید قانون اشتباه است، اصول خود را به آن اضافه کرده و مجدد بک تست بگیرید و استراتژی جدیدی بسازید که به آن پایبند باشید. بعد از ساخت استراتژی، نظر شخصی را در آن دخالت ندهید.
اشتباه نهم: انتخاب بهترین نماد بعد از صدها تست
فرض کنید یک استراتژی را روی تعداد زیادی جفتارز، نماد و تایمفریم امتحان میکنید و در نهایت فقط آنهایی را انتخاب میکنید که بهترین سود را دادهاند. ممکن است تصور کنید این نمادها بهترین گزینه برای استراتژی هستند، اما این نتیجه میتواند فقط حاصل شانس باشد.
هرچه تعداد آزمایشها بیشتر شود، احتمال اینکه بهصورت اتفاقی چند نتیجه بسیار خوب پیدا کنیم هم بیشتر میشود. برای همین بهتر است تعداد تستها و تغییرات انجامشده را ثبت کنیم و نتیجه نماد انتخابشده را روی دادههای جدید و خارج از نمونه هم بررسی کنیم. اگر استراتژی فقط روی همان دادهای که با آن انتخاب شده عملکرد عالی داشته باشد، باید نسبت به نتیجه آن محتاط باشیم.
اشتباه دهم: قاطی کردن توسعه و ارزیابی
داده In-Sample برای ساخت و تنظیم استراتژی است. داده Out-of-Sample برای ارزیابی نسخهای است که دیگر نباید با دیدن آن دستکاری شود. اگر پس از هر نتیجه ضعیف Out-of-Sample دوباره قوانین را تغییر دهید و همان بخش را دوباره تست کنید، آن داده دیگر واقعاً خارج از نمونه نیست.
روش دیگری هم به نام Walk-Forward Test وجود دارد که همین ایده را چندین بار در بازههای زمانی مختلف تکرار میکند؛ یعنی یک بخش از داده برای تنظیم استراتژی استفاده میشود و سپس بخش بعدی که استراتژی آن را ندیده، برای آزمایش آن به کار میرود. با جلو رفتن زمان، این فرایند دوباره تکرار میشود. هدف این است که مطمئن شویم استراتژی فقط برای یک قسمت خاص از گذشته ساخته نشده و در مواجهه با دادههای جدید هم رفتار قابل قبولی دارد. مسلما این سبک نتیجه قابل اطمینان تری خواهد داشت.
تفاوت Forward Test و Walk-Forward Test چیست؟
Forward Test یعنی استراتژیای که قبلاً ساختهایم را روی دادههای جدیدی که هنگام طراحی استراتژی در اختیارمان نبوده اجرا کنیم. مثلاً دو سال داده داریم؛ استراتژی را با دادههای گذشته میسازیم و سپس آن را برای چند ماه روی دادههای جدید، بدون تغییر قوانین اجرا میکنیم. هدف این است که ببینیم استراتژی روی شرایط جدید هم عملکرد قابل قبولی دارد یا فقط روی گذشته خوب بوده است.
اما Walk-Forward Test یک مرحله ثابت نیست؛ بلکه این فرایند را چندین بار در طول تاریخ تکرار میکند. مثلاً ابتدا ۱۲ ماه داده را برای تنظیم استراتژی استفاده میکنیم و ماه بعد را روی دادهای که استراتژی ندیده آزمایش میکنیم. سپس زمان را جلو میبریم، دوباره یک بازه جدید برای تنظیم در نظر میگیریم و بازه بعدی را برای تست استفاده میکنیم. این کار چندین بار تکرار میشود.
پس به زبان خیلی ساده: Forward Test یعنی یک نسخه از استراتژی را روی آیندهای که قبلاً ندیده امتحان کنیم؛ Walk-Forward یعنی همین ایده را بارها و در پنجرههای زمانی مختلف تکرار کنیم. به همین دلیل Walk-Forward میتواند تصویر بهتری از این بدهد که استراتژی در شرایط مختلف بازار چقدر پایدار است.
اشتباه یازدهم: نادیده گرفتن تغییر رژیم بازار
بازار ثابت نیست. نوسان، سیاست پولی، ساختار نقدشوندگی و رفتار شرکتکنندگان تغییر میکند. ممکن است استراتژی در محیط نرخ بهره یا نوسان خاصی عالی باشد و در محیط دیگر ضعیف شود.
رژیم بازار یعنی وضعیت، شرایط یا محیط حاکم بر بازار
مثلاً بازار ممکن است وارد یک رژیم با:
- نوسان بالا یا پایین
- نرخ بهره بالا یا پایین
- رونددار یا رنج
- نقدشوندگی زیاد یا کم
شود.
نمونه واضح آن شرایط جنگ ایران و آمریکا و تاثیر آن بر روی بازار های مالی مختلف از جمله نفت و طلا می باشد.
بک تست طولانی باید فقط میانگین چند سال را نشان ندهد؛ عملکرد سالبهسال یا فصلبهفصل را نیز بررسی کنید. اگر مزیت به تدریج کاهش یافته است، باید علت احتمالی را بررسی کنید. این همان جایی است که فوروارد تست و پایش زنده اهمیت پیدا میکند.
اشتباه دوازدهم: تمرکز روی Net Profit و پنهان کردن ریسک
یک سیستم میتواند سود نهایی زیادی داشته باشد اما برای رسیدن به آن افت سرمایه غیرقابل تحمل ایجاد کرده باشد. اگر فقط عدد سود را منتشر کنیم، گزارش ناقص است. حداقل Win Rate، Profit Factor، Max Drawdown، تعداد معاملات و میانگین برد/باخت باید در کنار هم دیده شوند.
برای تحلیل دقیقتر، مقاله چگونه نتایج بک تست را تحلیل کنیم؟ را بخوانید. همین نگاه چندمعیاره کمک میکند یک نتیجه جذاب اما پرریسک را با سیستم متعادلتر اشتباه نگیرید.
اشتباه سیزدهم: فرض استقلال کامل معاملات
نتایج معاملات همیشه مستقل نیستند. یک استراتژی روندی ممکن است در بازار رنج چند باخت پشت سر هم داشته باشد و با شروع روند چند برد متوالی بسازد. اگر فقط میانگینها را ببینید، خوشههای ریسک را نمیبینید.
طول Losing Streak، توزیع نتایج و Drawdown Duration را بررسی کنید. برای مدیریت سرمایه، باید سناریویی بدتر از بدترین توالی تاریخی هم در نظر بگیرید؛ چون آینده میتواند توالیای ایجاد کند که در نمونه قبلی دیده نشده است.
بهعنوان یک قیاس ملموس، در محاسبات طراحی و مدیریت ریسک پروژه سد کارون ۳ نیز از حداکثر آمارهای بارندگی ۵۰ سال گذشته استفاده شده بود؛ اما در زمان ساخت (آذر ۱۳۸۳)، بارندگی و سیلابی رخ داد که فراتر از تمام مدلهای آماری ۵۰ ساله بود. این رویداد بیسابقه باعث شکست فرازبند، آبگرفتگی تونلها و تخریب گسترده تجهیزات شد.
در بازار فارکس نیز وضعیت دقیقاً به همین شکل است: بدترین افت حساب (Max Drawdown) شما همیشه متعلق به آینده است، نه گذشته. تکیهٔ محض به دادههای تاریخی بدون در نظر گرفتن «ریسکهای دمبریدگی» (Tail Risk)، درست مثل ساختن سدی است که برای سیلابهای بیسابقه فردا هیچ پیشبینی منطقی نکرده است.
اشتباه چهاردهم: تبدیل بک تست به وعده درآمد
بک تست به شما یک توزیع تاریخی میدهد، نه حقوق ماهانه. حتی استراتژی با انتظار سود (Expected Value) مثبت میتواند چند ماه منفی یا خنثی داشته باشد. اگر کسی از یک بک تست محدود نتیجه بگیرد که «این سیستم ماهانه 10 درصد قطعی میدهد»، هم عدم قطعیت و هم Drawdown را نادیده گرفته است.
مقاله آیا واقعاً میتوان از فارکس پول درآورد؟ را میتوان برای تکمیل نگاه واقعبینانه به بازده و ریسک مطالعه کرد.
تفاوت نتیجه واقعی و بک تست از کجا میآید؟
حتی بک تست سالم نیز با اجرای واقعی تفاوت خواهد داشت. در بازار زنده قیمت آینده نامعلوم است، سفارش ممکن است لغزش داشته باشد، اسپرد تغییر میکند و معاملهگر ممکن است در اجرای قوانین خطا کند. همچنین داده بروکر و روش ساخت کندل میتواند با منبع بک تست تفاوت داشته باشد و یا دنیا درگیر سیل و زلزله و جنگ شود. چه کسی واقعا می داند آینده چه خواهد شد.
پس هدف این نیست که فوروارد تست دقیقاً همان منحنی گذشته را تکرار کند. باید محدوده قابل قبول تعریف کنید. مثلاً اگر بک تست Profit Factor حدود 1.5 داشته، فوروارد کوتاه با 1.3 الزاماً شکست نیست؛ نمونه کوچکتر است. اما اگر ساختار معاملات، هزینه یا Drawdown کاملاً خارج از انتظار باشد، باید بررسی شود.
چگونه اعتبارسنجی نتایج را مرحلهبهمرحله انجام دهیم؟

مرحله 1: قفل کردن نسخه استراتژی
قواعد، پارامترها و روش حجم را با شماره نسخه ثبت کنید. بعد از شروع اعتبارسنجی، بدون ثبت نسخه جدید چیزی تغییر ندهید.
مرحله 2: Out-of-Sample
بخش دستنخورده داده را اجرا کنید. به جای انتظار تکرار دقیق، ببینید آیا Expected Value، Drawdown و منطق کلی هنوز قابل دفاعاند.
مرحله 3: تحلیل حساسیت
پارامترهای نزدیک را امتحان کنید. سیستم پایدار معمولاً یک «منطقه» قابل قبول دارد نه یک عدد جادویی. به این معنی که اگر فرضا Moving Average از 24 به 26 تغییر کند نباید سود و ضرر تغییر خیلی محسوس کند. اگر تغییرات شدید بود به استراتژی شک کنید.
مرحله 4: افزایش هزینه
اسپرد و Slippage را بدبینانهتر کنید. اگر با تغییر کوچک هزینه کل مزیت از بین میرود، حاشیه امنیت کم است.
مرحله 5: فوروارد تست
استراتژی نهایی را روی دادههای جدید و خارج از نمونه که در زمان طراحی و بهینهسازی در اختیار نداشتهاید اجرا کنید. در این مرحله قوانین استراتژی نباید بر اساس نتایج جدید تغییر کنند؛ هدف این است که ببینید عملکرد استراتژی روی دادههای ندیدهشده تا چه اندازه با نتایج بکتست همخوانی دارد.
مرحله 6: اجرای کوچک و ثبتشده
اگر مراحل قبلی منطقی بودند، ورود به حساب واقعی باید با ریسک محدود و ژورنال دقیق باشد، نه با حداکثر حجم. بازار واقعی بخشی از مدل را که شبیهسازی نشده آشکار میکند.
یک تست تکمیلی: بازچینی معاملات و سناریوهای مونتکارلو
حتی اگر ترتیب تاریخی معاملات در بکتست واقعی باشد، آینده مجبور نیست همان ترتیب برد و باخت را تکرار کند. ممکن است همان تعداد معاملات برنده و بازنده، در آینده با ترتیب متفاوتی رخ دهد و در نتیجه مسیر رشد سرمایه (Equity Curve)، میزان افت سرمایه (Drawdown) و طول دورههای زیان تغییر کند.
یک روش تکمیلی برای بررسی این موضوع، بازچینی تصادفی معاملات یا استفاده از شبیهسازی مونتکارلو (Monte Carlo) است. در این روش، نتایج معاملات گذشته بارها با ترتیبهای متفاوت بازآرایی یا شبیهسازی میشوند تا هزاران مسیر احتمالی برای سرمایه ایجاد شود. هدف این کار پیشبینی دقیق آینده نیست؛ بلکه بررسی این است که اگر همان توزیع برد و باخت با ترتیب نامساعدتری رخ دهد، عملکرد و ریسک استراتژی چه تغییری خواهد کرد.
برای مثال، فرض کنید بکتست اصلی نشان داده است که بیشترین تعداد باخت متوالی استراتژی ۸ معامله بوده است. در بازچینی تصادفی، ممکن است در بعضی از مسیرهای شبیهسازیشده، چندین باخت بهطور فشردهتری پشت سر هم قرار بگیرند و مثلاً به ۱۲ یا ۱۵ باخت متوالی برسند. در چنین شرایطی، Drawdown میتواند بسیار بیشتر از چیزی باشد که در مسیر تاریخی مشاهده شده است. بنابراین اگر اندازه پوزیشن و مدیریت سرمایه فقط بر اساس بدترین توالی ثبتشده در گذشته تعیین شده باشد، ممکن است در آینده حاشیه امنیت کافی وجود نداشته باشد.
به همین دلیل، مونتکارلو میتواند در تعیین حد تحمل ریسک و اندازه پوزیشن مفید باشد. با این حال، نباید آن را ابزاری برای زیباتر نشان دادن نتیجه بکتست در نظر گرفت. فرضهای شبیهسازی باید کاملاً مشخص باشند؛ برای مثال، آیا معاملات مستقل از یکدیگر فرض شدهاند؟ آیا اندازه پوزیشن ثابت است؟ آیا نسبت برد و باخت و اندازه سود و زیان مشابه گذشته در نظر گرفته شده است؟
این نکته اهمیت زیادی دارد، چون بازچینی ساده معاملات همیشه تمام ویژگیهای بازار واقعی را حفظ نمیکند. اگر عملکرد استراتژی به رژیمهای مختلف بازار وابسته باشد یا زیانها در دورههای خاصی بهصورت خوشهای رخ دهند، تصادفیکردن کامل ترتیب معاملات ممکن است این وابستگی و خوشهبندی را از بین ببرد. بنابراین مونتکارلو باید بهعنوان تکمیلکننده تحلیل تاریخی استفاده شود، نه جایگزین آن.
یکی از کاربردهای مفید این روش، بررسی احتمال عبور از یک سطح مشخص از Drawdown است. بهجای اینکه فقط بگویید «حداکثر افت سرمایه در بکتست ۱۲ درصد بوده است»، میتوانید بررسی کنید در هزاران مسیر شبیهسازیشده، چند درصد از مسیرها به افتی بالاتر از ۱۵ یا ۲۰ درصد رسیدهاند. این دیدگاه نشان میدهد که نتیجه بکتست تنها یک مسیر تاریخی بوده و در صورت تغییر ترتیب یا شرایط، مسیرهای دیگری نیز ممکن است رخ دهند.
در نهایت، ارزش مونتکارلو در این نیست که آینده را پیشبینی کند؛ بلکه کمک میکند دامنهای از نتایج و ریسکهای قابلتصور را ببینید و مدیریت سرمایه را طوری طراحی کنید که فقط برای یک مسیر ایدهآل از گذشته مناسب نباشد.
چکلیست تشخیص بک تست مشکوک
اگر گزارشی این نشانهها را دارد، قبل از اعتماد بیشتر بررسی کنید:
- سود بسیار بالا با Drawdown غیرعادی پایین؛
- تعداد معاملات کم ولی ادعای قطعیت زیاد؛
- هزینه معامله صفر یا نامشخص؛
- نبود داده Out-of-Sample؛
- تعداد زیاد پارامترهای بهینهشده؛
- عملکرد عالی فقط روی یک نماد یا یک سال؛
- نبود لیست کامل معاملات؛
- Win Rate بالا بدون نمایش Average Win/Loss؛
- تفاوت شدید بین تست تاریخی و دمو؛
- تغییر مکرر قوانین بدون نسخهبندی؛
- نمایش فقط بهترین اجرای بهینهسازی.
انتخاب بروکر و اثر آن بر اختلاف بک تست و اجرا
استراتژیای که به هزینه و سرعت اجرا حساس است باید در محیط نزدیک به بروکر هدف آزمایش شود. نوع حساب، اسپرد شناور، کمیسیون، حداقل حجم و مشخصات قرارداد اهمیت دارند. برای بررسی گزینهها میتوانید صفحه بررسی بروکرها را مطالعه کنید.
اگر پس از مقایسه مستقل قصد ثبتنام داشتید، لینکهای همکاری در فروش 30pip برای LiteFinance، Alpari، AMarkets و FIBO Group در دسترساند. انتخاب بروکر باید با توجه به مقررات، شرایط محل اقامت و نیاز شخصی انجام شود.
جمعبندی تشخیص بک تست اشتباه
یک بک تست میتواند کاملاً درست محاسبه شده باشد و در عین حال نتیجهای غیرقابل اتکا تولید کند. مشکل معمولاً در داده، فرضهای اجرا، انتخاب نمونه یا فرایند بهینهسازی است. Look-ahead Bias، Overfitting، هزینه صفر، نمونه کم و تغییر قوانین بعد از دیدن باختها از مهمترین عوامل ساخت «نتیجه جعلی» یا بیش از حد خوشبینانهاند.
راه حل، بدبینی سازنده است: نسخه استراتژی را قفل کنید، داده خارج از نمونه داشته باشید، پارامترهای نزدیک را تست کنید، هزینه را بدبینانهتر کنید، نتایج را در چند زیردوره ببینید و سپس فوروارد تست انجام دهید. بک تست خوب بک تستی نیست که نتوان در آن باخت پیدا کرد؛ بک تست خوب آزمایشی است که ضعفها را آشکار میکند و هنوز پس از این فشار، منطق آماری قابل دفاعی باقی میگذارد.
سوالات متداول درباره خطاهای بک تست
آیا فوروارد تست همه مشکلات را حل میکند؟
خیر. فوروارد تست هم ممکن است نمونه کوتاهی داشته باشد یا در یک رژیم مساعد رخ دهد. اما چون داده بعد از طراحی تولید میشود، ارزش آن برای کاهش سوگیری بسیار بالاست. بهتر است فوروارد را ادامه فرایند اعتبارسنجی بدانید نه یک مهر تضمین.
Overfitting دقیقاً یعنی چه؟
یعنی مدل بیش از حد با جزئیات داده گذشته سازگار شده و به جای یک رابطه پایدار، نویز همان نمونه را یاد گرفته است. معمولاً در داده جدید افت عملکرد نشان میدهد.
چند معامله برای بک تست مناسب است؟
عدد ثابت وجود ندارد. هرچه سیستم پرتکرارتر و پارامترها بیشتر باشند، نمونه بزرگتر اهمیت بیشتری دارد. تنوع شرایط بازار نیز به اندازه تعداد خام مهم است.
آیا نتیجه ضعیف Out-of-Sample یعنی استراتژی بد است؟
نه همیشه. نمونه ممکن است کوتاه یا رژیم بازار متفاوت باشد. اما افت شدید نسبت به In-Sample یک هشدار است و نباید با دستکاری فوری قوانین پنهان شود.
چگونه Look-ahead Bias را در تست دستی کم کنیم؟
چندین معامله را بصورت رندم و دستی چک کنید. کدهای برنامه نویسی را به هوش مصنوعی دهید و بخواهید چک کند که Look-ahead Bias اتفاق نیوفتاده باشد
آیا بهینهسازی پارامترها اشتباه است؟
خیر. مشکل زمانی است که هزاران ترکیب را امتحان کنیم و بهترین را بدون آزمون مستقل انتخاب کنیم. بهینهسازی باید با Out-of-Sample، حساسیت و منطق استراتژی همراه باشد.
چرا بک تست و حساب واقعی دقیقاً یکسان نمیشوند؟
به دلیل تغییر هزینه، Slippage، کیفیت داده، تأخیر اجرا، رفتار انسانی و تغییر رژیم بازار. هدف، سازگاری معقول رفتار است نه تطابق کامل. در مجموع به یاد داشته باشید که تحلیل تکنیکال یه تحلیل آماری است و در اطلاعات آماری همیشه خطا وجود دارد. می توان گفت عدم وجود خطا نگران کننده تر و عجیب تر است.
