آموزش بکتست گرفتن (برای سنجش استراتژیهای معاملاتی)
بکتست گرفتن (به انگلیسی Backtesting) میتواند یکی از قدمهای مهم در بهینهسازی عملکرد شما در بازارهای مالی باشد.
چه معاملهگر ارز دیجیتال باشید و چه در خرید و فروش سهام فعال باشید، بکتست گرفتن به شما در تشخیص سودآور بودن ایدهها و استراتژیهای معاملهگری کمک میکند.
- اما بکتست گرفتن به چه معناست و چگونه باید انجام شود؟
- در بکتست گرفتن چه نکاتی را باید در نظر داشت؟
- آیا بکتست گرفتن مشابه معاملات کاغذی است؟
معرفی
بکتست گرفتن را میتوان یک ابزار دانست که برای شما (به عنوان معاملهگر یا سرمایهگذار) در حین کاوش و بررسی بازارها و استراتژیها مفید خواهد بود.
فرض کنید پس از یادگیری تحلیل تکنیکال و کسب تجربه، قصد دارید یک استراتژی برای معاملاتتان مشخص کنید. بکتست به شما بازخوردهای ارزشمندی براساس دادهها میدهد و متوجه میشوید که آیا ایدهها و روشهایتان معتبر و قابل اطمینان هستند یا خیر.
صرفنظر از طبقه دارایی که معامله میکنید، بکتست گرفتن نیاز به این ندارد مبالغی که با زحمت بدست آوردهاید را به خطر بیندازید. با استفاده از یک نرمافزار برای بکتست در محیطی شبیهسازی شده، میتوانید یک رویکرد خاص نسبت به بازار را بسنجید و بهینه کنید.
بکتست گرفتن چیست؟
در بازارهای مالی، بکتست گرفتن برای تشخیص قابل اتکا بودن و سودآوری یک استراتژی معاملاتی و سرمایهگذاری با استفاده از دادههای تاریخی است.
به عبارت دیگر در بکتست، از دادههای تاریخی برای مشاهده اینکه یک استراتژی چه عملکردی خواهد داشت استفاده میشود.
اگر در بکتست نتایج خوبی بدست آید، سرمایهگذار یا معاملهگر میتواند استراتژی تست شده را در محیط واقعی (بازار) اعمال کند.
اما منظور ما از “نتایج خوب” چیست؟
هدف بکتست، تحلیل ریسک و پتانسیل سودآوری یک استراتژی خاص است. استراتژی سرمایهگذاری میتواند براساس بازخوردهای آماری بدست آمده بهینه شده و بهبود یابد تا نتایج احتمالی به حداکثر برسد.
یک بکتست که به خوبی اجرا شده باشد میتواند به معاملهگر اطمینان دهد که دستکم استراتژی موردنظر برای پیادهسازی در محیط واقعی معاملات، قابلیت اتکای حداقلی را داراست.
یک پلتفرم یا ابزار برای بکتست میتواند در تشخیص قابل اتکا و سودآور بودن یک استراتژی بسیار مفید باشد. اگر نتایج بکتست نشاندهنده عملکرد پایین و نامطلوب بود، استراتژی موردنظر میتواند بطور کلی نادیده گرفته شود یا تغییراتی در آن اعمال شود.
با این حال، باید شرایط بازاری که در آن تست صورت میگیرد در نظر گرفته شود. در نظر بگیرید که بکتست از یک استراتژی یکسان در شرایط مختلف بازار میتواند نتایج بسیار متفاوت و متناقض داشته باشد.
اگر در سطح حرفهای معامله میکنید، بکتست گرفتن از کلیه استراتژیها کاملا لازم و حیاتی است، مخصوصا اگر استراتژیهای معاملات الگورتیمی در کار باشد.
روش بکتست گرفتن
فرضیه بنیادی بکتست گرفتن این است که یک استراتژیهای کارا در گذشته، میتواند برای آینده نیز سودآور باشد.
با این حال، بدست آوردن این نتیجه به مهارت و دقت بالایی نیاز دارد.
استراتژی خاصی که در شرایط خاصی از بازار در گذشته عملکرد خوبی داشته، میتواند در شرایط دیگر بازار زیانده شود.
همچنین بکتست گرفتن با دادههای تاریخی گمراهکننده میتواند نتایج ایدهآلی به همراه نداشته باشد.
به همین خاطر یافتن یک نمونه دوره مناسب برای بکتست گرفتن که شرایط فعلی بازار را منعکس میکند بسیار حیاتی است. اینکار میتواند گاهی اوقات بسیار مشکل باشد، زیرا بازارها همواره تغییر میکنند.
قبل از اینکه تصمیم بگیرید از یک استراتژی معاملاتی بکتست بگیرید، مشخص کنید قرار است به چه اطلاعاتی دست یابید.
مثلا:
- چه چیزهایی باعث خواهد شد استراتژی را قابل اتکا بدانید؟
- چه چیزی باعث باطل شدن فرضیات شما خواهد شد؟
اگر چنین چیزهایی را قبل از شروع بکتست بدانید، وجود تعصب و تورش از نتایج استنباطشده دورتر خواهند بود.
در بکتست گرفتن باید هزینههای معاملات و هزینههای واریز و برداشت (مخصوصا در بازار ارز دیجیتال) و سایر هزینههای احتمالی را در نظر بگیرید.
همچنین باید در نظر داشت دسترسی به نرمافزارهای بکتست و دسترسی به برخی دادههای تاریخی بازار ممکن است هزینه داشته باشد.
در ذهن داشته باشید که بکتست گرفتن مانند تحلیل تکنیکال و تحلیل نموداری است و هیچ تضمینی وجود ندارد که همان نتایجی که در بکتست گرفتید را در بازار واقعی کسب کنید.
حتی اگر نتایج فوقالعادهای در بکتست بدست آوردید، تضمینی وجود ندارد پیادهسازی استراتژیتان در بازار نتیجهی دلخواه را به همراه داشته باشد.
مثالی از بکتست گرفتن
قرار است یک مثال بسیار ساده و ابتدایی از بکتست ارائه دهیم.
میخواهیم یک استراتژی خرید بلندمدت بیتکوین را تست کنیم.
ایده معاملاتی ما به این ترتیب است:
زمانی که قیمت بیتکوین برای اولین هفته، بالاتر از میانگین متحرک 20 هفتهای بسته شد خرید انجام گیرد.
زمانی که قیمت بیتکوین برای اولین هفته، پایینتر از میانگین متحرک 20 هفتهای بسته شد فروش انجام گیرد.
این استراتژی فقط چند سیگنال (پیشنهاد معامله) در طول یکسال تولید میکند.
بیاید به دورهای که از سال 2019 آغاز میشود نگاه کنیم:
در تصویر بالا نمودار هفتگی بیتکوین از ابتدای 2019 را میبینید.
این استراتژی ما در دورهای که آنرا سنجیدهایم 5 سیگنال ارائه داده است:
- خرید بیتکوین در قیمت حدود 4000 دلار
- فروش بیتکوین در قیمت حدود 8000 دلار
- خرید بیتکوین در قیمت حدود 8500 دلار
- فروش بیتکوین در قیمت حدود 8000 دلار
- خرید بیتکوین در قیمت حدود 9000 دلار
با انجام این بکتست ساده به این نتیجه میرسیم استراتژی ما در دوره زمانی ذکر شده سودآور بوده است.
اما آیا تضمینی وجود دارد این استراتژی در آینده نیز سودآور باشد؟ نه! این بکتست را فقط باید به عنوان یک معیار تقریبی در نظر گرفت.
در نظر بگیرید ما فقط دادههای کمتر از دو سال را بررسی کردیم. اگر قرار بود ما این استراتژی را به یک استراتژی قابلانجام و پیادهسازی تبدیل کنیم، میبایست بازه زمانی طولانیتر را با پرایساکشن بیشتر تست میکردیم.
با این حال، این بکتست نشاندهنده یک شروع امیدوارکننده است. زیرا ایده اولیه ما به نظر میرسد قابل اتکا باشد و احتمالا بتوان از طریق بهبود آن یک استراتژی سرمایهگذاری مناسب و سودآور ایجاد کرد.
شاید بتوان به استراتژی سادهای که اشاره کردیم یک اندیکاتور تکنیکال نیز افزود تا سیگنالهای قابلاطمینانتری بدست آید.
در ادامه، این تغییرات بستگی به ایدههای هر فرد، تجربیات و میزان ریسکپذیریاش دارد.
بکتست گرفتن و معاملات کاغذی
اکنون یک دید کلی از شیوه کارکرد بکتست داریم و مثالی از شیوه تست یک استراتژی سرمایهگذاری ساده را نیز عنوان کردیم.
همچنین اشاره کردیم که حتی بهترین عملکردی که در بکتست گرفتید نیز تضمینکننده نتایجی که در آینده در بازار میگیرید نیست.
اکنون چگونه میتوانیم یک استراتژی که از آن بکتست گرفتهایم را برای شرایط فعلی بازار بهینه کنیم؟
میتوانیم استراتژی را در بازار واقعی بکار بیریم، بدون اینکه سرمایهمان را به خطر بیندازیم. اینکار با استفاده از معاملات کاغذی شدنی است.
معاملات کاغذی با نام تست عملکرد در آینده (forward performance testing) نیز شناخته میشود.
معاملات کاغذی در واقع شبیهسازی معاملات با استفاده از یک استراتژی از قبل تعیین شده است.
این نوع معاملات، به این خاطر معاملات کاغذی نامیده شده چون علاوه بر مکتوب شدن معاملات، هیچ مبلغ واقعی وارد بازار نمیشود.
معاملات کاغذی به شما امکان میدهد قبل از اینکه یک استراتژی بکتست شده را در بازار بکار ببرید یک قدم دیگر برای بهبود آن فرصت داشته باشید.
مقصود از معاملات کاغذی، تست استراتژی بطور کامل و یافتن نقایص احتمالی آن است. بنابراین اگر استراتژی یک چیز از شما خواست، باید آنرا انجام دهید و دچار تعصب نشوید.
نباید فقط سیگنالهای معاملاتی که ظاهر خوبی دارند را با تعصب شخصیتان انتخاب کنید، زیرا در این صورت تست انجام شده برای استراتژیتان معتبر نخواهد بود.
بکتست دستی در مقابل اتوماتیک
بکتست دستی یعنی اینکه نمودارها و دادههای تاریخی را تحلیل و بررسی کنید و بطور دستی معاملات را براساس استراتژی انجام دهید.
بکتست اتوماتیک همین فرایند را طی میکند با این تفاوت که کارها با استفاده از نرمافزارها و کدها بطور اتوماتیک انجام میشود. (مثلا با استفاده از زبانهای برنامهنویسی Python و یا نرمافزار مخصوص بکتست)
بسیاری از معاملهگران حرفهای از شیتهای اکسل یا گوگل برای ارزیابی عملکرد یک استراتژی استفاده میکنند. این اسناد میتوانند به عنوان گزارشات تست استراتژیها عمل کنند.
این صفحات میتوانند شامل همه نوع اطلاعات باشند، از جمله پلتفرم معاملاتی، طبقه دارایی، دوره زمانی معامله، تعداد معاملات سودده و زیانده، نسبت شارپ، سود خالص و…
سخن آخر
بسیاری از معاملهگران و سرمایهگذاران حرفهای برای سنجش ایدهها و استراتژیهایشان به میزان زیادی بکتست انجام میدهند. این کار یکی از اساسیترین ابزارها برای معاملهگران الگوریتمی است.
با این حال، تفسیر نتایج بکتست به دقت و ظرافت زیادی نیاز دارد. بسیاری از مواقع معاملهگران تعصبات و سوگیریهای شخصیشان را وارد فرایند میکنند که باعث میشود بکتست مورد نظر از اعتبار و اطمینان کمی برخوردار شود.
بکتست گرفتن به تنهایی باعث نمیشود یک استراتژی معاملاتی را بطور کامل قابل اتکا بدانیم. بکتست گرفتن صرفا برای کمک به سنجش قابل اتکا بودن ایدههاست.