بازار ارزهای دیجیتال جایی است که تصمیمهای عجولانه و احساسات لحظهای میتوانند تنها ظرف چند دقیقه سرمایهای را که ماهها برای آن زحمت کشیدهاید، نابود کنند. بسیاری از معاملهگران تازهکار، قبل از آنکه حتی یکبار استراتژی خود را روی دادههای گذشته امتحان کنند، با پول واقعی وارد مارکت میشوند و درست همانجا زمین میخورند. اما حرفهایها سالهاست که یک ابزار طلایی در اختیار دارند؛ ابزاری که نهتنها احتمال شکست را کاهش میدهد، بلکه به شما نشان میدهد آیا ایدهتان واقعاً ارزش ریسک کردن دارد یا نه. این ابزار همان بکتست است.
بکتست مثل یک ماشین زمان برای استراتژی معاملاتی شماست. بهجای اینکه وارد بازار شوید و به امید شانس منتظر نتیجه بمانید، استراتژیتان را روی گذشته بازار اجرا میکنید؛ جایی که قیمتها بالا و پایین شدهاند، ترس و طمع شکل گرفته و روندها شکستهاند. وقتی استراتژی شما در چنین محیطهای واقعی موفق ظاهر میشود، یعنی تصمیمگیریهایتان فقط روی کاغذ خوب به نظر نمیرسند، بلکه در شرایط واقعی هم امکان بقا دارند. این مقاله از میهن بلاکچین قرار است شما را از قدم صفر تا تحلیل نتایج بکتست، اشتباهات رایج و حتی تکنیکهای پیشرفته اعتبارسنجی همراهی کند تا بتوانید استراتژی خود را به سطح یک معاملهگر باتجربه برسانید.
قبل از مطالعه این مطلب توصیه میکنیم مقاله مرتبط دیگری با عنوان «بک تست کردن چیست و چگونه به استراتژی سرمایهگذاری شما کمک میکند؟» که در میهن بلاکچین نوشتهایم را مطالعه کنید.
بکتست چیست و چرا تا این اندازه مهم است؟
بکتست کردن فرایندی است که در آن یک استراتژی معاملاتی را با دادههای تاریخی اجرا میکنیم تا مشخص شود آیا این استراتژی در گذشته عملکرد قابل قبولی داشته است یا خیر. این موضوع شاید ساده به نظر برسد، اما در واقعیت مهمترین مرحلهای است که بین یک معاملهگر مبتدی و یک معاملهگر سیستماتیک تفاوت ایجاد میکند. اساس کار آن است که قوانین ورود، خروج، حد ضرر، حد سود، اندازه موقعیت و تمام عناصر استراتژی را شفاف تعریف کرده و سپس آنها را روی کندلها و دادههای قبلی اعمال میکنیم.
اهمیت بکتست کردن از این جهت است که ذهن انسان بسیار سوگیر است و اغلب در نگاه اول، یک استراتژی را «عالی» یا «افتضاح» تعبیر میکند؛ در حالی که دادهها چیز دیگری میگویند. معاملهگران تازهکار معمولاً چیزی را که دوست دارند ببینند، در نمودار تشخیص میدهند، اما زمانی که استراتژیشان را با بکتست دقیق بررسی میکنند، متوجه میشوند بسیاری از سیگنالهای ظاهراً جذاب، در عمل مملو از ضررهای کوچک و بزرگ بودهاند. بکتست این تصویر خیالی را به یک تصویر واقعی و عددی تبدیل میکند.
از طرفی، بکتست کمک میکند قوانین استراتژی بهجای «حدس» بر پایه «منطق و داده» نوشته شوند. وقتی معاملهگری پس از چند بار ضرر متوالی قوانینش را تغییر میدهد، در واقع گرفتار احساسات شده است. اما وقتی بکتست کردن به او نشان دهد که در دورههای خاص، ۵ یا حتی ۱۰ ضرر متوالی طبیعی است، معاملهگر آمادهتر و مقاومتر میشود و اجرای استراتژی را ادامه میدهد. بنابراین بکتست نهتنها یک ابزار فنی بلکه یک ابزار روانشناختی برای نظم ذهن معاملهگر نیز محسوب میشود.
به طور کلی، ۹۰٪ ایدههای معاملاتی در طول بکتست شکست میخورند و این امر جلوی ضررهای هنگفت در بازار واقعی را میگیرد.
بکتست کردن چه محدودیتهایی دارد؟
اگرچه بکتست یکی از پایههای اصلی ارزیابی هر استراتژی معاملاتی است، اما واقعیت این است که خروجیهای آن همیشه تصویر کاملی از عملکرد واقعی نمیدهند. برخی محدودیتها باعث میشود نتایج بکتست بیش از حد خوشبینانه یا حتی گمراهکننده باشند:
۱- گذشته الزاماً آینده را پیشبینی نمیکند
بزرگترین چالش بک تست کردن این است که بازارها ثابت نیستند. ساختار نقدینگی، رفتار معاملهگران، سیاستهای کلان و حتی معرفی ابزارهای جدید میتوانند باعث شوند یک استراتژی که دیروز فوقالعاده عمل کرده، فردا کاملاً بیاثر شود.
۲- دادههای تاریخی، واقعیت اجرای معاملات را کامل نشان نمیدهند
چارتهای OHLCV فقط پنج داده خام ارائه میدهند، اما چیزی درباره عمق دفتر سفارش، لغزش قیمت، نقدینگی لحظهای یا تاخیر اجرای سفارش نمیگویند. در دنیای واقعی، ممکن است سفارشت دقیقاً با همان قیمتی که بکتست نشان میدهد پر نشود و همین موضوع بازده را بهشدت تغییر دهد.
۳- روانشناسی معاملهگری در بکتست حضور ندارد
هیچ دادهای نمیتواند احساسی را که هنگام تجربه افت سرمایه واقعی، ضررهای پشتسرهم یا نوسانات شدید دارید شبیهسازی کند. یک استراتژی ممکن است روی کاغذ عالی باشد، اما در عمل، بسیاری از معاملهگران نمیتوانند فشارهای احساسی اجرای آن را تحمل کنند.
۴- بکتست ابزار تصمیمسازی است، نه تضمین عملکرد
بهتر است بکتست را مرحلهی اول اعتبارسنجی بدانید. پس از مشاهده نتایج مناسب، استراتژی را در حساب دمو یا با سرمایه بسیار کم در محیط واقعی امتحان کنید تا رفتار آن در شرایط لایو بازار مشخص شود. تنها بعد از این مرحله است که میتوان با احتیاط وارد اجرای کامل شد.
بکتست با ترید دمو و ترید واقعی چه فرقی دارد؟
یکی از اشتباهاتی که اغلب کاربران تازهکار مرتکب میشوند، این است که بکتست را با معاملهگری در حساب دمو یا معاملهگری واقعی یکسان میدانند. اینها سه مرحله مختلف از یک مسیر حرفهای هستند.
بک تست کردن فقط روی دادههای گذشته اجرا میشود. شما بازار را «ریمپلی» میکنید و تصمیمهای خود را روی نمودار گذشته میگذارید. هیچ ریسکی وجود ندارد، اما اجرای شما آنقدر سریع است که میتوانید در چند دقیقه چندین سال داده را بررسی کنید.
در مرحلهی بعد، نوبت حساب دموست؛ جایی که استراتژی حالا باید در بازار زنده و در لحظه آزمایش شود. برخلاف بکتست، در ترید دمو باید در برابر سیگنالها واکنش واقعی نشان دهید؛ اما هنوز با پول مجازی معامله میکنید و هیچچیزی را از دست نمیدهید. این مرحله برای تست مهارت اجرایی، صبر و مدیریت احساسات ضروری است.
مرحله نهایی معاملهگری با پول واقعی است؛ جاییکه همهچیز تغییر میکند. کارمزد واقعی، اسلیپیج، سرعت صرافی، نقدشوندگی، هیجان، ترس از دست دادن و حتی اعتمادبهنفس کاذب همگی وارد بازی میشوند. بسیاری از استراتژیهایی که روی کاغذ فوقالعاده هستند، در بازار واقعی عملکرد مطلوبی ندارند؛ چون رکنهای روانشناختی و اجرای درست در جریان هستند.
به همین دلیل ترتیب حرفهای همیشه یک مسیر سه مرحلهای ثابت دارد:
بک تست کردن -> ترید دمو -> ترید واقعی با سرمایه کم -> افزایش سرمایه
در ادامه مراحل مختلف بکتست کردن را با هم بررسی میکنیم.
مرحله اول: تعریف دقیق و کامل استراتژی معاملاتی
برای شروع بکتست، نخست باید استراتژیتان را بهگونهای تعریف کنید که حتی یک ماشین هم بتواند آن را اجرا کند. مهمترین دلیل شکست معاملهگران مبتدی این است که قوانینشان مبهم، متناقض یا قابلتفسیر است. مثلاً عباراتی مثل «وقتی مارکت خوب بود وارد شو» یا «اگر احساس کردی روند قویه» هیچ جایگاهی در بکتست ندارند.
استراتژی شما باید شامل چند بخش مشخص باشد:
قوانین ورود، قوانین خروج، قوانین مدیریت ریسک، اندازه پوزیشن و تایمفریم.
برای مثال اگر استراتژی شما مبتنی بر میانگینهای متحرک است، باید مشخص کنید که دقیقاً با چه مدتی وارد معامله میشوید و کدام تلاقی سیگنال ورود یا خروج تلقی میشود. اگر از RSI استفاده میکنید، باید دقیقاً تعیین کنید نقطهای که زیر ۳۰ رفته و سپس بالایش برگشته نقطه ورود است، یا صرفاً عبور از ۳۰ کافی است؟ این جزئیات کوچک روی نتایج بکتست تاثیر عظیمی دارند.
در مورد مدیریت ریسک نیز وضعیت مشابهی برقرار است. باید مشخص کنید چه مقدار از سرمایه را در هر معامله وارد میکنید، حد ضرر چگونه تعیین میشود، حد سود بر چه اساسی فعال میشود و اگر معاملهای برخلاف مسیر برود، چه مکانیزمی فعال میشود.
هرچقدر استراتژی شما دقیقتر تعریف شود، بکتست شفافتر و واقعیتر خواهد بود.
مرحله دوم: جمعآوری دادههای تاریخی باکیفیت
کیفیت دادهای که از آن برای بکتست استفاده میکنید، تعیینکننده کیفیت نتیجه بکتست است. بسیاری از معاملهگران به اشتباه از دادههای ناقص یا نامعتبر استفاده میکنند و سپس نتایج آن را مبنای معاملات واقعی خود قرار میدهند. دادههای تاریخی باید تمیز، دقیق و شامل اطلاعات کافی باشند تا رفتار واقعی بازار را بازسازی کنند.
ابتداییترین نوع داده، دادههای OHLCV است؛ یعنی قیمت باز و بسته، بالاترین و پایینترین و حجم در هر کندل. این دادهها برای استراتژیهایی که در تایمفریمهای بالاتر فعالیت میکنند ایدهآل هستند. اما اگر استراتژی شما در تایمفریم پایین فعال است، مثلا سبک ترید شم اسکالپینگ یا مبتنی بر سودهای بسیار کوچک است یا نیاز به دقت بالا دارد، تنها OHLCV کافی نیست. در چنین مواقعی باید از دادههای دفاتر سفارش (Order Book) استفاده کرد؛ جایی که عمق سفارشات، اسپرد و جریان واقعی سفارشات مشخص میشود.
یکی از مشکلات رایج، وجود ناهماهنگی بین دادههاست؛ مثلاً کندلهایی که بهصورت اشتباه ثبت شدهاند، زمانبندیهای ناسازگار، یا فقدان حجم در بخشهایی از نمودار. این مشکلات در نگاه اول ممکن است جزئی به نظر برسند اما در زمان بکتست میتوانند نتایج را کاملاً منحرف کنند. بنابراین باید دادهها را پاکسازی کنید، زمانبندیها را یکپارچه بسازید و از منابع معتبر استفاده نمایید.
یکی دیگر از نکاتی که اغلب نادیده گرفته میشود توجه به ارزهای حذفشده یا توکنهایی است که امروز وجود ندارند. اگر تنها توکنهای محبوب را بکتست کنید، دچار خطای «بقاگرایی» میشوید؛ یعنی فقط بر داراییهایی تمرکز کردهاید که زنده ماندهاند. این باعث میشود عملکردتان بیشازحد خوشبینانه به نظر برسد. دادههای تاریخی کاملتر به شما کمک میکند تصویری واقعیتر از آینده بگیرید.
مرحله سوم: اجرای بکتست (دستی، بدون کدنویسی، یا با استفاده از کدنویسی)
بکتست زمانی معنا پیدا میکند که استراتژیتان را روی دادههای واقعی گذشته اجرا کنید و ببینید اگر واقعاً در همان شرایط معامله میکردید، چه اتفاقی میافتاد؟
۱. بکتست دستی
۲. بکتست با ابزارهای بدون کدنویسی
۳. بکتست برنامهنویسیشده
در ادامه هرکدام را توضیح میدهیم.
بکتست دستی (Manual Backtesting در تریدینگ ویو)
در سادهترین حالت، شما وارد TradingView میشوید، یک نمودار باز میکنید و با استفاده از قابلیت Bar Replay، زمان را به عقب میبرید. با این روش، کندلها یکییکی به شما نمایش داده میشوند، انگار در همان لحظه قرار دارید و نمیدانید کندل بعدی چه شکلی خواهد بود. این تجربه برای شناخت واقعی رفتار یک استراتژی بسیار مفید است، چون دقیقاً همان حس معاملهگری در بازار زنده را به شما میدهد.
قبل از اینکه حتی یک کندل جلو بروید، باید قوانین استراتژی را روی کاغذ بنویسید. برای مثال، اگر قرار است از کراس میانگینهای متحرک ۵۰ و ۲۰۰ استفاده کنید، دقیقاً باید بدانید نقطه ورود کجاست، چه زمانی خارج میشوید، حد ضرر چیست، حجم معامله چقدر است و اگر بازار خلاف انتظار پیش رفت چه رفتاری باید داشته باشید. این بخش مهمتر از خود اجرای بکتست است، چون بسیاری از اشتباهات معاملاتی از همین مرحله ناشی میشود.
وقتی همهچیز آماده شد، نمودار را به تاریخ گذشته میبرید، Play را میزنید یا خودتان کندلها را جلو میبرید. هرگاه شرایط ورود دیده شد، قیمت ورود را ثبت میکنید. وقتی قیمت به حد ضرر یا حد سود رسید، یا هنگامی که سیگنال خروج صادر شد، آن عدد را هم یادداشت میکنید. در نهایت، تمام معاملات در یک فایل اکسل یا دفترچه مخصوص ثبت میشود.
برای مثال، فرض کنید استراتژی شما ورود هنگام عبور میانگین متحرک ساده ۵۰ روزه از ۲۰۰ روزه باشد و خروج هم در زمانی رخ دهد که میانگین ۵۰ روزه دوباره به زیر همتای ۲۰۰ روزهاش برگردد. اگر چنین سیگنالی در گذشته ایجاد شده، قیمت ورود و خروج و درصد سود یا ضرر آن را ثبت میکنید. ممکن است در یک معامله شاهد یک روند جذاب باشید و سه درصد سود بگیرید، و در معاملهای دیگر بازار به شکل دیگری واکنش دهد و باعث ضرر نزدیک به دو درصد شما شود. اینها رفتار طبیعی بازار است و بکتست دستی به شما کمک میکند شخصیت واقعی یک استراتژی را «لمس» کنید، نه اینکه فقط نتایج خشک ماشینی را ببینید.
بک تست دستی معمولاً زمانبر است، اما بهترین کار برای درک یک استراتژی محسوب میشود. در پایان، با نگاه کردن به مجموعه معاملات انجامشده، میزان برد، بیشترین افت حساب، مجموع کارمزدها و کیفیت رفتار استراتژی را تحلیل میکنید. شاید متوجه شوید که گرچه میزان موفقیت یا همان وین ریت (Win-rate) بالا است، اما میزان افت سرمایه برای شما قابل تحمل نیست. یا برعکس، شاید متوجه شوید که یک تنظیم کوچک در قوانین خروج میتواند بازده استراتژی را چند برابر کند.
بکتست بدون کدنویسی (No-Code Backtesting)
بعد از اینکه یک بار با روش دستی از نزدیک رفتار استراتژی را لمس کردید، طبیعی است که بخواهید از ابزارهایی استفاده کنید که کار را سریعتر کنند. در این مرحله، سراغ پلتفرمهای بدون کدنویسی میروید؛ پلتفرمهایی مثل Tradewell، Gainium، Cryptohopper، 3Commas و حتی خود TradingView که امکان تست نیمهخودکار و خودکار را بدون نوشتن حتی یک خط کد به شما میدهند.
در این پلتفرمها معمولاً با یک رابط کاربری ساده روبهرو میشوید که در آن میتوانید قوانین ورود، خروج، حد ضرر، حد سود و شرایط فیلترهای بازار را تعیین کنید. سپس تنها کاری که لازم است انجام بدهید این است که دکمه اجرای بکتست را بزنید. پلتفرم، استراتژی شما را روی صدها یا هزاران کندل تاریخی اجرا میکند و در نهایت گزارش کاملی شامل میزان سود، میانگین برد و باخت، نسبت ریسک به ریوارد، ضریب شارپ، حداکثر افت سرمایه، تعداد معاملات، کارمزدها و حتی رفتار استراتژی در دورههای مختلف بازار به شما ارائه میدهد.
مزیت این مرحله آن است که میتوانید دهها نسخه متفاوت از یک استراتژی را تست کنید، پارامترها را تغییر بدهید، و در عرض چند دقیقه متوجه شوید کدام نسخه عملکرد بهتری دارد. این پلتفرمها برای کسانی که اهل برنامهنویسی نیستند بسیار مناسب است و در عین حال نتایج دقیقتری نسبت به بکتست دستی ارائه میدهند. همچنین میتوانید رفتار استراتژی را روی صرافیهای متفاوت یا جفتارزهای گوناگون بررسی کنید.
بکتست با برنامهنویسی (Coding Backtest)
اما وقتی بخواهید کنترل کامل روی همه جزئیات داشته باشید، هیچ چیزی با قدرت بکتست برنامهنویسی قابل مقایسه نیست. در این مرحله، از کتابخانههایی مانند Backtrader، Zipline یا Backtesting.py در زبان پایتون استفاده میکنید. این کتابخانهها امکانات بسیار پیچیدهتری ارائه میدهند؛ از جمله تعریف اسلیپیج واقعی، کارمزد متغیر، شبیهسازی اجرای سفارش، تست چند دارایی همزمان، ساخت پورتفو، بهینهسازی پارامترها و اجرای آزمایشهای walk-forward.
در این روش، ابتدا دادههای قیمتی (مثلاً OHLCV بیتکوین) را وارد برنامه میکنید. سپس یک کلاس استراتژی تعریف میکنید که در آن، قوانین دقیق ورود و خروج نوشته میشود. پس از آن، موتور بکتست را اجرا میکنید تا استراتژی را روی دادههای تاریخی اعمال کند. در نهایت، میتوانید نتایجی مانند منحنی سرمایه (Equity Curve)، لیست کامل معاملات، تحلیل آماری، شارپ ریتیو، فاکتور سود، رفتار در روندهای مختلف و حتی متریکهای پیچیدهتر مثل Calmar Ratio را استخراج کنید.
این روش برای کسانی مناسب است که یا میخواهند ربات معاملاتی بسازند، یا به دنبال حد بالای کنترل و دقت هستند. معمولاً وقتی معاملهگر به این مرحله میرسد، دیگر از برگشت به بکتست دستی یا پلتفرمهای سادهتر بینیاز میشود.
کد کامل Pine Script (نسخه آموزش کراس میانگینهای متحرک ساده ۵۰ و ۲۰۰ روزه)
این کد با یک استراتژی بسیار ساده شروع میشود: زمانی که میانگین سریع به بالای میانگین کند میرسد وارد معامله میشود و هنگام برگشت سیگنال خارج میشود. در کنار آن، تنظیمات کارمزد، حد ضرر و حد سود نیز افزوده شده تا بکتست به شرایط واقعیتری نزدیک شود.
//@version=5
strategy(“SMA Crossover (Simple)”, overlay=true, initial_capital=10000,
commission_type=strategy.commission.percent, commission_value=0.1)
fastLen = input.int(50, “Fast SMA”)
slowLen = input.int(200, “Slow SMA”)
fast = ta.sma(close, fastLen)
slow = ta.sma(close, slowLen)
longIn = ta.crossover(fast, slow)
longOut = ta.crossunder(fast, slow)
// Optional risk controls
sl_pct = input.float(2.0, “Stop loss %”) / 100.0
tp_pct = input.float(4.0, “Take profit %”) / 100.0
if (longIn)
strategy.entry(“Long”, strategy.long)
if (strategy.position_size > 0)
strategy.exit(“XL”, “Long”,
stop = strategy.position_avg_price * (1 – sl_pct),
limit = strategy.position_avg_price * (1 + tp_pct))
if (longOut)
strategy.close(“Long”)
plot(fast, title=”Fast SMA”)
plot(slow, title=”Slow SMA”)
نمونه کد Python با Backtesting.py (برای برنامهنویسان)
در این کد، دادههای تاریخی از یک فایل CSV خوانده میشود، دو میانگین متحرک محاسبه میشود و در نهایت زمانی که میانگین سریع بالاتر از میانگین کند قرار میگیرد، پوزیشن خرید باز میشود. وقتی تقاطع معکوس اتفاق بیفتد، معامله بسته میشود. موتور Backtesting.py پس از اجرا، نتایجی مانند سود نهایی، شارپ، تعداد معاملات، میانگین سود و ضرر و منحنی رشد حساب را ارائه میدهد.
from backtesting import Backtest, Strategy
from backtesting.lib import crossover
import pandas as pd
data = pd.read_csv(“btc_data.csv”, parse_dates=True, index_col=’Date’)
class SmaCross(Strategy):
fast = 50
slow = 200def init(self): self.fast_sma = self.I(lambda x: x.rolling(self.fast).mean(), self.data.Close) self.slow_sma = self.I(lambda x: x.rolling(self.slow).mean(), self.data.Close) def next(self): if crossover(self.fast_sma, self.slow_sma): self.buy() if crossover(self.slow_sma, self.fast_sma): self.position.close()
bt = Backtest(data, SmaCross, cash=10000, commission=.001, exclusive_orders=True)
results = bt.run()
print(results)
bt.plot()
مرحله چهارم: تحلیل نتایج بکتست
یک بکتست زمانی ارزشمند است که بتوانید نتایج آن را بهدرستی تفسیر کنید. بسیاری از معاملهگران تنها به سود نهایی نگاه میکنند، درحالیکه معیارهای مهمتری وجود دارد.
نخستین معیار سودآوری است. باید بررسی کنید استراتژی در کل دوره چه مقدار سود کرده و نرخ بازده سالانه آن چقدر بوده است. اگر استراتژی در دورهای ۵ ساله ۱۸۰ درصد سود کرده باشد، این سود ممکن است در نگاه اول مناسب به نظر برسد اما باید بررسی کرد آیا در طول مسیر چندین بار دچار ریزشهای سنگین شده یا خیر.
معیار بعدی نسبت شارپ و سورتینو (Sortino Ratio) است. شارپ نشان میدهد هر واحد ریسک چه مقدار بازده ایجاد کرده و سورتینو فقط ریسک منفی را در نظر میگیرد. اگر استراتژی سودده باشد اما شارپ پایین داشته باشد، یعنی مسیر بسیار پرنوسانی داشته و ممکن است در عمل قابل تحمل نباشد.
مهمترین معیار اما میزان دراداون (Drawdown) یا افت سرمایه است. دراودان نشان میدهد بدترین ریزش حساب در دوره بک تست کردن چه مقدار بوده است. اگر استراتژی در بهترین حالت ۱۵۰ درصد سود کرده اما در طول مسیر ۵۰ درصد ریزش داشته، باید پرسید آیا واقعاً میتوان چنین استراتژی را تحمل کرد؟
همچنین بررسی ثبات عملکرد در دورههای مختلف اهمیت حیاتی دارد. یک استراتژی که فقط در بازار صعودی خوب عمل کرده اما در بازار نزولی یا رنج عملکرد ضعیفی دارد، استراتژی پُر ریسکی است.
تحلیل ریسکمحور نتایج بکتست در یک نگاه
| معیار | فرمول محاسبه | محدوده مطلوب (خوب) | محدوده ضعیف | توضیح فارسی و کاربرد عملی |
| نسبت شارپ (Sharpe Ratio) | (بازده − نرخ بدون ریسک) ÷ انحراف معیار | بین ۱ تا ۲ | کمتر از ۰.۵ | نشان میدهد استراتژی بهازای هر واحد نوسان کلی بازار چقدر بازده واقعی تولید کرده است. هرچه بالاتر باشد، عملکرد پایدارتر و کمریسکتر است. |
| نسبت سورتینو (Sortino Ratio) | (بازده − نرخ بدون ریسک) ÷ انحراف معیارِ ضررها | بالاتر از ۱.۵ | کمتر از ۱ | مشابه نسبت شارپ است اما فقط «نوسانهای رو به پایین» را جریمه میکند. معیار دقیقتری برای بررسی ریسکهای واقعی و رفتار استراتژی در دوران ضرردهی است. |
| نسبت کامار (Calmar Ratio) | بازده سالانه ÷ بیشترین افت سرمایه | بیشتر از ۱ | کمتر از ۰.۵ | بازده سالانه را نسبت به بیشترین دراودان میسنجد. اگر این عدد پایین باشد، یعنی استراتژی در دورههایی سقوط عمیق داشته—حتی اگر سود سالانه خوب بهنظر برسد. |
| فاکتور سود (Profit Factor) | مجموع سودهای خام ÷ مجموع ضررهای خام | بین ۱.۳ تا ۲.۰ | کمتر از ۱ | نشان میدهد آیا سودهای استراتژی در بلندمدت بر ضررها غلبه میکنند یا نه. PF کمتر از ۱ یعنی سیستم عملاً بازنده است. PF بالاتر از ۱.۵ معمولاً نشاندهنده اعتبار مناسب استراتژی است. |
مرحله پنجم: تکنیکهای پیشرفته برای تأیید نتایج بکتست
معاملهگر حرفهای فقط به یک بکتست ساده اعتماد نمیکند. او بعد از اولین نتیجه، سراغ مجموعهای از آزمایشها میرود تا مطمئن شود استراتژی واقعاً پایدار است و صرفاً یک تصادف خوششانس نبوده است. یکی از این روشها «Walk-Forward Analysis» است که به شما نشان میدهد اگر پارامترهای استراتژی را در طول زمان بهروز کنید، همچنان پایداری دارد یا خیر. این روش شبیه یک آزمون زمانبندیشده است که به استراتژی فشار میآورد.
روش دیگر «Monte Carlo Simulation» است. در این روش ترتیب معاملات را بهصورت تصادفی جابهجا میکنید تا ببینید آیا استراتژی همچنان منطقی باقی میماند یا خیر. اگر حتی یک جابهجایی کوچک، نتایج را بهطور کامل تخریب کند، یعنی استراتژی شما بسیار شکننده است و در بازار واقعی احتمال شکست آن بالاست.
در نهایت، مهمترین مرحله در اعتبارسنجی «تست خارج از نمونه» است. یعنی بخشی از دادهها را کنار میگذارید و اصلاً از آنها برای طراحی یا بهینهسازی استراتژی استفاده نمیکنید. سپس استراتژی نهایی را روی این بخش اجرا میکنید. اگر نتایج مشابه بود، یعنی استراتژی احتمالاً شما خوب است؛ اما اگر نتایج زمین تا آسمان فرق داشت، باید کل استراتژی را بازنگری کنید.
مرحله ششم: گذار از بکتست به معامله واقعی
بسیاری از معاملهگران بعد از یک بکتست خوب، مستقیم وارد بازار واقعی میشوند و معمولاً همین نقطه باعث شکستشان میشود. مرحله میانی یعنی «Paper Trading» یا معاملات دمو، حیاتیترین فاز است. در این مرحله شما استراتژیتان را در زمان واقعی اجرا میکنید اما بدون سرمایه واقعی. این کار کمک میکند فاصله میان «نتایج بکتست» و «واقعیت بازار» را اندازه بگیرید.
پس از چند ماه معاملات مجازی، وقتی مطمئن شدید که رفتار استراتژی مطابق انتظار است و مهمتر از آن، «رفتار ذهنی خود شما» در برابر ضررها، ریزنوسانات و سیگنالهای پیاپی کنترلشده است، میتوانید وارد معاملات واقعی شوید. آنهم نه با کل سرمایه، بلکه با یک بخش کوچک. این مرحله نیز نوعی تست است: تست روانشناسی و تست اجرا.
در نهایت باید یک داشبورد نظارتی بسازید تا عملکرد زنده را با نتایج بکتست مقایسه کنید. اگر نتایج بهطور جدی از کنترل خارج شد، فوراً باید جلوی ادامه ضرر را بگیرید. پایش مداوم بخش مهمی از تبدیل استراتژی به یک سیستم قابلاعتماد است.
اشتباهات مرگبار در بک تست کردن استراتژیها
یکی از بزرگترین مشکلات معاملهگران این است که بکتست را اشتباه انجام میدهند و تصور میکنند استراتژیشان فوقالعاده است؛ اما به محض ورود به بازار واقعی، تمام عملکرد فرو میریزد. عدم درک اشتباهات رایج، معاملهگر را از ورود حرفهای به بازار دور میکند.
یکی از شایعترین اشتباهات، استفاده از دادههای بسیار محدود است. برای مثال یک استراتژی را فقط در سال ۲۰۲۱ که بازار صعودی بود تست میکنند و نتیجه میگیرند که این استراتژی خارقالعاده است. اما در سال ۲۰۲۲ یا ۲۰۲۳ با کوچکترین ریزشها کاملاً از هم میپاشد. تست نکردن در بازارهای خرسی یکی از بزرگترین خطاهای بکتست است.
خطای مهم دیگر، نادیده گرفتن کارمزد و اسلیپیج است. در استراتژیهای کوتاهمدت، حتی ۰.۱٪ کارمزد میتواند استراتژی سودده را تبدیل به استراتژی ضررده کند. همچنین پرشهای کندلی باعث میشوند قیمتی که فکر میکنید وارد شدهاید، در واقع قابل دسترسی نباشد. اگر این موضوعات لحاظ نشوند نتایج شما بهشدت غیرواقعی خواهد شد.
خطای دیگر، «اورفیتینگ» یا بیشازحد بهینهسازی است. معاملهگر آنقدر پارامترها را تنظیم میکند تا نتیجه عالی شود، اما این نتیجه فقط روی دادههای گذشته درست کار میکند. در دادههای جدید، استراتژی کاملاً شکست میخورد. این دقیقاً مثل حفظ کردن جوابهای امتحان سالهای قبل است؛ تا وقتی سؤالها تغییر نکند خوب عمل میکند!
سوالات متداول
برای یک بکتست موثر، باید چه مقدار داده تاریخی داشته باشم؟
بهترین حالت این است که حداقل یک چرخه کامل بازار را پوشش دهید؛ یعنی دورههای صعودی، نزولی و فازهای رِنج. برای استراتژیهای روزانه معمولاً ۳ تا ۵ سال داده کافی است. اگر استراتژی شما درونروزی است، به حجم بیشتری از معاملات و سیگنالها نیاز دارید تا عملکرد آن در چندین رژیم مختلف بازار بررسی شود.
بهترین ابزارهای رایگان بک تست برای افراد مبتدی و بدون دانش برنامهنویسی کداماند؟
اگر دنبال یک راهکار کاملاً بدون کدنویسی هستید، دو گزینه مناسبتر از بقیهاند:
TradingView با قابلیت Bar Replay و اندیکاتورهای آماده برای تست دستی
نسخه رایگان Tradewell برای اجرای تستهای سریع روی دادههای تاریخی
هر دو ابزار ساده، قابلفهم و عالی برای شروع هستند.
از کجا بفهمم استراتژیام روی دادههای گذشته بیشازحد بهینهسازی شده (Overfitted) است؟
اگر استراتژی شما پارامترهای زیادی دارد، روی دادههای گذشته عملکرد خارقالعادهای نشان میدهد اما روی داده جدید بهسرعت خراب میشود، یا وقتی حتی یک مقدار کوچک از تنظیمات را تغییر میدهید، نتایج بهشدت افت میکند، احتمال بسیار زیاد آن را روی دادههای گذشته بیشازحد بهینهسازی کردهاید.
برای مقابله با این مشکل از قوانین سادهتر، دادههای خارج از نمونه (Out-of-Sample)، تست واکفوروارد و تحلیل مونتکارلو برای سنجش پایداری استفاده کنید.
آیا باید کارمزدها و اسلیپیج قیمت را در بکتست لحاظ کنم؟ این موضوع چقدر مهم است؟
بله، حتماً. مدلسازی کارمزدها و یک مقدار منطقی برای اسلپیج ضروری است. بسیاری از استراتژیها که ظاهراً سودده هستند، پس از اعمال هزینهها حاشیه سودشان محو شده یا حتی منفی میشود. این اثر در استراتژیهای پرمعامله یا بازارهای کمنقدینگی شدیدتر است.
اگر یک استراتژی در بکتست خوب عمل کند، در معامله واقعی چقدر از آن عملکرد را میتوان انتظار داشت؟
معمولاً باید انتظار داشته باشید عملکرد واقعی کمتر از نتایج بکتست باشد؛ چون در دنیای واقعی با اسلیپیج قیمت، تأخیر اجرای سفارش، پر نشدن سفارشات و عوامل روانشناختی مواجه هستید. بهتر است ابتدا ۳ تا ۶ ماه با حساب دمو کار کنید، سپس با حجم کم وارد بازار واقعی شوید و عملکرد را با بکتست مقایسه کنید. پس از اثبات پایداری، میتوانید بهتدریج مقیاس را افزایش دهید.
سخن پایانی
بکتست یکی از ضروریترین ابزارهایی است که میتواند یک معاملهگر را از سطح مبتدی به سطح سیستماتیک و حرفهای منتقل کند. با بکتست یاد میگیریم که احساسات را کنار بگذاریم، بهجای اتکا به حدس و گمان به داده تکیه کنیم و پیش از آنکه سرمایهمان را در معرض خطر قرار دهیم، به عملکرد احتمالی استراتژی دست پیدا کنیم. اما در عین حال باید پذیرفت که هیچ بکتستی نمیتواند آینده را پیشبینی کند؛ تنها میتواند نشان دهد که یک سیستم معاملاتی در گذشته چگونه رفتار کرده است.
آنچه معاملهگر حرفهای را از آماتور جدا میکند نه داشتن یک استراتژی پیچیده بلکه داشتن فرآیندی دقیق، تکرارشونده و بیطرفانه برای آزمون و ارزیابی استراتژیها است. هرچه دادهها بهتر باشند، قوانین واضحتر تعریف شوند، اعتبارسنجی دقیقتر انجام شود و مسیر انتقال به معاملات واقعی با احتیاط بیشتری طی شود، احتمال موفقیت شما در بازارهای پرنوسان ارزهای دیجیتال بیشتر خواهد بود. بکتست یک مسیر است نه یک نتیجه. و معاملهگری که این مسیر را درست طی کند، در نهایت نهتنها استراتژی بهتری خواهد داشت بلکه ذهن آمادهتر و حرفهایتری نیز پیدا خواهد کرد.


















