همه ما از عدم اطمینان در آینده سرمایهگذاری و از دست دادن پول متنفریم و درصدد دوری از این دو اتفاق هستیم. بک تست کردن (Backtesting)، فرآیندی است برای حل این دو مشکل که در عین حال مهارتهای معاملاتی شما را بهبود میبخشد. بک تست کردن یا بک تستنینگ (Backtesting)، در حقیقت یک شبیهسازی ریاضی است که توسط معاملهگران برای ارزیابی عملکرد استراتژی معاملاتی استفاده میشود. این شبیهسازی از دادههای بازار در گذشته استفاده میکند تا عملکرد استراتژی معاملاتی کنونی سنجیده شود. در ادامه این مطلب از میهن بلاکچین مفهوم بک تستینگ و تکنینکهای آن را شرح میدهیم.
بک تست کردن چیست؟
بک تست کردن (Backtesting) روشی است که با استفاده از دادههای پیشین بازار، عیار یک استراتژی معاملاتی سنجیده میشود. به زبان ساده، بک تست کردن راهی برای معاملهگران است تا ببینند آیا یک استراتژی معاملاتی در بازار کنونی میتواند سودآور باشد یا نه. در حقیقت با استفاده از این روش، معاملهگران و تریدرها استراتژیهای معاملاتی که از نظر تاریخی سودآور نبودهاند را حذف میکنند.
هیچ تضمینی بر تکرار تاریخ وجود ندارد و نمیتوان گفت اگر استراتژی خاصی در گذشته جواب داده، حتما در آینده نیز موثر است. بنابراین بک تست کردن هنوز هم یکی از مطمئنترین راهها برای شناسایی استراتژیهای قوی به شمار میرود. این کار برای شبیهسازی و سبک و سنگین کردن استراتژیهای مختلف بسیار مهم است و به این ترتیب، میتوان بدون از دست دادن پول، آنچه در ذهن داریم را امتحان کنیم.
در سالهای اخیر، محبوبیت ابزارهای معاملاتی در بازار ارز دیجیتال به طور چشمگیری افزایش یافته و بک تستینگ نیز از این قاعده مستثنی نیست. امروزه توصیه میشود تریدرها پیش از فعالیت در بازار اصلی، تمام استراتژیهای خود را به طور کامل آزمایش کنند تا از پتانسیل عملکرد بهینه آنها اطمینان حاصل نمایند. در حقیقت با استفاده از این روش میتوانید به مدیریت ریسک معاملات ارزهای دیجیتال بپردازید.
در زمینه امور مالی، بک تست کردن میزان بقای استراتژی ترید مورد نظر را بررسی میکند. به عبارت دیگر، این شیوه از دادههای تاریخی استفاده میکند تا بتواند طرز به انجام رسیدن یک استراتژی را ببیند. اگر بک تستینگ نتیجه مطلوبی داشت، تریدرها و سرمایهگذاران میتوانند گام بعدی را برداشته و استراتژی مورد نظر را در یک محیط حقیقی مورد استفاده قرار دهند.
اما در چنین موردی نتایج خوب به چه معنایی هستند؟ به صورت کلی باید گفت که هدف Backtesting در ترید در حقیقت، تحلیل کردن خطرات احتمالی و پتانسیل سوددهی یک استراتژی خاص است. استراتژی سرمایهگذاری میتواند بر اساس بازخوردهای آماری، گسترش یافته و بهینهسازی شود تا نتایج احتمالی را به حداکثر بازدهی خود برسانیم. یک فرایند بک تستینگ در صورت اجرای صحیح، این اطمینان را به ما میدهد که استراتژی مورد آزمایش ما در صورت ورود به یک محیط تریدینگ حقیقی، قابل اجرا خواهد بود.
به شکل طبیعی یک پلتفرم یا ابزار بک تست کردن، میتواند علاوه بر تمام مواردی که گفتیم، در راستای نشان دادن خطرناک بودن یا قابل اجرا نبودن یک استراتژی نیز سودمند باشد. اگر نتایج حاصل شده از بک تستینگ ما حاکی از عملکرد غیربهینه باشند، ایده معامله مورد نظر یا باید رد یا اصلاح شود. با این وجود لازم است تا شرایط بازاری که ایده ما در بستر آن مورد آزمایش قرار گرفته است را نیز در نظر داشته باشیم؛ این بدان معناست که همان روند یکسان بک تست کردن در شرایط متفاوتی از بازار، میتواند نتایج متناقضی را نسبت به دفعه قبل نشان دهد.
چرا بک تست کردن اهمیت دارد؟
بک تست کردن یا بک تستینگ، ابزاری است که به معاملهگران و سرمایهگذاران این امکان را میدهد تا پیش از فعالیت در بازار اصلی رمزارزها، مدلهای تحلیلی و استراتژیهای معاملاتی خود را امتحان کنند. در حقیقت اگر یک استراتژی معاملاتی بر اساس دادههای گذشته بازار ناکارآمد بوده باشد، امکان عملکرد ضعیف آن همچنان محتمل خواهد بود و برعکس اگر یک استراتژی در گذشته سودآور باشد، میتواند همچنان به سودآوری خود ادامه دهد.
با این کار معاملهگران و سرمایهگذاران کلیتی از بازار پیشروی خود را بررسی خواهند کرد. به عنوان مثال یک معاملهگر که تمایل دارد با تحلیل فاکتورهای ماکرو و اقتصاد کلان و همچنان استفاده از سیگنالهای تکنیکال روند بازار را پیشبینی کند، میتواند برای شناسایی الگوهای تکرار شونده و استفاده از آن برای کسب سود بیشتر از Backtesting استفاده کند.
پیشنیازهای بک تستینگ
پیش از این که یک نمونه از بک تستینگ را مورد بررسی قرار دهید، لازم است تا موضوعی را تعیین کنید. باید در قدم اول مشخص کنید که چه نوع تریدری هستید؛ آیا شما یک تریدر محافظهکار هستید؟ معاملات محافظهکارانه مبتنیبر تصمیمات هستند و در چنین موردی معمولا این تریدرها هستند که زمان ورود و خروج خود به یک معامله را تعیین میکنند. بنابر همین روال میتوان چنین شیوهای را یک استراتژی به نسبت آزاد و بیپایان دانست که در بستر آن اکثر تصمیمات به ارزیابی تریدرها از شرایط پیش رو بستگی دارد. همانطور که ممکن است انتظار داشته باشید، بک تست کردن در رابطه با سرمایهگذاری محافظهکارانه امری بسیار نامربوط به نظر میرسد. البته این ماجرا بدین معنی نیست که اگر تریدر محافظهکاری هستید نباید بک تست کنید یا اصلا از معاملات کاغذی (Paper Trading) و پیادهکردن ایدههای خود روی کاغذ استفاده نکنید، بلکه بدان معناست که ممکن است نتایج به دست آمده شما در برخی موارد قابل اعتماد نباشند.
معاملات سیستماتیک به موضوع مورد بحث ما نزدیکتر هستند. معاملهگران سیستماتیک به سیستم معاملاتی متکی هستند که تعریفهای مربوط به خود را داشته و به صورت دقیق به چنین افرادی زمان ورود به یک معامله، یا خروج از آن را نشان میدهد. با توجه به این که این افراد کنترل کاملی روی ماهیت استراتژی خود دارند، سیگنالهای ورود و خروجشان نیز توسط همین استراتژی تعیین میشود. یک استراتژی سیستماتیک به صورت زیر است:
- هنگامی که A و B به صورت همزمان اتفاق افتادند، وارد معامله شوید.
- هنگامی که در ادامه، رویداد X اتفاق افتاد از معامله خارج شوید.
برخی از تریدرها این رویکرد را ترجیح میدهند. چنین روندی میتواند تصمیمات احساسی را کنار گذاشته و یک سطح منطقی اطمینان از سودده بودن یک سیستم معاملاتی را پدید بیاورد. البته در این صورت نیز هنوز هیچ تضمینی وجود ندارد.
به همین دلیل است که حصول اطمینان از داشتن قوانین خاصی برای ورود و خروج معاملات در سیستم شخصی خود از اهمیت بالایی برخوردار است. اگر استراتژی مورد نظر به خوبی تعریف نشده باشد، نتایج نیز متناقض خواهند بود. همانطور که ممکن است انتظار داشته باشید، این سبک از انواع تریدینگ در زمینه معاملات الگوریتمی محبوبیت بیشتری دارند.
سیستم Backtesting چگونه عمل میکند؟
بک تست کردن با استفاده از مجموعه دادههایی که گمراهکننده هستند، میتواند به نتایج نامطلوبی منجر شود. این امر دلیل اصلی اهمیت یک نمونه خوب برای بک تستینگ است که شرایط آن لحظه بازار را به خوبی منعکس کند. تمام موضوعاتی که در این رابطه و شرایط آن بیان کردیم، میتوانند بسیار دشوار باشند؛ زیرا شرایط بازار دائما در حال تغییر است.
پیش از این که یک استراتژی را مورد بک تست کردن قرار دهید، تعیین نتیجهای که میخواهید از این عمل دریافت کنید، میتواند به شما کمک کند. چه چیزی میتواند این استراتژی را قابل اجرا کند؟ در خلاف این جهت نیز این سوال مطرح است که چه چیزی میتواند فرضیات شما را بر هم بزند؟ اگر شما اطلاعات کافی را در مورد این پیش زمینهها داشته باشید، این امکان که نتایج حاصل شده از بک تستینگ بتوانند بنیان کار شما را تحت تاثیر قرار دهند، کاهش مییابد.
فرایند بک تست کردن باید هزینه یا فی تبادلات، برداشتها و هر هزینه دیگری که ممکن است ایده شما به آن منجر شود را نیز شامل شود. نکته مهم دیگری که وجود دارد، این است که نرم افزار بک تست کردن میتواند درست مانند دسترسی داشتن به دادههای با کیفیت بازار تا حدی گرانقیمت باشد.
این را به خاطر داشته باشید که بک تست کردن در نهایت تنها یک آزمایش یا تست است. درست شبیه به تحلیل تکنیکال و نموداربندیها، هیچ تضمینی برای درست کار کردن این آزمایش وجود ندارد، حتی در شرایطی که بک تست کردن ما نتایجی عالی و حاصل از دادههای پیشین را در اختیار ما قرار بدهد.
اکنون بیایید یک استراتژی ساده معاملاتی را بک تست کنیم. در ادامه نمونهای از ایده ما را میبینید:
- ما در اولین روند بسته شدن نمودار و پس از تشکیل الگوی تقاطع طلایی (Golden Cross)، یک بیت کوین خریداری میکنیم. ما در شرایطی یک الگوی تقاطع طلایی را در نظر میگیریم که روند میانگین متحرک (Moving Average) ۵۰ روزه از روند متوسط حرکتی ۲۰۰ روزه، عبور کرده و در مکان بالاتری در نمودار قرار بگیرد.
- ما در اولین روز بسته شدن کندل و پس از این که الگوی صلیب مرگ شکل گرفت، یک بیت کوین را به فروش میرسانیم. هنگامی الگوی تقاطع مرگ را تعریف میکنیم که روند متوسط حرکتی ۲۰۰ روزه در جایگاه پایینتری نسبت به روند متوسط حرکتی ۵۰ روزه در نمودار قرار بگیرد.
همانطور که میبینید، ما حتی بازه زمانی معتبر بودن استراتژی مورد بحث را نیز تعریف کردیم؛ این بدان معناست که ما چنین روندی را در صورتی که یک تقاطع طلایی در نمودار ۴ ساعته شکل بگیرد، یک سیگنال مناسب به حساب نمیآوریم.
در رابطه با این مثال، ما تنها به بازه زمانی گذشته و تا آغاز سال ۲۰۱۹ مینگریم. با این وجود اگر میخواهید نتایج دقیقتر و قابل اعتمادتری را به دست بیاورید، میتوانید گذشتههای دورتر را در زمان تحرک قیمتی بیت کوین مورد بررسی قرار دهید.
حالا بیایید سیگنالهای معاملاتی که این سیستم در این بازه زمانی تولید میکند را ببینیم:
- در قیمت ۵۴۰۰ دلار خرید کنید
- در قیمت ۹۲۰۰ دلار بفروشید
- در قیمت ۹۶۰۰ دلار خرید کنید
- در قیمت ۶۷۰۰ بفروشید
- در قیمت ۹۰۰۰ دلار خرید کنید
در این نمودار میتوانید سیگنالهای ما را به صورت مشهود ببینید:
اولین ترید ما میتوانست حدود ۳۸۰۰ دلار سود داشته باشد و این در حالی است که دومین ترید ما میتوانست منجر به از دست رفتن ۲۹۰۰ دلار شود. این بدان معناست که نسبت اختلاف سود و زیان (P&L) ما در این شرایط به میزان ۹۰۰ دلار بوده است.
ارزیابی نتایج Backtesting
این نتایج چه چیزی را نشان میدهند؟ استراتژی ما میتوانست بازده مطلوبی داشته باشد، اما بازگشت سرمایه چشمگیری را نشان نمیدهد. میتوانیم اختلاف سود و زیان یا در اصطلاح P&L خود را به شدت افزایش دهیم، اما این کار هدف اصلی بک تستینگ را از بین میبرد. اگر ما به برنامهریزی خود پایبند نباشیم، نتایج نیز غیر قابل اعتماد خواهند بود.
با وجود اینکه این مثالی از یک استراتژی سیستماتیک است، اما باید به یک نکته توجه داشته باشیم. معامله زیاندهی که از ۹۶۰۰ دلار تا ۶۷۰۰ دلار اتفاق افتاد، در طول ماه مارس سال ۲۰۲۰ و در نتیجه شیوع COVID-19 شکل گرفت. این نمونهای از رویدادهای ناگواری است که میتواند اثرات بسیار بزرگی روی هر یک از سیستمهای معاملاتی داشته باشد. این یکی دیگر از دلایلی است که ارزش نگاه کردن به گذشته و تحقیق دقیقتر برای بررسی ضررهای احتمالی را نشان میدهد تا ببینیم زیان مورد بحث ما یک رویداد مستقل جانبی بوده یا از استراتژی ما حاصل شده است.
در هر صورت این نمونهای ساده، از چیزی بود که به آن بک تست کردن میگوییم. ممکن است اگر به گذشته نگاه کنیم و از دادههای بیشتر و اندیکاتورهای تکنیکال متفاوتی استفاده کنیم، بتوانیم سیگنالهای تولید شده توسط این استراتژی را تقویت کنیم و آن را به یک استراتژی معاملاتی قدرتمند بدل کنیم.
با وجود تمام این تفاسیر، نتایج حاصل از بک تستینگ چه چیزهای دیگری را میتواند به شما نشان دهد؟
- ابعاد نوسانها: حداکثر نزول و صعود معامله شما
- آشکارسازی: میزان سرمایه مورد نیاز برای استراتژی مورد نظر از سبد سهام کلی شما
- بازدهی سالانه: درصد بازده سالانه استراتژی مورد آزمایش در طول یک سال
- نرخ یا نسبت برد-باخت: چه تعدادی از تریدها یا معاملات به برد شما ختم میشوند و چه تعدادی از آنها به باخت شما
- قیمت میانگین ورودی: میانگین قیمتی ورودی و خروجی شما در طول استراتژی مورد آزمایش
انواع روشهای Backtesting و مزایا و معایب آنها
به طور کلی دو روش مختلف برای بک تست کردن استراتژیهای معاملاتی وجود دارد؛ بک تستینگ دستی (Manual Backtesting) که به آن بک تست تصمیممحور (Discretionary Backtesting) هم گفته میشود و بک تستینگ سیستماتیک (Systematic Backtesting). در ادامه به تعریف و مزایا و معایب هر کدام از این روشها میپردازیم.
مزایا و معایب بک تست دستی
معاملهگران تصمیم محور با هر سیگنالی که دریافت میکنند، آگاهانه تصمیم میگیرند که سیگنال صحیح را در بازار واقعی اعمال کنند. این دسته از معاملهگرها میتوانند با استفاده از ابزارهای تحلیلی مانند تریدینگ ویو، به صورت دستی فرآیند بک تستینگ را انجام دهند.
به عنوان مثال، یک معاملهگر ممکن است بخواهد با استفاده از استراتژی تقاطع میانگین متحرک ساده، به بازار وارد شود. این معاملهگر باید با استفاده از تریدینگ ویو، میانگینهای متحرک مورد نظر خود را روی نمودار انتخابی فعال کند. در مرحله بعد با انتخاب گزینه Replay، باید دوره زمانی مشخصی را برای بک تست کردن مشخص کند.
پس از آن با فعالسازی گزینه Replay، کندلها یکی پس از دیگری روی نمودار مشخص شده و این معاملهگرها میتوانند با استفاده از این روند، تصمیم نهایی خود را بگیرند.
بک تست کردن دستی، روشی عالی برای آموختن کنترل احساسات هنگام معامله است. حتی ممکن است در طول این فرآیند، برخی از احساساتی که هنگام معامله در بازار واقعی تجربه میکنید را هم حس کنید. علاوهبراین، بک تستینگ دستی چگونگی کارکرد استراتژی را به شما نشان میدهد و قوانین آن را بررسی میکند.
اما مانند هر روش معاملاتی، بک تست کردن دستی هم عیبهای خود را دارد. یکی از مهمترین معایب بک تستینگ دستی، زمانبر بودن آن است. در حقیقت ممکن است این فرآیند، چند ساعت به طول بیانجامد و در نهایت متوجه شوید یک استراتژی به درد نمیخورد و چیزی عایدتان نشود. (البته فراموش نکنید که این اطلاعات میتوانند ارزشمند باشند.)
علاوه بر این، Backtesting دستی آنقدر هم روشی قوی نیست؛ چرا که مقدار دادهای که استراتژی خود را روی آن آزمایش میکنید، محدود است. در نهایت، در این روش هزینههای معاملاتی شبیهسازی نمیشوند و خود معاملهگر باید آنها را تخمین بزند.
معایب بک تستینگ دستی در یک نگاه:
- زمانبر است.
- مقدار داده انتخابی محدود است.
- هزینههای معاملاتی را شبیهسازی نمیکند.
مزایا و معایب بک تست سیستماتیک
یک معاملهگر سیستماتیک از مزایای فناوری در معاملات خود استفاده میکند. در حقیقت این دسته از معاملهگران استراتژی خود را در قالب کدهای کامپیوتری درآورده و پس از آن با استفاده از دادههای تاریخی بازار، ارزیابی میکنند.
از آنجایی که کامپیوترهای امروزی قدرت پردازشی بالایی دارند، این دسته از تریدرها میتوانند به سادگی استراتژیهای معاملاتی خود را در چارچوبهای زمانی طولانیمدت آزمایش کنند و در عین حال، ورودیهای خاصی را برای این کار بهینهسازی نمایند. این دسته از معاملهگران از بک تست کردن برای شناسایی استراتژیهای قوی و ضعیف استفاده میکنند.
داشتن دانش لازم برای توسعه یک استراتژی الگوریتمی، به همراه دانش تجزیه و تحلیل دادهها برای ارزیابی یک استراتژی، چالش مهمی است که پیشروی معاملهگران سیستماتیک قرار دارد. علاوه بر این، در این روش مهم است که از دادههای با کیفیت بالا استفاده شود.
از چه دادههایی برای بک تست کردن میتوان استفاده کرد؟
معاملهگران سیستماتیک به دنبال آن هستند تا حد امکان، با استفاده از بک تستینگ شرایط بازار واقعی را شبیهسازی کنند. این معاملهگران در روشهای بک تستینگ خود هزینههای معاملاتی مختلف مانند کارمزد صرافیها، اسپردها (spreads) و اسلیپیج (slippage) را ارزیابی میکنند. اگرچه تاثیر این هزینهها در معاملات فردی ممکن است چندان مشخص نباشد، نادیده گرفتن این دادههای کوچک میتواند صحت بک تستینگ را با مشکل مواجه کند.
دادههای مختلفی از بازار در فرآیند Backtesting استفاده میشود که باید از آنها مطلع باشید. از جمله این دادهها میتواند به کندل استیکها (نمودارهای شمعی) و دفاتر سفارش یا همان اوردر بوکها (Order book) اشاره کرد. البته معمولا دفاتر سفارش، قابل اعتمادتر هستند.
استفاده از دادههای نمودار کندل استیک OHLCV در بک تستینگ
نمودارهای OHLCV، نمودارهایی هستند که چهار قیمت باز (OPEN)، قیمت بسته (CLOSE)، قیمت بالا (HIGH) و قیمت پایین (LOW) را در هر بازه زمانی به ما نشان میدهند. به عنوان مثال، اگر نمودار روزانه OHLCV بیت کوین را مشاهده کنید، با صفحه گستردهای از دادههای قیمتی روبهرو میشوید که در آن، قیمتهای باز، بسته، بالا و پایین مشخص شده است. در صورتی که تایم فریم را به یک دقیقه تغییر دهید، تغییرات این قیمتها در هر دقیقه مشخص خواهد شد.
اما استفاده از نمودار OHLCV معایب مختلفی دارد. اولا مشخص نیست که در هر قیمت چه حجم معاملاتی انجام شده است. علاوه بر این، در صورتی که حجم بالایی از پول را میخواهید در معامله خود استفاده کنید، هیچ تضمینی برای وجود نقدینگی کافی برای انجام این معامله، بدون به هم ریختن بازار وجود ندارد. در حقیقت، این مسئله ممکن است بر نتایج بک تستینگ شما تاثیر منفی بگذارد.
اما چرا معاملهگران برای بک تست کردن ابتدا از نمودارهای کندل استیک استفاده میکنند؟ پاسخ ساده است! این یکی از سادهترین راهها است و زمان چندانی نمیگیرد. با این حال، باید توجه داشت که نتایج به دست آمده از این نمودارها ممکن است قابل اعتماد نباشند و دادههایی که شما به دنبال آن بودید را فراهم نکنند.
استفاده از دفاتر سفارش در Backtesting
دفاتر سفارش یکی از بهترین منابع داده برای حل بسیاری از چالشهای نمودارهای کندل استیک هستند. دفاتر سفارش شامل اسنپشاتهایی از بازار است که اطلاعات مختلفی از جمله قیمتها، حجمهای معاملاتی و عمق بازار را دربر دارد. با استفاده از دادههای موجود در اوردر بوکها، نمایش بهتری از سفارشهای موجود در هر بازه زمانی را در اختیار خواهید داشت.
اسنپشاتهای دفاتر سفارش این امکان را به توسعهدهندگان میدهد تا هنگام ارزیابی و آزمایش یک استراتژی معاملاتی، تفاوت بین قیمت فروشنده و قیمت خریدار (Bid-Ask Spread)، اسلیپیج و نقدینگی را شبیهسازی کنند.
یکی از بزرگترین چالشهایی که هنگام استفاده از اسنپشاتها وجود دارد، مسئله دسترسی به دادههاست. در حقیقت، حجم بالایی از دادهها در اسنپشاتهای صرافیها وجود دارد و ممکن است آنها به دلیل هزینههای بالای ذخیرهسازی، از همه این دادهها نگهداری نکنند. بنابراین توسعهدهندگان باید شخصا دادههای مورد نیاز را از صرافیها جمعآوری کرده یا از طریق پلتفرمهای شخص ثالث، به اسنپشاتهای دفاتر سفارش دسترسی پیدا کنند.
بک تست کردن خودکار چیست؟
معلامات الگوریتمی (معروف به معاملات خودکار یا Black-Box تریدینگ)، آن دسته از معاملات هستند که تریدرها با استفاده از یک برنامه کامپیوتری و مجموعهای از دستورالعملها انجام میدهند. بنابراین فرآیند بک تستینگ آنها هم میتواند به صورت خودکار انجام شود. با پیادهسازی این روش، میتوانیم بک تستینگ خود را طوری برنامهریزی کنیم تا به نتایج و آمار مفیدی دست پیدا کنیم و بتوانیم عملکرد یک استراتژی معاملاتی را ارزیابی کنیم.
اما عملکرد سیستمهای معاملاتی خودکار، معمولا با استفاده از پارامترهای مختلفی از جمله سود و زیان (P&L)، نسبت موفقیت و نسبت شارپ سنجیده میشود که در ادامه هرکدام از آنها را بررسی خواهیم کرد.
از کدام زبان برنامهنویسی استفاده کنیم؟
پیش از انتخاب یک پلتفرم مشخص برای بک تست کردن استراتژی خود، حتما از اینکه آن پلتفرم از بازارهای دلخواه شما پشتیبانی میکنند اطمینان حاصل کنید. همچنین زبان برنامهنویسی مشخصی را برای استراتژی خود انتخاب کنید. از جمله زبانهای برنامهنویسی رایج میتوان به C++، R، MATLAB و پایتون اشاره کرد.
علاوه بر این، برخی از سرویسها و پلتفرمهای شخص ثالث وجود دارند که از آنها میتوانید برای فرآیند بک تست کردن استفاده کنید. از جمله این پلتفرمها میتوان به آلتریدی (Altrady)، هولدرلب (Holderlab) و شریمپی (Shrimpy) اشاره کرد.
تحلیل سود و زیان (P&L)
زمانی که شما استراتژی معینی را برای بک تست کردن انتخاب کردید، بدون شک به دنبال سود احتمالی حاصل از آن میگردید و این رقم بیش از همه چیز شما را جذب خواهد کرد. بک تست کردن معمولا به شما میزان سود و زیان احتمالیتان را ارائه میدهد. به این ترتیب، میتوانید نموداری از میزان سرمایه احتمالی خود در صورت استفاده از استراتژی تعیینشده را داشته باشید. به این نمودار منحنی سرمایه (Equity Curve) گفته میشود.
منحنی سرمایه در اصل نموداری است که میزان رشد سرمایه را پس از هر معامله نشان میدهد. علاوه بر این، با تحلیل سود و زیان هنگام بک تست کردن، میانگین سود و ضرر هر معامله بر اساس استراتژی شما مشخص میشود و با استفاده از میانگین آنها در نهایت میتوانید نسبت ریسک به پاداش (Risk-to-Reward Ratio) استراتژی خود را تعیین کنید.
به عنوان مثال، در صورتی که میانگین سود (برنده شدن) استراتژی شما ۱۰۰ دلار و میانگین ضرر (بازنده شدن) آن ۵۰ دلار باشد، نسبت ریسک به پایاش شما ۲ به ۱ خواهد بود.
نسبت موفقیت و نسبت شارپ
نسبت موفقیت یا Success Ratio، همان نسبت برد استراتژی شماست. در حقیقت اگر از هر ۱۰۰ معاملهای که با استراتژی شما انجام میشود ۵۸ مورد آن سودآور باشد، نسبت موفقیت یا برد آن ۵۸٪ خواهد بود. با این حال، نسبت برد به خودی خود معنای خاصی ندارد و غالبا گمراه کننده است. به همین خاطر، بهتر است نسبت موفقیت استراتژی را با میانگین ضرر و سود ادغام کرده و از آن استفاده نمایید. به عنوان مثال، در صورتی که نسبت موفقیت یک استراتژی ۵۸٪ و نسبت ریسک به پاداش آن دو به یک باشد، این استراتژی بسیار سودآور خواهد بود.
علاوه بر نسبت موفقیت، پارامتر دیگری به نام نسبت شارپ (Sharpe Ratio) نیز در بک تستینگ مورد بررسی قرار میگیرد. نسبت شارپ را به صورت نسبت بازدهی به ریسک آن را میسنجد و مشخص میکند، سود یک معامله نسبت به ریسک آن باید چه مقدار باشد. در حقیقت هرچه نسبت شارپ یک معامله بالاتر باشد، استراتژی به کار گرفته شده بهتر بوده و احتمالا با ریسک کمتری همراه خواهد بود. نسبت شارپ به تریدرها کمک میکند تا دو استراتژی کاملا متفاوت را بر اساس میزان ریسک آنها و بازدهی احتمالی مقایسه کنند.
بک تست کردن شبیهسازیشده به چه معناست؟
بک تستینگ شبیهسازی شده همان ارزیابی یک استراتژی معاملاتی بر اساس دادههای تاریخی است که محیط بازار را شبیهسازی میکند. همانطور که بالاتر گفتیم، بک تستینگ خودکار با استفاده از برنامهنویسی و کدهای کامپیوتری با هدف تسریع فرآیند ارزیابی استراتژی انجام میشود. این روش میتواند بسته به قدرت پردازشی سیستم کامپیوتر شما، در عرض چند دقیقه استراتژی انتخابی را روی دادههای مربوط به چندین ماه ارزیابی کرده و نتایج را به شما نشان دهد.
در مقابل بک تستینگ خودکار، بک تستینگ دستی قرار گرفته است. همانطور که پیش از این توضیح دادیم، در این فرآیند معاملهگر، یک برهه زمانی مشخصی را انتخاب کرده و پس از آن استراتژی خود را روی دادههای بازار امتحان میکند. شبیهسازی دستی معمولا زمانبر است و احتمال خطا در آن وجود دارد.
چگونه استراتژیهای معاملاتی بیت کوین را بک تست کنیم؟
چندین راه مختلف برای بک تست کردن استراتژیهای معاملاتی بیت کوین وجود دارد. با این حال، برای انتخاب بهترین راه باید حتما این سوالات را مد نظر قرار دهید:
- آیا برنامهنویسی بلدید؟
- آیا حاضرید برای بک تست کردن به یک سرویس شخص ثالث پول بدهید و خدمات آن را خریداری کنید؟
اگر شما یک برنامهنویس و توسعهدهنده هستید، گزینههای بیشتری مقابل شما قرار دارد. احتمالا بهترین کار برای شما، توسعه فرآیند بک تستینگ با استفاده از زبان برنامهنویسی است که با آن احساس راحتی بیشتری دارید. انتخاب زبان برنامهنویسی مناسب به شما انعطافپذیری و کنترل بیشتری روی کارهایی که میتوانید انجام دهید ارائه میکند. همانطور که بالاتر گفتیم C++، R،MATLAB و پایتون از جمله زبانهای برنامهنویسی رایجی هستند که معاملهگران برای توسعه بک تستینگ خود از آنها استفاده میکنند. با این حال، دستیابی به دادههای باکیفیت بالا همچنان میتواند برای شما چالش برانگیز باشد.
اما در صورتی که برنامهنویسی بلد نیستید یا تمایلی به استفاده از کدهای کامپیوتری ندارید، میتوانید از پلتفرمها یا نرمافزارهای شخص ثالث استفاده کنید. به طور کلی، این پلتفرمها و نرمافزارها به شما این امکان را میدهند تا استراتژی خود را روی دادههای پیشین بازار امتحان کنید. با این حال، علیرغم امکانات فراهم شده، شما هیچ کنترلی روی کیفیت دادههای فراهمشده ندارید. همچنین برای استفاده از این خدمات، معمولا باید هزینه پرداخت کنید.
در صورتی که به دنبال کمهزینهترین روش برای بک تست کردن استراتژی معاملاتی خود هستید، بهتر است خودتان آن را به صورت دستی امتحان کنید. همانطور که گفتیم، این روش بسیار زمانبر است اما به شما این امکان را میدهد تا بدون هزینههای گزاف، کارایی استراتژی خود را ارزیابی کنید. البته هزینههای معاملاتی از جمله اسپرد و اسلیپیج، معمولا در این روش نادیده گرفته میشود؛ به همین دلیل حتما آنها را در معاملات خود مدنظر قرار دهید.
چگونه نتایج حاصل از بک تست یک استراتژی را ارزیابی کنیم؟
معاملهگران بیتجربه و آماتور صرفا روی تحلیل سود و زیان حاصل تمرکز میکنند. با این حال، درنظر گرفتن تصویر بزرگتری از استراتژی انتخابی اهمیت ویژهای دارد. نسبت موفقیت، میانگین سود و ضرر و نسبت شارپ برای درک نتایج یک Backtest بسیار مهم هستند و باید در نظر گرفته شوند.
علاوه بر این، باید به بازه زمانی که برای بک تست کردن یک استراتژی انتخاب شده است توجه کنید. هرچه این بازه طولانیتر باشد، احتمال بیشتری وجود دارد که وضعیتهای مختلف بازار درنظر گرفته شده باشد. معمولا بازههای زمانی کوتاهمدت عیار استراتژیها را به خوبی مشخص نمیکنند.
در نهایت حداکثر ضرر احتمالی را در نظر بگیرید. حداکثر ضرر (Maximum Drawdown) زمانی رخ میدهد که بازار در وضعیت ریزشی قرار میگیرد. در صورتی که این ریزش بسیار زیاد باشد، ممکن است پول کافی برای ارزیابی استراتژی شما وجود نداشته باشد و به در بسته بخورید. این مسئله، زمانی که از لوریج در معاملات خود استفاده میکنید، اهمیت دوچندان پیدا میکند. به همین خاطر، بسیاری از معاملهگران پیشنهاد میکنند، حداقل ۵۰% بیشتر از حداکثر ضرر احتمالی که در نتایج حاصل از بک تستینگ به دست میآورید، انتظار افت داشته باشید. این به خاطر این است که در بازارهای واقعی، معمولا میزان ریزش بیشتر است.
چه زمانی باید به نتایج حاصل از بک تست شک کرد؟
به دلیل ماهیت تکنیکال فرآیند بک تست کردن، گاهی اوقات تشخیص قابل اعتماد بودن نتایج دشوار است. مواردی که در ادامه بررسی میکنیم برخی از مسائلی هستند که میتوانید با استفاده از آنها، صحت نتایج را بررسی کنید. اگرچه ممکن است این موارد کامل نباشند، اما سعی کردهایم تا رایجترین آنها را بررسی کنیم.
- بهبود عملکرد استراتژی پس از هر معامله: در صورتی که عملکرد استراتژی شما در هر معامله هنگام بک تست کردن بهتر میشود، احتمالا یک خطای محاسباتی در منطق معاملات خود داشتهاید.
- رشد تصاعدی مداوم در مقدار سرمایه مفروض در فرآیند بک تست: شما در فرآیند بک تست مقداری سرمایه مفروض دارید و تمایل دارید ببینید این رقم پس از اجرای استراتژی معاملاتی چه تغییری میکند. در صورتی که این رقم به صورت تصاعدی رشد کند، احتمال وجود خطا وجود دارد و ممکن است در استفاده از نمودارهای OHLCV اشتباه کرده یا یک خطای محاسباتی داشته باشید.
- عدم کاهش پول شما هنگام استفاده از استراتژیهای مرتبط با معاملات با فرکانس بالا؛ HFT: به فرآیندی اطلاق میشود که یک سیستم یا الگوریتم کامپیوتری تعداد بسیار زیادی از معاملات را در کسری از زمان برای شما انجام میدهد. در این دسته از معاملات، معمولا به دلیل کارمزد صرافیها، مقداری از پول شما کم میشود. با این حال، اگر در فرآیند بک تستینگ متوجه شدید پول شما کاسته نمیشود، احتمالا در محاسبات خود کارمزدها را درنظر نگرفتهاید.
- عدم تفاوت میان بازارهای با نقدینگی پایین و بالا: بدون شک معامله در بازارهای با نقدینگی بالا و پایین نتایج یکسانی ندارد و در صورتی که بک تست شما نتایج یکسانی ارائه میکند، احتمالا خطایی وجود دارد. یک راه ساده برای تشخیص اینکه بک تستینگ شما از دادههای نمودار OHLCV یا دادههای تجمعی استفاده میکند، اجرای آن در بازارهای با نقدینگی پایین است که تفاوت بسیاری میان قیمت خرید و فروش وجود دارد. معاملات با فرکانس بالا در بازارهای با نقدینگی پایین، به ضرر شدید منجر خواهند شد.
- عدم تغییر نتایج در صورت تغییر صرافی: هر صرافی نقدینگی و کارمزد معاملاتی متفاوتی دارد. هنگام بک تست کردن استراتژی خود در صرافیهای مختلف، باید نتایج مختلفی دریافت کنید. در صورت مشاهده نتایج یکسان، احتمالا ابزار بک تستینگ شما از دادههای تجمعی استفاده میکند و کارمزد دقیق هر صرافی را درنظر نگرفته است.
۵ نکته مهم برای Backtesting استراتژیهای مرتبط با بازار رمزارزها
اگر به آشپزی علاقهمند باشید ممکن است تجربه کرده باشید که غذای شما غالبا با آنچه در دستورپختها نوشته شده است، فرق میکند؛ طعم، بافت و ظاهر غذای طبخشده با نسخه اصلی شباهتی ندارد. این نکته دقیقا برای معاملات و سرمایهگذاری نیز صدق میکند و همیشه نمیتوانید تمامی نکات را با مطالعه مقالات یا کتابها به دست بیاورید. در حقیقت، بخش مهمی از این مسائل از طریق تجربهکردن آموخته میشوند.
در این قسمت از مقاله تصمیم داریم تا ۵ نکته مهم در رابطه با بک تست کردن استراتژیهای مرتبط با بازار ارز دیجیتال را به شما آموزش دهیم.
از دادههای تصادفی استفاده کنید
یکی از اشتباهات مهمی که تریدرها هنگام بک تست کردن استراتژی معاملاتی خود انجام میدهند، استفاده از دادههای گزینشی است. به عنوان مثال، یک تریدر ممکن است تنها جفت ارزهای BTC/USDT یا ETH/USDT را بررسی کند و با یک تایم فریم مشخصی کار کند. در این سناریوها، ممکن است استراتژی انتخابی درست کار کند. اما در واقعیت، این استراتژی محکوم به شکست است و چندان کارآمد نخواهد بود.
اما علت ناکارآمد بودن این استراتژی معاملاتی چیست؟ در صورتی که دوباره این استراتژی را در تایمفریمهای مختلف و با جفتارزهای دیگر بک تست کنیم متوجه ناکارآمدی آن میشویم. استفاده از دادههای گزینشی اشتباهی پرهزینه است که اغلب به ضرر شما منجر میشود.
هنگام بک تست استراتژی معاملاتی خود، حتما اطمینان حاصل کنید که تایم فریم انتخابی تصادفی است. اجازه ندهید تعصب بر نتایج شما تاثیر بگذارد؛ چراکه ممکن است ساختار بازار تا هفتهها مطابق میل شما پیش نرود.
تا جایی که میتوانید استراتژی خود را امتحان کنید
هنگام خرید یک گوشی موبایل یا یک کالای دیگر، معمولا تا جایی که میتوانیم مقالات مختلف را مطالعه میکنیم؛ سری به یوتیوب میزنیم تا بررسیهای مربوط را مشاهده کنیم و در وبسایتها و انجمنهای مختلف تحقیق میکنیم تا ریز و درشت اطلاعات را به دست بیاوریم. اتفاقی که در این پروسه رخ میدهد، این است که با تجزیه و تحلیل دادههای کافی، نقصها یا معایب پنهان کالای مدنظر را پیدا میکنیم؛ نقایصی که ممکن است کاربران معمولی متوجه آن نشوند.
این پروسه هنگام بک تست کردن استراتژیهای معاملاتی نیز صدق میکند. تا جایی که میتوانید حتما استراتژی خود را امتحان کنید تا نقاط ضعف آن مشخص شود. پس از پیدا کردن نقاط ضعف، سعی کنید استراتژی خود را اصلاح کنید تا کارآمدتر شود. در صورتی که بارها و بارها استراتژی خود را بک تست کنید و نتایج مطابق میل شما پیش برود، نسبت به انتخاب خود به اطمینان خواهید رسید و احتمالا نتایج خوبی را در بازار واقعی کسب خواهید کرد.
چند استراتژی مختلف داشته باشید
همه ما ممکن است یک استراتژی خاصی را در ذهن خود داشته باشیم که روی کاغذ درست به نظر برسد و ممکن است به این فکر کنیم که چه نابغهای هستیم و میتوانیم در خانه، تنها با این استراتژی به پول زیادی برسیم. با این حال، این استراتژی تنها یکی از هزاران هزار استراتژی معاملاتی است. تنها به یک استراتژی مشخص پایبند نباشید؛ چراکه استراتژیهای مختلفی وجود دارند که میتوان با آنها سود کسب کرد. همواره این نکته را مد نظر قرار دهید که باید ریسک را به حداقل و سود حاصل را به حداکثر برسانید. حتی چند درصد تفاوت در عملکرد هم میتواند تفاوت چشمگیری در نتایج شما داشته باشد.
معیارهای مهم را تعیین کنید
معیارهایی که باید هنگام بک تست کردن به آنها توجه کنید را مشخص کنید. آیا سود برای شما مهمتر از ضرر نکردن است؟ اگر پاسختان به این سوال مثبت است باید استراتژیهایی که بازدهی بالاتر از حد متوسط دارند را هدف قرار دهید. به طور کلی هنگام بک تست کردن این معیارها وجود دارند:
- نوسانات (حداکثر دامنه سود و زیان)
- سود و زیان خالص
- میانگین سود و زیان
- سود و زیان سالیانه
- مدت زمان معاملات
- نسبت برد به باخت
اگر هدف شما معاملات طولانیمدت است، بدون شک معیاری مانند سود سالیانه نسبت به سود روزانه برای شما اهمیت بیشتری خواهد داشت. در صورتی که به سودآوری مداوم علاقه دارید، ممکن است چندان به نوسانات توجه نکنید. در عوض اگر به دنبال سود متوسط هستید، ممکن است معیار دیگری را انتخاب کنید. با انتخاب معیارهای مهم هنگام بکتست، سودمندی خاص استراتژی خود را درک خواهید کرد.
به دنبال بهترین نباشید
با مطالعه موارد بالا ممکن است ذهن شما به سمت انتخاب بهترین استراتژی معاملاتی رفته باشد. با این حال، توجه کنید که هنگام بک تست، نباید به طور مداوم به دنبال بهترین نتیجه ممکن باشید. آنچه نتایج Backtesting به شما ارائه میدهد، یک نمای کلی از چگونگی عملکرد یک استراتژی در یک لحظه است. اما آیا واقعا به یک استراتژی مداوم خود نیازمندیم؟
اکثر تریدرها و معاملهگران در شرایط غیرمعمول سود بسیار زیادی کسب میکنند. در حقیقت، هیچکس در یک بازه زمانی کسلکننده که همهچیز قابل پیشبینی است سود نمیبرد. معاملهگران بسیاری در زمان سقوط ماه مارس، تصمیمهای مختلف قانونگذاران، ممنوعیتهای پیاپی چین بر بازار رمزارزها و… پول زیادی به دست آوردهاند. حقیقت این است که یک بک تست، استراتژی شما را در شرایط غیرمنتظره نمیسنجد؛ چراکه برای پیشبینی این لحظات طراحی نشده است. هدف از طراحی بک تستینگ، تجزیهوتحلیل بازار در شرایط رایج و متوسط آن است.
پرسش و پاسخ (FAQ)
- بک تستینگ (Backtesting) چیست؟
بک تست کردن یا بک تستینگ (Backtesting) ابزاری است که به معاملهگران و سرمایهگذاران این امکان را میدهد تا پیش از فعالیت در بازار اصلی رمزارزها، با کمک دادههای تاریخی مدلهای تحلیلی و استراتژیهای معاملاتی خود را امتحان کنند.
- انواع روشهای بک تست کردن کدامند؟
بک تست کردن را میتوان به دو روش دستی (Manual) و سیستمی (Systematic) انجام داد. در بک تستینگ دستی، معاملهگر کل فرآیند خرید و فروش را به صورت دستی و روی کاغذ انجام میدهد. درحالیکه در بک تستینگ سیستمی از الگوریتمها و کدهای کامپیوتری استفاده میشود.
جمعبندی
بک تست کردن (Backtesting) ممکن است بر عملکرد معاملات آتی تاثیر بگذارد. در حالی که برخی از معاملهگران ممکن است به صورت دستی استراتژی خود را بک تست کنند، برخی دیگر برای جلوگیری از هدررفت زمان، استراتژی خود را در قالب کدهای کامپیوتری آزمایش میکنند. در حالت ایدهآل، بهترین راه برای بک تست کردن یک استراتژی در بازار ارزهای دیجیتال، استفاده از دادههای موجود در دفاتر سفارش صرافیهاست. با این حال، این نکته را در ذهن داشته باشید که بازار ارزهای دیجیتال، واقعا قابل پیشبینی نیست.
استفاده از ابزارهای بک تستینگ برای کمک به ارزیابی استراتژی معاملاتی شما و تدوین بهترین استراتژی اهمیت زیادی دارد. با این حال، بازار رمزارزها ماهیتی نوسانی دارد. به همین خاطر توصیه میکنیم پیش از هرگونه معامله در بازار، با افراد خبره مشورت کنید.