بک تست (Backtesting) یعنی اجرای قوانین یک استراتژی معاملاتی روی دادههای قیمتی گذشته، تا ببینید اگر همان قوانین را قبلاً به کار برده بودید چه نتیجهای میگرفتید. این کار کمک میکند ضعفهای یک استراتژی را پیش از گذاشتن پول واقعی پیدا کنید. البته نتیجه خوب در گذشته، سود آینده را تضمین نمیکند.
در این مقاله قدمبهقدم یاد میگیرید که روش دستی و خودکار چه فرقی دارند، یک آزمون درست را چطور انجام دهید و نتیجه را با کدام معیارها بسنجید. همچنین میبینید که از خطای رایج بیشبرازش چطور دوری کنید و بعد از این مرحله چه قدمی منطقی است. لازم نیست عجله کنید؛ بیایید ساده و شفاف شروع کنیم.
بک تست چیست؟
به زبان ساده، این روش شبیه حل کردن نمونهسؤالهای سالهای قبل پیش از کنکور است. شما چند قانون مشخص دارید، مثلاً «وقتی قیمت بالای میانگین متحرک ۵۰ روزه بسته شد، وارد معامله شو و اگر ۵ درصد افت کرد، خارج شو». بعد بررسی میکنید که این قوانین در گذشته چه عملکردی داشتهاند.
ماده اولیه این کار داده تاریخی (Historical Data) است: قیمت باز شدن، بالاترین، پایینترین و بسته شدن هر کندل، همراه با حجم معاملات. هرچه این دادهها کاملتر و دقیقتر باشند، نتیجه آزمون هم قابلاتکاتر است.
چرا این کار برای یک تازهوارد مهم است؟ چون بهجای اعتماد به ادعای دیگران یا سیگنالهایی که منطقشان را نمیدانید، خودتان یک ایده را میسنجید. اگر کسی بگوید روشی «همیشه جواب میدهد»، بکتست استراتژی ابزاری است که با آن میتوانید این ادعا را با عدد و شواهد بررسی کنید.
در عین حال یادتان باشد که بک تست پیشگو نیست. کار اصلیاش کنار گذاشتن ایدههای ضعیف است، نه پیدا کردن یک «روش بینقص».
بک تست دستی در برابر خودکار
برای آزمودن یک استراتژی دو راه اصلی دارید: اجرای دستی روی نمودار یا سپردن کار به نرمافزار. هر کدام مزیت و محدودیت خودش را دارد.
تست دستی (Manual Backtesting)
در تست دستی، نمودار را به تاریخی در گذشته برمیگردانید، بخش آینده را پنهان میکنید و کندلبهکندل جلو میروید. هر جا شرایط ورود برقرار شد، یک معامله فرضی ثبت میکنید. قابلیت بازپخش نمودار (Bar Replay) در تریدینگویو این کار را سادهتر میکند. اگر با این پلتفرم آشنا نیستید، آموزش تریدینگ ویو شروع خوبی است.
مزیت بزرگ این روش، آشنایی عمیق با رفتار قیمت است. محدودیتش هم زمانبر بودن و احتمال سوگیری است؛ گاهی ذهن ناخودآگاه معاملههای بد را نادیده میگیرد.
تست خودکار (Automated Backtesting)
در تست خودکار، قوانین را با یک زبان برنامهنویسی مینویسید؛ مثلاً با Pine Script در تریدینگویو یا کتابخانههای پایتون. نرمافزار در چند ثانیه دادههای چند سال را بررسی میکند و گزارش کامل میدهد. سرعت و دقت در اجرای قوانین مزیت اصلی این روش است. در مقابل، به دانش کدنویسی نیاز دارد و چون تغییر تنظیمات آسان است، خطر بیشبرازش بیشتر میشود.
| معیار | تست دستی | تست خودکار |
|---|---|---|
| سرعت | کند و زمانبر | بسیار سریع |
| نیاز به برنامهنویسی | ندارد | دارد |
| شناخت رفتار بازار | عمیق و تجربی | محدودتر |
| دقت اجرای قوانین | در معرض خطای انسانی | دقیق، به شرط درست بودن کد |
| خطر اصلی | سوگیری ذهنی | بیشبرازش |
| مناسب برای | تازهواردها و استراتژیهای ساده | قوانین کاملاً تعریفشده و داده زیاد |
پیشنهاد آموزشی برای شروع: چند استراتژی ساده را دستی تست کنید تا منطق بازار را حس کنید. وقتی قوانینتان کاملاً دقیق و قابلتعریف شد، سراغ روش خودکار بروید.
مراحل بک تست
یک آزمون مفید نظم و قاعده دارد. این مراحل را به ترتیب دنبال کنید:
- تعریف قوانین دقیق: شرط ورود، شرط خروج، حد ضرر و اندازه هر معامله را طوری بنویسید که جای تفسیر نداشته باشد. این قوانین در اصل بخشی از پلن معاملاتی شما هستند.
- انتخاب بازار، تایمفریم و بازه زمانی: مشخص کنید روی کدام ارز و چه تایمفریمی تست میکنید. بازه انتخابی باید دورههای صعودی، نزولی و بدون روند (رنج) را در بر بگیرد.
- اجرای معاملات بدون نگاه به آینده: فقط بر اساس اطلاعاتی تصمیم بگیرید که در همان لحظه در دسترس بوده است. نگاه کردن به کندلهای بعدی، که به آن سوگیری آیندهنگری (Look-ahead Bias) میگویند، نتیجه را غیرواقعی میکند.
- در نظر گرفتن هزینهها: کارمزد معاملات و لغزش قیمت (Slippage) را از نتیجه کم کنید. لغزش یعنی فاصله بین قیمتی که انتظار داشتید و قیمتی که سفارش واقعاً با آن اجرا شد. استراتژیهایی که معامله زیاد و سود کمی در هر معامله دارند، بدون حساب کردن این هزینهها بهتر از واقعیت به نظر میرسند.
- ثبت دقیق نتایج: تاریخ، قیمت ورود و خروج، سود یا زیان و دلیل هر معامله را یادداشت کنید. منطق این یادداشتها همان منطقی است که در ژورنال معاملاتی برای معاملات واقعی به کار میرود.
- تحلیل و تصمیم: نتایج را با معیارهای بخش بعد بسنجید و تصمیم بگیرید که استراتژی را کنار بگذارید، اصلاحش کنید یا به مرحله آزمون بعدی ببرید.
نکته: اگر استراتژی را روی یک جفتارز تومانی تست میکنید، بدانید قیمت آن هم از نوسان خود ارز تأثیر میگیرد و هم از تغییر نرخ دلار. برای سنجیدن منطق خود استراتژی، تست روی جفت تتری (مثل BTC/USDT) معمولاً تصویر شفافتری میدهد.
معیارهای ارزیابی نتیجه
سود خالص بهتنهایی معیار خوبی نیست. ممکن است استراتژیای در مجموع سودده باشد، اما در مسیرش افتی داشته باشد که در حساب واقعی تحمل آن برایتان ممکن نبود. معیارهای زیر تصویر کاملتری میدهند:
| معیار | یعنی چه؟ | چرا مهم است؟ |
|---|---|---|
| تعداد معاملات (Sample Size) | تعداد کل معاملههای انجامشده در دوره آزمون | با تعداد کم، مثلاً ۱۰ معامله، نتیجه بیشتر به شانس بستگی دارد. چند ده تا بیش از صد معامله تصویر قابلاتکاتری میدهد. |
| نرخ برد (Win Rate) | درصد معاملههای سودده | بهتنهایی کافی نیست؛ نرخ برد بالا همراه با زیانهای بزرگ هم ممکن است به ضرر برسد. |
| نسبت سود به زیان (Risk/Reward) | میانگین سود معاملههای برنده تقسیم بر میانگین زیان معاملههای بازنده | نشان میدهد وقتی درست تشخیص میدهید، چقدر بیشتر از وقتی که اشتباه میکنید به دست میآورید. |
| ضریب سود (Profit Factor) | مجموع سودها تقسیم بر مجموع زیانها | عدد بالاتر از ۱ یعنی در دادههای گذشته مجموع سودها از مجموع زیانها بیشتر بوده است. |
| حداکثر افت سرمایه (Max Drawdown) | بزرگترین افت سرمایه از یک سقف تا کف بعدی | ریسک واقعی مسیر و فشار روانی آن را نشان میدهد. |
| امید ریاضی (Expectancy) | میانگین سود یا زیانی که از هر معامله انتظار میرود | نرخ برد و نسبت سود به زیان را در یک عدد خلاصه میکند. |
یک مثال آموزشی: فرض کنید نرخ برد استراتژی ۴۰ درصد است، میانگین سود هر معامله برنده ۲ واحد و میانگین زیان هر معامله بازنده ۱ واحد. امید ریاضی میشود (۰٫۴ × ۲) − (۰٫۶ × ۱) = ۰٫۲ واحد در هر معامله. یعنی این استراتژی با وجود باختن بیشتر معاملهها، در دادههای گذشته نتیجه مثبت داشته است. با این حال، این عدد چیزی را درباره آینده تضمین نمیکند.
به حداکثر افت سرمایه هم جدی نگاه کنید. اگر سرمایه ۵۰ درصد افت کند، برای برگشتن به نقطه اول به ۱۰۰ درصد رشد نیاز دارید. از خودتان بپرسید: «آیا در چنین افتی آرامشم را حفظ میکنم و به قوانینم پایبند میمانم؟»
خطای بیشبرازش
بیشبرازش (Overfitting) یعنی استراتژی را آنقدر با دادههای گذشته تنظیم کنید که بهجای یاد گرفتن الگوی واقعی بازار، نویز و اتفاقهای تصادفی همان دوره را «حفظ» کند. مثل دانشآموزی که جوابهای یک آزمون خاص را حفظ کرده و در آزمون جدید درمیماند.
یک مثال رایج: با اندیکاتور شاخص قدرت نسبی (RSI) تست میکنید. نتیجه با تنظیم ۱۴ دوره خوب نیست، پس ۹، ۱۱ و ۱۳ را امتحان میکنید و سطحهای ورود را هم مدام جابهجا میکنید تا به ترکیبی برسید که روی نمودار گذشته عالی به نظر برسد. به احتمال زیاد این ترکیب فقط با همان دادهها جور شده است و در بازار آینده عملکرد مشابهی نخواهد داشت.
نشانههای بیشبرازش
- تعداد قوانین، شرطها و پارامترها زیاد است.
- نتیجه در یک دوره عالی است و در دوره دیگر کاملاً فرو میریزد.
- تغییری کوچک در یک پارامتر، کل نتیجه را خراب میکند.
- تعداد معاملات کم است، ولی نتیجه بیش از حد خوب به نظر میرسد.
راههای کاهش این خطا
- دادهها را دو بخش کنید: بخش «دروننمونه» (In-sample) برای طراحی استراتژی، و بخش «بروننمونه» (Out-of-sample) که تا آزمون نهایی به آن دست نمیزنید.
- قوانین را ساده نگه دارید؛ استراتژی ساده معمولاً در شرایط جدید پایدارتر است.
- استراتژی را روی چند ارز و در شرایط مختلف بازار امتحان کنید.
- به نتیجهای که بیش از حد خوب است، با تردید نگاه کنید.
از بک تست تا حساب دمو
عبور موفق از بک تست اولین فیلتر است، نه خط پایان. قدم منطقی بعدی فوروارد تست (Forward Testing) است؛ یعنی اجرای همان قوانین، بدون هیچ تغییری، روی دادههایی که از امروز به بعد شکل میگیرند. اینطور میفهمید استراتژی در شرایطی که از قبل نمیدانستید چطور عمل میکند.
رایجترین راه برای فوروارد تست بدون ریسک کردن پول، حساب آزمایشی یا معامله روی کاغذ است. جزئیات، مزایا و محدودیتهای این روش را در مقاله پیپر تریدینگ توضیح دادهایم.
اگر نتایج فوروارد تست به نتایج آزمون نزدیک بود، میتوانید استراتژی را با سرمایهای کوچک در شرایط واقعی امتحان کنید؛ مبلغی که از دست دادنش به زندگیتان آسیب نمیزند. اگر فاصله نتایج واقعی با نتایج آزمون زیاد بود، وقت آن است که قوانین و فرضهایتان را بازبینی کنید.
ریسکها و محدودیتهای این روش
این روش ابزار مفیدی است، اما محدودیتهایی دارد که بهتر است از قبل بدانید:
- عملکرد گذشته آینده را تضمین نمیکند: شرایط بازار، نقدشوندگی و رفتار معاملهگران تغییر میکند.
- تغییر شرایط بازار: استراتژیای که در بازار رونددار جواب داده، ممکن است در بازار رنج پشت سر هم ضرر بدهد.
- کیفیت داده و سوگیری بقا (Survivorship Bias): اگر فقط ارزهایی را تست کنید که امروز هنوز فعالاند، پروژههایی که از بین رفتهاند از محاسبه بیرون میمانند و نتیجه خوشبینانهتر از واقعیت میشود.
- فاصله احساسی: در آزمون، ترس و طمع نقشی ندارند؛ در حساب واقعی، اجرای همان قوانین سختتر است.
- هزینههای پنهان: در بازارهای کمنقدشونده، اختلاف قیمت خرید و فروش (اسپرد) و لغزش ممکن است از برآورد شما بیشتر باشد.
هشدار: نتیجه خوب در آزمون هرگز به معنی سود تضمینی نیست. هیچ استراتژیای بدون ریسک نیست و همیشه ممکن است بخشی از سرمایه از دست برود.
سوالات متداول درباره بک تست
۱. آیا نتیجه خوب در بک تست یعنی استراتژی در آینده هم سود میدهد؟
نه. نتیجه خوب فقط نشان میدهد که قوانین شما در دادههای گذشته جواب دادهاند. بازار ممکن است تغییر کند، استراتژی ممکن است دچار بیشبرازش شده باشد و احساسات شما در معامله واقعی هم اثر میگذارد. به همین دلیل، بعد از آزمون اولیه، فوروارد تست و شروع با سرمایه کوچک قدمهای منطقی بعدی هستند.
۲. برای تست یک استراتژی به چه مقدار داده تاریخی نیاز است؟
عدد ثابتی وجود ندارد. قاعده کلی این است که بازه انتخابی دورههای صعودی، نزولی و رنج را پوشش دهد و تعداد معاملات آنقدر باشد که نتیجه به شانس وابسته نباشد؛ معمولاً چند ده تا بیش از صد معامله. در تایمفریمهای کوتاهتر، با بازه زمانی کمتری هم به این تعداد معامله میرسید.
۳. آیا بدون برنامهنویسی هم میشود استراتژی را تست کرد؟
بله. تست دستی با قابلیت بازپخش نمودار هیچ نیازی به کدنویسی ندارد و برای تازهواردها حتی مفیدتر است، چون شناخت عمیقتری از رفتار قیمت به شما میدهد. فقط باید قوانین را از قبل دقیق بنویسید، همه معاملات را بدون استثنا ثبت کنید و از نگاه کردن به کندلهای آینده خودداری کنید.
۴. تفاوت بک تست و فوروارد تست چیست؟
بک تست استراتژی را روی دادههای گذشته امتحان میکند، در حالی که فوروارد تست همان قوانین را بدون تغییر روی دادههایی امتحان میکند که از امروز به بعد شکل میگیرند. اولی سریع است و ایدههای ضعیف را زود کنار میگذارد. دومی نشان میدهد استراتژی در شرایط جدید و ناشناخته چقدر پایدار است.
جمعبندی
بک تست کمک میکند یک ایده معاملاتی را پیش از درگیر کردن پول واقعی با دادههای گذشته بسنجید و ضعفهایش را زودتر ببینید. اما نتیجه آن فقط یک فیلتر اولیه است، نه تضمین سود. مسیر منطقی این است: آزمون دقیق، ارزیابی با چند معیار، فوروارد تست و در پایان شروع با سرمایه کوچک.
- قوانین را طوری بنویسید که جای تفسیر نداشته باشند، و کارمزد و لغزش را در نتیجه حساب کنید.
- بهجای سود خالص، به حداکثر افت سرمایه، امید ریاضی و تعداد معاملات هم توجه کنید.
- با ساده نگه داشتن قوانین و تست روی داده بروننمونه، خطر بیشبرازش را کم کنید.
- بعد از آزمون اولیه، پیش از ریسک واقعی، فوروارد تست انجام دهید.
اگر بعد از بررسی این نکات تصمیم گرفتید اولین تمرین خود را شروع کنید، میتوانید نمودار قیمت بیتکوین را در ناربیت ببینید و با خیال راحت و بدون عجله رفتار قیمت را بررسی کنید.
این مطلب صرفاً آموزشی است و توصیه مالی یا سرمایهگذاری محسوب نمیشود. پیش از هر تصمیم، ریسکها را با شرایط مالی خود بسنجید.