بهینهیابی و بکتست، یک روح در دو بدن


در مقالهی پیشین از سری مقالات مرتبط با بهینهیابی به شرح و بررسی «چگونه برازش ناخواسته یا اصطلاحا overfitting را در بکتست یک استراتژی معاملاتی تشخیص دهیم؟» پرداختیم در این مقاله به شرح و بررسی «بهینهیابی و بکتست، یک روح در دو بدن» میپردازیم.
در صورت برقراری شرایط معاملات الگوریتمی در بازار هدف برای سنجش بازده استراتژیهای معاملاتی میتوانید از سفارش کد پایتون، سفارش کد mql و … برای کد کردن و بهینه یابی استراتژیهای خود استفاده کنید. و در عین حال سوای امکان سفارش اکسپرت میتوانید از سفارش اندیکاتور برای دریافت یک نمایش گرافیکی از محاسبات استراتژی خود بهره ببرید.
– – –
بهینهیابی و بکتست
در مقالات گذشته اشارههایی به نزدیکی بکتست و بهینهیابی داشتیم. حقیقت امر آن است که اعتبار یک بکتست تاثیر قابل توجهی بر نتایج بهینهیابی خواهد داشت. چرایی چنین رابطهای مشخص است دلیل این همبستگی آن است که پروسه بهینهیابی، یک استراتژی را از دریچه بکتست یا همان تست گذشته نگر بررسی میکند پس میتوان گفت که هرچه عملیات بکتست اصولیتر باشد نتایج بهینهیابی و انتظار سوددهی نیز بالاتر خواهد بود به عبارتی هرچه ورودی و متریال پروسه بهینهیابی دقیقتر باشد نتایج نیز مورد اعتمادتر خواهند بود. در کل دسترسی به یک مرجع مطلوب آموزش بهینه یابی میتواند بسیار مسیر را هموار سازد.

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

بنابراین بازه زمانی که تنها یک معامله از استراتژی را شامل شده دارای خطای 100 درصدی، دو معامله دارای خطای 50 درصدی و همینطور الی آخر خواهد بود. بنابراین برای رسیدن به خطای 5 درصدی به 400 معامله نیاز خواهیم داشت این راهنمای خوبی برای انتخاب بازه مورد نیاز برای بکتست خواهد بود.
باید دو نکته را در نظر بگیرید ذات این فرمول یک ذات بدبین است و من فکر میکنم این نوع از رفتار برای یک فرمول سنجش خطا رفتار مناسبی است بدین معنا که هرچه تعداد معاملات افزایش یابد توان هر معامله در کاهش خطای نمونه کاهش مییابد به بیان دیگر تبدیل خطایی صد درصدی به خطایی پنجاه درصدی بسیار ساده تر از تبدیل خطای پنج درصدی به خطای چهار درصدی خواهد بود، این موضوع کار را برای استراتژی های پیرو روندی سخت و افزایش اعتبار را برای استراتژی های سریع دشوار خواهد کرد.
در کنار این معیارها معیار مورد علاقهی من درجه آزادی نام دارد. با وجود اینکه شهرت این مبحث بیشتر مربوط به مباحث آماری است اما در نظر من درجه های آزادی بی ارتباط با فیزیک کوانتوم نیستند جایی که کوانتومها بستههایی از انرژی هستند ولی در علم آمار درجه آزادی مبین وجود بستههایی از جنس داده است. به منظور انتخاب بازهای مورد قبول برای بکتست فهم درجه آزادی استراتژی موضوعی حیاتی است. میتوان اینگونه گفت که داده نمونه ما از واحدهایی تغییر پذیر با نام درجههای آزادی تشکیل شده است. این ذرات سوخت پارامتر ها و قوانین استراتژی هستند.
برای یک پنجره زمانی مطلوب و معتبر برای بکتست داشتن حداقل درجه آزادی 90 درصد الزامی است. شما را بیش از این به پیچ و خم محاسبات وارد نخواهم کرد با این حال در حال طراحی محاسبهگری هستم که به شما در محاسبه درجهی آزادی و خطای نمونه کمک خواهد کرد فراموش نکنید که انتخاب بازه زمانی درست برای پروسه بک تست حیاتی و برای اعتبار پروسه بهینهیابی الزامیست. برای استفاده از این محاسبهگر کافی است در فیلد اول تعداد دادههای نمونه را وارد کنید یعنی برای مثال درصورت اجرای تست برروی 100 روز داده عدد 100 هم چنین برای 100 ساعت یا 100 دقیقه تست .
در فیلد دوم تعداد قوانین معاملاتی را وارد کنید برای مثال اگر با ورود rsi به منطقهای مشخص معامله میکنید میتوانید این را یک قانون در نظر بگیرید هر حالت از استراتژی شما که به یک معامله ختم میشود را یک قانون محسوب کنید در استراتژیهای اندیکاتوری معمولا میتوان تعداد اندیکاتورها را وارد کرد، با تایید فیلد دوم به تعداد قوانین شما فیلد خالی جدید اضافه خواهد شد دوره زمانی هر اندیکاتور را در این فیلدها وارد کنید.
برای مثال یک استراتژی دارای میانگین متحرک با دوره 50 و rsi با دوره 14 دو قانون و با مقادیر 50 و 40 خواهد داشت. درصورتی که اندیکاتور دارای بیش از یک پارامتر است و تنها در یک قانون معاملاتی کاربرد دارد پارامترها را جمع بزنید و در یکی از فیلدهای زیر مجموعه فیلد دوم وارد کنید و اگر اجزای آن به طور جداگانه در قوانین معاملاتی مختلف نقش دارند به تعداد قوانین اضافه کرده و میزان پارامتر مورد استفاده در آن بخش از اندیکاتور را به صورت جداگانه در یکی از فیلدهای زیرمجموعه فیلد دوم وارد کنید. به طور خلاصه باید تعداد دادههای درگیر در هر قانون را به دست آورید.
در فیلد بعدی فرمولی که برای محاسبه خطای نمونه توضیح دادیم را به شکل راحتی محاسبه کردهایم فقط کافیست تعداد معاملات را در فیلد وارد کنید در صورتی که DOF دارای مقداری بالاتر از 90 درصد و SAMPLE ERROR دارای مقداری کمتر از 5 درصد باشد میتوان گفت بکتست شما با توجه به میزان پیچیدگی استراتژی و ریتم ذاتی آن از نظر زمانی معتبر و قابل قبول است.

– – –
در صورت برقراری شرایط معاملات الگوریتمی در بازار هدف، سوای این بحث که میتوان استراتژیهای معاملاتی خود را به وسیله سفارش کد پایتون یا سفارش کد mql و سفارش اکسپرت کد کرد و در پروسه بک تست اعتبار سنجی نمود. همچنین میتوان از طریق سفارش اندیکاتور به آنها یک جنبه نمایشی نمایانتری برای تسهیل تحلیل در سابقه نماد داد.
– – –
در مقاله بعدی به بررسی «تابع هدف، چشم بصیرت طراحی استراتژی در بهینه یابی» میپردازیم که به راههای تشخیص برازش خواهیم پرداخت و به زودی محصولاتی مرتبط با تحلیل و بهینهیابی استراتژیهای معاملاتی در اختیار شما عزیزان قرار خواهد گرفت.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.