بک تست گرفتن، فرایند سنجش عملکرد یک استراتژی معاملاتی یا الگوریتم با استفاده از دادههای دورههای گذشته میباشد. در واقع به جای اینکه معاملهگـر بـرای سنجش عملکرد استراتژی، آن را بر روی دادههای فعلی بسنجد، میتواند استراتژی یا الگوریتم خود را براساس دادههای گذشته، شبیهسازی کند.
بک تست، به دانش در چندین حوزه از جمله روانشناسی، ریاضیات، آمار، توسعه نرمافزار و زیرساختهای ریلتایم نیاز دارد. به بیان ساده با بک تست، الگوریتم شما با استفاده از دادههای مالی گذشته اجـرا میشود، که میتواند منجر به مجموعهای از سیگنالهای معاملاتی شـود. هر معامله دارای سود یا زیان مشخص است. تجمیع این سود یا زیان در طول بک تست باعث سـود و زیان کل میشود که به P & L یا PnL معروف است.
در این مقاله ابتدا با تعریف بک تست آغاز میکنیم و سپس اصول و نحوه اجرای آن را توضیح خواهیم داد.
بک تست چیست؟
تفاوت کلیدی بین روش معامله سنتی با معامله الگوریتمی در این است که استراتژیهای معاملات الگوریتمی را میتوان با استفاده از دادههای تاریخی مورد بک تست قرار داد؛ بنابراین در این روش میتوان تا حد قابل قبولی از عملکرد استراتژی مورد نظر اطمینان کسب کرد.
اگر یک استراتژی را یافتید که با جزییات کامل بر روی دادههای تاریخی موجـود مورد آزمون قرار گرفته باشد، باز هم لازم است که خودتان عملیات بک تست را انجام دهید. دقیقا مشابه با هر تحقیق پزشکی یا علمی، بازسازی نتایج دیگران منجر به حصول اطمینان از این امر میگردد که تحقیق مورد نظر هیچ یک از خطاهای رایج که باعث آسیب رسیدن به نتایج میشـود را در خود نداشته باشـد.
اگر عملیات بک تست را خودتان انجام دهید موجب می شود بتوانید استراتژی را مطابق نظر خود تغییر دهید، نتایج تغییرات را بررسی کرده و حتی استراتژی را بهبود بخشید.

علت بک تست استراتژی ها چیست؟
فیلتر کردن
بک تست گرفتن، مکانیزم فیلتری را ارائه میکند تا بتوانیم استراتژیهایی که نیازهای ما را تأمین نمیکنند را حذف نماییم.
مدل سازی
بک تست به ما اجازه میدهد که مدلهای جدید بازار مانند هزینههای معاملاتی، ارسال سفارش، تاخیرها، نقدشوندگی با دیگر مسائل مربوط به زیرساخت بازار را تست کنیم.
بهینه سازی
اگرچه بهینهسازی الگوریتم مملو از بایاس است، بک تست این امکان را به ما می دهد که عملکرد استراتژی را با تغییر پارامترها، بهبود دهیم و عملکرد آن را دوباره مورد آزمایش قرار دهیم.
بک تست، مزایا قابل توجهی را برای معاملات الگوریتمی فراهم میکند. با این حال، همیشه امکان بک تست مستقیم وجود ندارد. بهطورکلی، با افزایش فرکانس استراتژی، مدلسازی درست اثرات ریزساختار سختتر میشود، که این منجر به بک تستهایی با قابلیت اعتماد کمتر و در نتیجه یک ارزیابی پیچیدهتر میشود.
پلتفرم های برتر بک تست معاملات الگوریتمی
در حال حاضر تعدادی پلتفرم بک تست توسعهیافته در بازار ایران وجود دارند که میتوانند در استراتژیهای خودکار بک تست کارآمد باشند؛ امـا جهت انتخاب مناسبترین گزینه، نیاز به تحقیق دارید.
بهطور گسترده دو مدل سیستم بک تست وجود دارد که برای آزمون این فرضیه مورد استفاده قرار میگیرند:
بک تستر های تحقیقاتی
این ابزارها بهطور کامل تمام ابعاد تعاملات بازار را شبیهسازی نمیکنند، اما تخمینهایی برای تعیین عملکرد سریع استراتژی بالقوه آماده میکنند. در حالی که این ابزارها اغلب برای بک تست و اجرا استفاده میشوند، اما برای استراتژیهایی که در معرض معاملات روزانه در فرکانسهای بالاتر هستند مناسب نیستند. این ابزارها بهصورت گستردهای در صنعت معاملات کمی حرفهای مورد استفاده قرار میگیرند تا “طرح اولیه” را برای تمام ایدههای استراتژی قبـل از بک تست دقیـق در محیطی واقعیتر دریافت کنند. از نمونههای آن میتوان به متاتریدر، آمی بروکر و … اشاره کرد.
بک تسترهای رویداد محور
در بک تسترهای رویداد محور، استراتژی معاملات خودکار به تمامی جریانات بازار واقعی و یک کارگزار مرتبط است. این سیستمها در یک حلقه پیوسته اجـرا مـیشـوند و میتوانند زیرمجموعههایی مانند شبیهساز کارگزاری داشته باشنـد کـه اجـازه میدهد بک تست بسیار شبیه به اجرای واقعی باشد. تنها نکته این است که این سیستمها دارای طراحی پیچیدهای هستند و باید به دقت مورد تحقیق و بررسی قرار گیرند. در ایران تنها پلتفرم موجود در این حوزه با این ویژگیها، امید مکس است. این سیستم، با استفاده از صدها سرور موازی از سرعت بالای بک تست پشتیبانی میکند.
بایاس های اجرای بک تست
بایاسهای بسیاری وجود دارند که میتوانند بر عملکرد یک الگوریتم بک تست شده اثر بگذارند. متاسفانه، این بایاسها، تمایل به بزرگنمایی عملکرد دارند. در نتیجه همیشه باید بک تست را یک حد بالا ایدهآل نسبت به عملکرد واقعی استراتژی در نظر گرفت. اکثر اوقات، حذف کامل بایاسها از معاملات الگوریتمی غیرممکن است. در نتیجـه ایـن وظیفه ماست که تا حد امکان آنها را کاهش دهیم تا تصمیمات آگاهانهای درباره استراتژیهای الگوریتمی خود اتخاذ کنیم.
چهار بایاس اصلی وجود دارد که در ادامه به توضیح آنها خواهیم پرداخت.
بایاس بهینه سازی (Optimization Bias)
احتمالا حساسترین بایاس در بک تست است که پارامترهای معاملاتی اضافی را درگیر میکند تا زمانی که عملکرد استراتژی را در مجموعه دادههای بک تست بسیار جذاب کند. با این حال، در زمان اجرای واقعی معامله، عملکرد استراتژی میتواند بسیار متفاوت باشد. نام دیگر این بایاس ” برازش منحنی” یا ” بایاس تجسس دادهها” است.
حذف بایاس بهینهسازی سخت است؛ زیرا استراتژیهای الگوریتمی معمولا شامل پارامترهای زیادی مـیباشـند. “پارامترها” در ایـن مـوارد ممكن است معيار ورودی/خروجی، دورههای نگاه به گذشته، دورههای میانگین یا فرکانس اندازهگیری نوسان باشند. بایاس بهینهسازی میتواند با حفظ تعداد پارامترها به اندازه حداقل ممكن و افزایش تعداد نقاط دادهای در مجموعه دادههای آموزشی، کمینـه شـود. در حقیقت، باید مراقب مورد دوم بود، زیرا نقاط آموزشی قدیمیتر میتوانند در معرض رژیم قبلی (مانند محیط مقرراتی) باشند و در نتیجه ربطی به استراتژی فعلی شما نداشته باشند. یک روش برای کمک به کاهش این بایاس، اجرای تحلیل حساسیت است. ایـن بـه معنی تغییر تدریجی پارامترها و رسم نمودار “سطح عملکرد” است. اگر سطح عملکرد پر فراز و نشیبی دارید، معمولا به این معنی است که یکی از پارامترها، پدیدهای را منعکس نمیکند و ساخته شده دادههای تست است.
اساسا این بایاس زمانی به وجود می آید که فرایند بهینهسازی بیش از حد انجام شده و موجب میشود که نتایج بک تست بسیار بهتر از عملکرد استراتژی در حالت واقعی شود. در مدلهای آماری مورد استفاده برای پیشبینی، بایاس تجسس دادههـا بـه شـدت مشاهده میشود.
بایاس آینده نگر (Look Ahead Bias)
این بایاس، زمانی وارد یک سیستم معاملاتی میشود که دادههای آینده بهطور تصادفی در شبیهسازی وارد شده باشند که آن دادهها در حال حاضر در دسترس نیستند. خطاهای بایاس آیندهنگر میتواند فوقالعاده ظریف باشند.
بهعبارت دیگر، این خطا اشاره به موقعیتی دارد که شما از اطلاعات آینده برای معاملات زمان حال استفاده نمایید . بهعنوان مثال، اگر قانون ورود به معامله به این صورت باشد که سیگنال مورد نظر در فاصله ۱ درصد پایینتر از کمترین قیمت روز خریداری شود، بایاس آیندهنگر را در استراتژی خود وارد کردهاید؛ چرا که تا زمان بسته شدن بازار در هر روز، کمترین قیمت معاملهشده دارایی مورد نظر مشخص نمیباشد.
برای اجتناب از این بایاس میتوانید از دادههای تاریخی به تاخیر افتاده استفاده نمایید. این دادهها به این معنا است که تمامی مقادیر کمی نظیر میانگین متحرک، بیشترین قیمت، کمترین قیمت و حتی حجم معاملات را براساس کندل روز قبل بهکار ببریم.
بایاس انتخاب (Survivorship Bias)
بایاس انتخاب، یک پدیده خطرناک است که برای انواع خاصی از استراتژیها، میتواند منجر به عملکرد بسیار بالایی شود و زمانی رخ میدهد که استراتژیها با مجموعه دادههایی آزمایش شونهد که سهام یا اوراق قبلی که ممکن است در یک نقطهای انتخاب شده باشند، در حال حاضر دیگر وجود نداشته باشند.
دو روش اصلی برای کاهش این بایاس در بک تست استراتژی وجود دارد. در مورد دادههای سهام، میتوان مجموعه دادههایی را خرید که شامل نهادهای از لیست خارج شده هستند؛ این مجموعه دادهها ارزان نیستند و معمولا تنها توسط شرکتهای نهادی مورد استفاده قرار میگیرند.
همچنین در روش دوم بهکارگیری مجموعه دادههای بهروزتر، احتمال آنکه سهمهای انتخابی، تحت تاثیر بایاس انتخاب باشند را کاهش میدهد، صرفا به این دلیل که احتمال خروج کلی سهام از لیست کم است.
همچنین میتوان با جمعآوری دادهها از نقطه فعلی به بعد، شروع به ساخت یک مجموعه داده عاری از بایاس انتخاب قابل اعتماد دارید که استراتژی٬های خود را روی آن بک تست میکنید.
بایاس شناختی (Cognitive Bias)
استراتژی که میتوانست موفق باشد، در طول زمانهای افت سرمایه، متوقف و در نتیجه منجر به عملکرد بسیار ضعیف نسبت به بک تست میشود. در نتیجه، اگرچه استراتژی ذاتا الگوریتمی است اما فاکتورهای روانشناختی نیز میتواند اثر زیادی بر سودآوری داشته باشند.
نکته این است که مطمئن شوید اگر شما افت سرمایهای با یک درصد مشخص را در طول بک تست دیدید، آنگاه باید انتظار داشته باشید در محیط معامله واقعی نیز رخ دهد و برای اینکه دوباره به سودآوری برسید باید صبر کنید.

نحوه بک تستگیری از یک استراتژی معاملاتی
دقت شود که در زمان بک تست یک استراتژی معاملاتی، این قاعده که عملکرد گذشته الزاما ضمانتی نسبت به بازدههای آینده ندارد را باید همیشه در نظر گرفت.
بهطور خلاصه، مجموعه پیچیدهای از فاکتورهایی که میتوانند شبیهسازی شوند تا یک بک تست واقعبینانه را تولید کنند وجود دارد. خطر بیش برازش، پاکسازی ضعیف دادهها، مدیریت نادرست هزینـههـای معاملاتی، تغییر رژیـم بـازار و محدودیتهای معاملاتی معمولا منجر به عملکرد بک تستی میشود که نسبت به استراتژی لحظهای بسیار متفاوت است.
گامهای کلیدی برای بک تستگیری یک استراتژی معاملاتی عبارت است از:
- انتخاب بخشهایی از بازار یا دارایی که شخص میخواهـد روی آن قسمت معامله کند.
- انتخاب دادههایی که شرایط متنوعی از بازار را پوشش دهند.
- انتخاب پلتفرمی که قابلیت کدنویسی و بک تست گرفتن از استراتژی را داشته باشد.
- ارزیابی سیستم بر مبنای پارامترهای معیار صورت گیرد.
تست استراتژی با استفاده از یک شبیهساز میتواند دید خوبی نسبت به مشکلاتی که ممکن است در طول اجرای استراتژی با آن روبرو شوید، به شما بدهد. شبیهساز مانند یک بورس رفتار میکند که می تواند مطابق با شرایط مختلف بـازار تنظیم شـود. برای تست استراتژی با استفاده از شبیهساز و پیاده سازی سیستم تست، به دانش درباره زبانهای برنامهنویسی ++C یا جاوا نیـز نیاز دارد. از آنجایی که بعضی از افـراد پیش زمینه فنی و تکنیکی و نیز آشنایی کافی با کدنویسی ندارند، بهتر اسـت بـرای ایـن کار از یک تیم مشاوره کمک بگیرند.
معمولا پارامترهای مرسوم ارزیابی یک سیستم معاملاتی شامل نسبت كـل سـود بـه ضرر، متوسط نسبت سود بـه ضـرر، نسبت موفقیت (تعداد معاملات موفـق بـه کـل معاملات)، ماکزیمم افت سرمایه، نسبت شارپ میشوند.
عملیات بهبود یک استراتژی
اگر یک استراتژی نتایج چشمگیری را در اولین مراحل بک تست ارائـه کـنـد، روشهای متداولی برای ارتقای آن وجود دارد. این که چگونه یک استراتژی را بدون وارد کردن بایاس بهینهسازی پالایش کرده و آن را تنها با چند پارامتر ساده نگه داریم بیش از آنکه یک علم باشد، یک هنر است. اصول کار در اینجا همانی است که در بهینهسازی پارامترها وجود داشت.
استراتژیهای سادهای وجود دارند که در بین معاملهگران به خوبی شناخته شده و هرچند که به نظر میرسد بازده آنها رو به کاهش است اما همچنـان هـم تـا حـدودی سودآور هستند. یک مثال از این استراتژیها، معاملات جفتی سهام است. دلیـل کـاهش بازده این استراتژیها این است که معاملهگران در حال استفاده از این فرصتهـای خریدوفروش با ریسک کم بوده و در نتیجه حاشیه سود حاصل از این استراتژی را از بین میبرند. با این حال این امکان وجود دارد که تغییرات کوچکی در استراتژی پایه ایجاد نمود که موجب افزایش بازده آن گردد. این تغییرات کوچک بسیار کمتر از استراتژی پایه شناخته شدهاند و در نتیجه معاملهگرها کمتر از آنها استفاده مینماینـد. این موارد گاهی اوقات کنار گذاشتن سهامی مشخص از دیدهبان بازار استراتژی را شامل میشود. برای مثال، معاملهگران معمولا ترجیح میدهند که سهام شرکتهای خودرویی را به دلیل تأثیر شدید اخبار بر قیمت آنها، از برنامه معاملات خـود حـذف کنند و یا اینکه زمانبندی ورود و خروج را تغییر دهند.
در هنگام اعمال این تغییرات بر روی استراتژی، ترجیح این است که آن تغییر در اقتصاد پایه و یا یک پدیده بازاری که به خوبی مورد مطالعـه قـرار گرفته است، ریشه داشته و بر اساس سعی و خطا نباشد در غیر این صورت بایاس بهینهسـازی بـه وجـود خواهد آمد.