
بکتست ربات برای حساب کوچک
حساب کوچک در معاملات الگوریتمی فقط نسخهای کمحجم از حساب بزرگ نیست؛ این نوع حساب از نظر ساختار ریسک، هزینههای معاملاتی، محدودیت مارجین و حساسیت به خطاهای اجرایی، محیطی کاملاً متفاوت ایجاد میکند. رباتی که در یک حساب بزرگ با سرمایه کافی، امکان تنوعسازی و تحمل چندین معامله زیانده را دارد، ممکن است در حساب کوچک بهدلیل یک زنجیره کوتاه از ضررها، افزایش موقت اسپرد یا ناتوانی در باز کردن حداقل حجم معامله، عملکرد خود را از دست بدهد. بنابراین بکتست (Backtest) برای حساب کوچک نباید صرفاً ابزاری برای محاسبه سود تاریخی باشد؛ بلکه باید آزمونی سختگیرانه برای سنجش قابلیت بقا، کنترل ریسک و سازگاری ربات با محدودیتهای واقعی حساب باشد.
در چنین شرایطی، پرسش اصلی این نیست که ربات در گذشته چقدر سود ساخته است. پرسش دقیقتر این است که آیا منطق ربات، با سرمایه محدود و پس از کسر همه هزینهها، هنوز دارای امید ریاضی (Expectancy) مثبت است؟ آیا منحنی سرمایه در دورههای مختلف پایدار میماند؟ آیا افت سرمایه آن با اندازه حساب سازگار است؟ آیا حداقل حجم معامله، مارجین موردنیاز و فاصله سفارشها با موجودی حساب تناسب دارند؟ پاسخ به این پرسشها تنها با یک بکتست واقعگرایانه و چندلایه به دست میآید.
حساب کوچک چه ویژگیهایی دارد؟
تعریف حساب کوچک به رقم ثابتی وابسته نیست و با بازار، نماد معاملاتی و نوع استراتژی تغییر میکند. حسابی که برای معاملهگری در بازار فارکس کوچک محسوب میشود، ممکن است برای یک استراتژی کمریسک روی سهام یا معاملات آتی متوسط باشد. با این حال، چند ویژگی مشترک وجود دارد: موجودی محدود، ظرفیت پایین برای تحمل زیان متوالی، حساسیت زیاد به هزینههای ثابت، محدودیت در اندازه پوزیشن و وابستگی شدید به اهرم (Leverage).
در حساب کوچک، هزینههایی مانند کمیسیون، اسپرد و اسلیپیج نسبت به سرمایه، سهم بزرگتری دارند. برای مثال، اگر هزینه رفتوبرگشت یک معامله پنج دلار باشد، این هزینه برای حسابی با موجودی صد هزار دلار ناچیز است؛ اما برای حسابی هزار دلاری، پیش از آنکه معامله وارد سود شود، نیم درصد از سرمایه را مصرف میکند. به همین دلیل، استراتژیهای پرتعداد، اسکالپینگ و سیستمهایی با حد سود کوچک، در حساب کوچک باید با دقت بیشتری ارزیابی شوند.
ویژگی مهم دیگر، محدودیت در ریسک هر معامله (Risk per Trade) است. در حساب بزرگ، معاملهگر میتواند درصدی کوچک از سرمایه را در معرض ریسک قرار دهد و همچنان حجم قابلقبولی داشته باشد. اما در حساب کوچک، اگر حداقل حجم مجاز کارگزار بیش از مقدار محاسبهشده باشد، معاملهگر مجبور میشود یا ریسک واقعی را افزایش دهد یا از معامله صرفنظر کند. این مسئله در بکتستهای غیرواقعی معمولاً دیده نمیشود، زیرا بسیاری از موتورهای آزمایشی اجازه میدهند حجمهایی مانند ۰٫۰۰۱ لات باز شود، در حالی که حساب واقعی شاید حداقل حجم ۰٫۰۱ لات داشته باشد.
نقدشوندگی (Liquidity) نیز برای حساب کوچک اهمیت ویژهای دارد. هرچند اندازه سفارش کوچک معمولاً مشکل بزرگی برای نقدشوندگی بازار ایجاد نمیکند، اما حساب کوچک اغلب به استراتژیهایی وابسته است که سود هر معامله در آنها کم است. بنابراین افزایش جزئی هزینه اجرا میتواند مزیت آماری سیستم را از بین ببرد. در این حسابها، فاصله میان سود ناخالص و سود خالص باید با بدبینی بررسی شود.
چرا مدیریت ریسک حیاتیتر است؟
ریسک در حساب کوچک بهصورت خطی با سرمایه کاهش پیدا نمیکند. وقتی موجودی حساب کم است، چند عامل همزمان فشار ایجاد میکنند: مقدار حداقل حجم معامله، محدودیت مارجین، هزینه ثابت هر معامله و کاهش آزادی عمل در تنظیم پوزیشن. از طرف دیگر، افت سرمایه باعث میشود ظرفیت ریسکپذیری حساب سریعتر کاهش یابد. اگر یک حساب ده هزار دلاری پس از ده معامله زیانده، پنج درصد افت کند، هنوز فضای کافی برای ادامه فعالیت دارد؛ اما حسابی که پس از چند زیان متوالی به نزدیکی کالمارجین (Margin Call) برسد، ممکن است حتی پیش از بازگشت آماری استراتژی از بازار خارج شود.
مناسبترین روش، محاسبه حجم بر اساس ریسک واقعی و فاصله حد ضرر است:
[
\text{Position Size} = \frac{\text{Account Equity} \times \text{Risk Percentage}} {\text{Stop Loss Distance} \times \text{Value Per Point}} ]
این فرمول باید با محدودیتهای نماد و کارگزار تطبیق داده شود. مقدار بهدستآمده باید به نزدیکترین حجم مجاز گرد شود، اما گرد کردن همیشه بیخطر نیست. گرد کردن رو به بالا میتواند ریسک واقعی را بیشتر از مقدار هدف کند و گرد کردن رو به پایین ممکن است باعث شود استراتژی در عمل نسبت به بکتست، کمتر درگیر بازار شود.
در حساب کوچک، بهتر است ریسک پایه هر معامله محافظهکارانه باشد و در دورههای افت سرمایه افزایش پیدا نکند. استفاده از ریسک ثابت درصدی (Fixed Fractional Risk) معمولاً از حجم ثابت بهتر است، زیرا با کاهش موجودی، حجم معاملات نیز کاهش مییابد. با این حال، اگر حداقل حجم کارگزار اجازه کاهش کافی را ندهد، حتی این روش نیز نمیتواند ریسک را کاملاً کنترل کند. در این حالت باید در بکتست بررسی شود که آیا حساب پس از افت سرمایه هنوز توان ادامه معاملات را دارد یا خیر.
تفاوت بکتست حساب کوچک و حساب بزرگ
در حساب بزرگ، تمرکز اصلی ممکن است روی بازده تعدیلشده با ریسک، تنوعسازی میان نمادها و کنترل همبستگی معاملات باشد. حساب کوچک نیز به این موارد نیاز دارد، اما محدودیتهای اجرایی وزن بیشتری پیدا میکنند. یک حساب بزرگ میتواند همزمان چند پوزیشن با حجمهای متفاوت باز کند، در حالی که حساب کوچک ممکن است بهدلیل مارجین آزاد (Free Margin) ناکافی، فقط اجازه یک یا دو معامله را داشته باشد.
در حساب کوچک، توالی معاملات اهمیت بیشتری از میانگین کلی عملکرد دارد. دو ربات میتوانند سود نهایی، نرخ برد و فاکتور سود مشابهی داشته باشند، اما رباتی که زیانهای خود را در ابتدای دوره و بهصورت فشرده تجربه میکند، برای حساب کوچک خطرناکتر است. دلیل این موضوع آن است که حساب باید از نظر مارجین و سرمایه در گردش، توان عبور از بدترین بخش توالی را داشته باشد.
تفاوت دیگر به اثر هزینهها مربوط میشود. اگر یک سیستم در هر معامله بهطور متوسط ۰٫۲ درصد سود ناخالص تولید کند، اسپرد و کمیسیون معادل ۰٫۰۵ درصد ممکن است قابلتحمل باشد. اما برای حساب کوچک، هزینههای اضافی ناشی از اسلیپیج، حداقل حجم و اجرای ناقص میتواند سود خالص را به صفر نزدیک کند. بنابراین بکتست حساب کوچک باید بر مبنای سود خالص پس از هزینهها و با چند سناریوی اجرایی انجام شود.
در حسابهای بزرگتر، گاهی میتوان ریسک را میان چند استراتژی پخش کرد. در حساب کوچک، چنین امکانی محدود است و انتخاب یک ربات نامناسب میتواند تمام سرمایه عملیاتی را در معرض یک منبع ریسک واحد قرار دهد. این وابستگی، ضرورت بررسی رژیمهای مختلف بازار و دورههای زیان متوالی را افزایش میدهد.
انتخاب داده تاریخی
کیفیت داده تاریخی (Historical Data) یکی از پایههای اعتبار بکتست است. دادههای روزانه برای استراتژیهایی که در پایان روز تصمیم میگیرند شاید کافی باشد، اما برای رباتهای درونروزی، اطلاعات کندل بهتنهایی معمولاً دقت لازم را ندارد. اگر ورود و خروج بر اساس حد ضرر، حد سود، شکست قیمت یا تغییرات سریع اسپرد انجام میشود، باید از دادههای تیک یا دستکم دادههای با دقت زمانی بالا استفاده کرد.
داده تیک باید تا حد امکان شامل قیمتهای Bid و Ask باشد. بسیاری از بکتستها فقط از قیمت میانی یا Close استفاده میکنند و سپس هزینه اسپرد را بهصورت ثابت اضافه میکنند. این روش ممکن است برای یک آزمون اولیه مناسب باشد، اما برای ارزیابی نهایی کافی نیست. در بازار واقعی، اسپرد در زمان باز شدن بازار، انتشار اخبار، پایان جلسه معاملاتی و کاهش نقدشوندگی تغییر میکند. رباتی که روی فاصلههای کوچک قیمتی معامله میکند، به همین تغییرات حساس است.
باید منبع داده، منطقه زمانی، ساعت تابستانی، وقفههای معاملاتی و وجود دادههای ناقص بررسی شود. اختلاف زمانی میان داده تاریخی و زمان سرور کارگزار میتواند زمانبندی استراتژی را تغییر دهد. این موضوع در سیستمهایی که به باز شدن لندن، نیویورک یا پایان روز وابستهاند، اثر جدی دارد. همچنین باید تعدیل قیمت در نمادهایی مانند سهام و قراردادهای آتی بهدرستی اعمال شود؛ در غیر این صورت، شکافهای مصنوعی یا سودهای غیرواقعی وارد بکتست میشوند.
تست نهایی بهتر است با چند مجموعه داده مستقل انجام شود. اگر ربات فقط روی داده یک کارگزار عملکرد مطلوب دارد و در دادههای دیگر دچار افت شدید میشود، احتمالاً بخشی از نتیجه به ساختار همان فید قیمتی وابسته است، نه به منطق عمومی استراتژی.
اسپرد، اسلیپیج و کمیسیون
اسپرد (Spread) باید بهعنوان یک متغیر پویا در نظر گرفته شود. استفاده از اسپرد ثابت، مخصوصاً برای رباتهای کوتاهمدت، نتیجه را بیش از حد خوشبینانه میکند. میتوان ابتدا میانگین اسپرد تاریخی را محاسبه کرد، اما میانگین بهتنهایی کافی نیست؛ توزیع اسپرد و رخدادهای شدید نیز اهمیت دارند. لازم است بکتست در حالت اسپرد عادی، اسپرد افزایشیافته و اسپرد بحرانی اجرا شود.
اسلیپیج (Slippage) اختلاف میان قیمت مورد انتظار و قیمت اجرای واقعی است. این اختلاف ممکن است در ورود بازار، فعال شدن حد ضرر و بسته شدن اضطراری پوزیشن رخ دهد. در رباتی که حد سود کوچک و تعداد معاملات زیاد دارد، حتی اسلیپیج متوسط یک یا دو پوینت میتواند مزیت سیستم را از بین ببرد. اسلیپیج باید هم در معاملات سودده و هم در معاملات زیانده اعمال شود؛ فرض اینکه فقط ورودها با لغزش مواجه میشوند، واقعبینانه نیست.
کمیسیون (Commission) نیز باید بر اساس حجم واقعی، نوع حساب و ساختار کارگزار وارد مدل شود. در برخی حسابها کمیسیون بهازای هر لات و در برخی دیگر بهصورت درصدی از ارزش معامله محاسبه میشود. هزینه سوآپ، هزینه تبدیل ارز و هزینه نگهداری پوزیشن شبانه نیز در استراتژیهای میانمدت باید لحاظ شوند. سودی که فقط پیش از کسر کمیسیون مثبت است، برای حساب کوچک قابلاتکا نیست.
برای سنجش حساسیت، میتوان هزینه اجرای پایه را در چند سطح افزایش داد. اگر با افزایش ۲۰ تا ۳۰ درصدی اسپرد و اسلیپیج، عملکرد ربات کاملاً فروبریزد، این سیستم حاشیه ایمنی کافی ندارد. ربات مناسب حساب کوچک باید حتی در شرایطی کمی بدتر از میانگین تاریخی نیز رفتار قابلقبولی نشان دهد.
لوریج، لات و محدودیت مارجین
لوریج بالا بهمعنای توان سودآوری بیشتر نیست؛ فقط مقدار مارجین اولیه موردنیاز را کاهش میدهد. در حساب کوچک، لوریج میتواند امکان باز کردن پوزیشن را فراهم کند، اما همزمان معاملهگر را به سمت حجم بیش از ظرفیت واقعی حساب سوق دهد. بکتست باید لوریج واقعی حساب و قوانین مربوط به سطح مارجین (Margin Level) را شبیهسازی کند.
فرمول ساده مارجین در بسیاری از بازارها بهشکل زیر بیان میشود:
[
\text{Required Margin} = \frac{\text{Contract Size} \times \text{Price} \times \text{Lot Size}} {\text{Leverage}} ]
جزئیات این فرمول بسته به نماد و کارگزار متفاوت است. ارزش هر پوینت، اندازه قرارداد، ارز پایه و نرخ تبدیل باید دقیقاً از مشخصات نماد گرفته شود. همچنین باید بررسی شود که آیا کارگزار در زمان انتشار خبر یا عبور از ساعات خاص، لوریج را کاهش میدهد یا خیر.
حداقل لات، گام حجم، حداکثر حجم و فاصله مجاز سفارش از قیمت جاری، همگی بخشی از واقعیت اجرایی هستند. رباتی که در بکتست با حجمهای بسیار دقیق و بدون محدودیت سفارش کار میکند، ممکن است در حساب واقعی سفارشهایی با حجم نامعتبر تولید کند یا بهدلیل رعایت نکردن حداقل فاصله، با خطای معاملاتی مواجه شود.
در تستهای استرس، باید موجودی و اکوییتی (Equity) لحظهای، مارجین آزاد، مارجین استفادهشده و سطح مارجین ثبت شود. توقف بکتست فقط بر اساس صفر شدن موجودی کافی نیست؛ در عمل ممکن است پوزیشنها بهدلیل کاهش سطح مارجین زودتر بسته شوند.
جلوگیری از بیشبرازش
بیشبرازش (Overfitting) زمانی رخ میدهد که ربات بهجای یادگیری یک الگوی عمومی بازار، به جزئیات تصادفی داده آموزشی وابسته شود. برازش منحنی (Curve Fitting) معمولاً از طریق تعداد زیاد پارامترها، فیلترهای پیچیده، بازههای دقیق زمانی و قوانین استثنایی ایجاد میشود. نتیجه چنین فرایندی اغلب منحنی سرمایهای بسیار زیبا در گذشته و عملکرد ضعیف در آینده است.
برای کاهش این خطر، باید تعداد پارامترهای قابلتنظیم محدود و منطق اقتصادی یا رفتاری هر پارامتر روشن باشد. اگر پارامتر «دوره میانگین متحرک» از ۲۳ به ۲۴ تغییر کند و عملکرد از زیانده به بسیار سودده تبدیل شود، این حساسیت نشانه هشدار است. پارامترهای معتبر معمولاً در یک ناحیه نسبتاً گسترده عملکرد قابلقبول دارند، نه فقط در یک نقطه دقیق.
داده باید به بخشهای درون نمونه (In-Sample) و خارج از نمونه (Out-of-Sample) تقسیم شود. پارامترها فقط با داده درون نمونه تنظیم میشوند و داده خارج از نمونه برای ارزیابی استفاده میشود. این جداسازی باید زمانی باشد، نه تصادفی؛ زیرا در بازار، ترتیب زمانی و تغییر رژیم اهمیت دارد. پس از آن میتوان از اعتبارسنجی خارج از نمونه (Out-of-Sample Validation) و آزمون غلتان یا Walk-Forward Analysis استفاده کرد.
در تحلیل غلتان، ربات روی یک پنجره تاریخی تنظیم و روی پنجره بعدی آزمایش میشود، سپس این فرایند در طول تاریخ تکرار میگردد. این روش نشان میدهد که آیا استراتژی در دورههای مختلف و با پارامترهای بازتنظیمشده، رفتار منسجمی دارد یا خیر. کاهش عملکرد خارج از نمونه طبیعی است؛ اما فاصله شدید میان نتایج داخل و خارج از نمونه، اعتبار مدل را زیر سؤال میبرد.
معیارهای ارزیابی ربات
سود خالص (Net Profit) تنها یکی از شاخصهاست و در حساب کوچک معمولاً نباید معیار اصلی تصمیمگیری باشد. سود زیاد ممکن است حاصل یک یا دو معامله استثنایی، استفاده بیش از حد از اهرم یا پذیرش افت سرمایه غیرقابلتحمل باشد. ارزیابی باید مجموعهای از معیارهای سودآوری، ریسک و پایداری را دربرگیرد.
فاکتور سود (Profit Factor) از تقسیم سود ناخالص بر زیان ناخالص به دست میآید:
[
\text{Profit Factor} = \frac{\text{Gross Profit}}{\text{Gross Loss}} ]
مقدار بالاتر از یک نشاندهنده سوددهی تاریخی است، اما کیفیت آن به تعداد معاملات و هزینههای لحاظشده وابسته است. فاکتور سود ۱٫۱۵ با هزار معامله ممکن است از فاکتور سود ۲ با پانزده معامله قابلاعتمادتر باشد، زیرا نمونه بزرگتر اطلاعات بیشتری درباره رفتار سیستم فراهم میکند.
افت سرمایه (Drawdown) مقدار کاهش سرمایه از یک قله تا کف بعدی است. باید هم افت سرمایه مطلق و هم افت درصدی بررسی شود. بیشترین افت تاریخی بهتنهایی کافی نیست؛ متوسط افت، مدتزمان بازیابی و تعداد دفعات وقوع آن نیز مهم هستند. در حساب کوچک، مدت بازیابی (Recovery Time) اهمیت زیادی دارد، زیرا سرمایه محدود ممکن است فرصت کافی برای صبر کردن نداشته باشد.
امید ریاضی نشان میدهد هر معامله بهطور متوسط چه مقدار ارزش ایجاد یا نابود میکند:
\text{Expectancy} = (\text{Win Rate} \times \text{Average Win})
(\text{Loss Rate} \times \text{Average Loss})
]
در این محاسبه باید هزینههای معاملاتی نیز لحاظ شوند. یک استراتژی با نرخ برد (Win Rate) پایین میتواند سودده باشد، بهشرط آنکه میانگین سودها بهطور معناداری بزرگتر از میانگین زیانها باشد. برعکس، نرخ برد بالا بدون نسبت مناسب سود به زیان، امنیتی کاذب ایجاد میکند.
نسبت ریسک به بازده (Risk/Reward Ratio) باید در کنار توزیع واقعی معاملات بررسی شود. نسبت اسمی حد سود به حد ضرر با نسبت تحققیافته یکی نیست؛ خروج زودهنگام، لغزش، پر شدن ناقص سفارش و خروج اضطراری میتوانند میانگین سود واقعی را کاهش دهند.
نسبت شارپ (Sharpe Ratio) بازده مازاد را نسبت به نوسان بازده میسنجد:
[
\text{Sharpe Ratio} = \frac{\text{Average Return} – \text{Risk-Free Rate}} {\text{Standard Deviation of Returns}} ]
این معیار برای مقایسه مناسب است، اما در توزیعهای دارای چولگی شدید یا زیانهای نادر و بزرگ، بهتنهایی کافی نیست. در کنار آن میتوان نسبت سورتینو، نسبت بازده به افت سرمایه و معیارهای ریسک دنبالهای را نیز بررسی کرد.
پایداری منحنی سرمایه (Equity Curve Stability) به یکنواختی و قابلتوضیح بودن رشد سرمایه مربوط است. منحنیای که با چند جهش بزرگ و دورههای طولانی سکون ساخته شده، برای حساب کوچک ریسک بیشتری دارد. بهتر است بازده ماهانه، تعداد ماههای منفی، طولانیترین دوره زیانده و توالی بیشترین زیانهای متوالی استخراج شود.
سناریوسازی بدبینانه
بکتست اصلی باید با یک یا چند سناریوی بدبینانه تکمیل شود. هدف این سناریوها پیشبینی دقیق آینده نیست؛ هدف، اندازهگیری حاشیه ایمنی ربات است. در سناریوی اول میتوان اسپرد متوسط را افزایش داد و اسلیپیج تصادفی یا وابسته به نوسان را به معاملات افزود. در سناریوی دوم، اجرای بخشی از معاملات را با تأخیر مدل کرد تا مشخص شود ربات به سرعت اجرا چقدر وابسته است.
قطعی اجرا (Execution Failure) نیز باید در نظر گرفته شود. ممکن است سفارش ورود پذیرفته نشود، حد ضرر با تأخیر فعال شود، اتصال به سرور قطع شود یا پاسخ کارگزار با خطا برگردد. ربات حرفهای باید برای این وضعیتها منطق تلاش مجدد، بررسی وضعیت سفارش و جلوگیری از ارسال سفارش تکراری داشته باشد. بکتست کامل نمیتواند همه خطاهای نرمافزاری را مدل کند، اما میتوان اثر عدم اجرای بخشی از معاملات و بدتر شدن قیمت خروج را سنجید.
در سناریوی کاهش نقدشوندگی، اسپرد افزایش مییابد، اسلیپیج شدیدتر میشود و احتمال پر شدن ناقص بالا میرود. این وضعیت در زمان اخبار مهم، آغاز هفته، پایان هفته و تغییرات سریع بازار رایجتر است. اگر ربات در این دورهها فعال میماند، باید آنها جداگانه تحلیل شوند. گاهی بهترین راهکار، اضافه کردن فیلتر زمانی یا کاهش حجم در شرایط نوسان شدید است؛ اما چنین فیلتری نیز باید خارج از نمونه آزمایش شود تا به ابزار جدیدی برای بیشبرازش تبدیل نشود.
یک روش مفید، اجرای مونتکارلو یا شبیهسازی تصادفی (Monte Carlo Simulation) روی ترتیب معاملات، اسلیپیج و درصد برد است. جابهجایی تصادفی ترتیب معاملات نشان میدهد که آیا نتیجه به یک توالی خاص وابسته بوده است. اگر در بخش بزرگی از شبیهسازیها، حساب کوچک به افت سرمایه بحرانی برسد، استفاده واقعی از ربات حتی با وجود بکتست پایه سودده، تصمیم مناسبی نیست.
بهینهسازی واقعبینانه پارامترها
بهینهسازی پارامترها (Parameter Optimization) نباید مسابقهای برای یافتن بیشترین سود باشد. هدف، پیدا کردن مجموعهای از مقادیر است که در یک ناحیه منطقی، با هزینههای واقعی و دورههای متفاوت بازار عملکرد قابلقبولی داشته باشند. پیش از شروع، باید برای هر پارامتر دامنهای تعیین شود که از نظر منطق استراتژی قابل دفاع باشد.
برای نمونه، اگر پارامتر فاصله حد ضرر قرار است بر اساس نوسان بازار تنظیم شود، جستوجوی مقادیر بسیار کوچک و بسیار بزرگ بدون توجه به ساختار نماد معنا ندارد. تعداد گامهای بهینهسازی باید محدود باشد و هر پارامتر فقط در محدودهای بررسی شود که با منطق معاملاتی و شرایط حساب سازگار است. بهینهسازی همزمان دهها پارامتر معمولاً احتمال برازش منحنی را افزایش میدهد.
بهتر است تابع هدف چندمعیاره باشد. بهجای بیشینه کردن سود خالص، میتوان ترکیبی از فاکتور سود، افت سرمایه، تعداد معاملات، امید ریاضی و پایداری ماهانه را در نظر گرفت. برای مثال، مجموعهای با سود کمتر اما افت سرمایه نصف و رفتار پایدارتر، برای حساب کوچک انتخاب مناسبتری است.
پس از یافتن چند مجموعه پارامتر، باید آنها روی داده خارج از نمونه، داده کارگزار دیگر و سناریوهای هزینهای دشوار آزمایش شوند. انتخاب پارامتر نهایی بهتر است از میان یک ناحیه پایدار انجام شود، نه از نقطهای که دقیقاً بالاترین مقدار سود را نشان میدهد. این روش حساسیت مدل به تغییرات جزئی و خطاهای اندازهگیری را کاهش میدهد.
اشتباهات رایج
یکی از رایجترین اشتباهات، استفاده از داده تاریخی تمیز و اجرای فرضی با قیمت ایدهآل است. این کار باعث میشود رباتی که در واقعیت با اسپرد متغیر و اسلیپیج مواجه است، بیش از حد سودده دیده شود. اشتباه دوم، نادیده گرفتن کمیسیون، سوآپ و هزینه تبدیل ارز است؛ هزینههایی که برای حساب کوچک اثر مستقیم بر رشد سرمایه دارند.
اشتباه دیگر، استفاده از درصد ریسک یکسان بدون توجه به حداقل لات است. اگر حجم محاسبهشده کمتر از حداقل مجاز باشد و برنامه آن را به بالا گرد کند، ریسک واقعی ممکن است چند برابر مقدار هدف شود. همچنین برخی برنامهنویسان در صورت رد شدن سفارش، بلافاصله آن را دوباره ارسال میکنند و با این کار احتمال معامله تکراری یا افزایش ناخواسته حجم را بالا میبرند.
اعتماد بیش از حد به نرخ برد نیز خطای مهمی است. رباتی با نرخ برد ۸۰ درصد ممکن است در چند معامله نادر، زیانی ایجاد کند که سود دهها معامله قبلی را از بین ببرد. تمرکز صرف بر سود نهایی نیز مشکلساز است؛ زیرا دو سیستم با سود برابر میتوانند از نظر افت سرمایه، زمان بازیابی و احتمال ورشکستگی کاملاً متفاوت باشند.
برخی معاملهگران فقط یک بازه صعودی بازار را آزمایش میکنند و نتیجه را به کل تاریخ تعمیم میدهند. ربات باید در بازارهای رونددار، نوسانی، کمنوسان و پرنوسان بررسی شود. همچنین نباید دادههای آینده بهصورت مستقیم یا غیرمستقیم وارد تصمیمهای گذشته شوند. استفاده از مقادیر High یا Low کندل در همان لحظهای که هنوز کندل بسته نشده، نمونهای از نگاه به آینده (Look-Ahead Bias) است.
در سطح نرمافزار، خطاهای مربوط به منطقه زمانی، گرد کردن قیمت، تفاوت تعداد اعشار، محاسبه ارزش پوینت و مدیریت سفارشهای جزئی میتوانند نتایج را تغییر دهند. کد باید با گزارش کامل رویدادها آزمایش شود و منطق ربات در حالتهای خطا، قطع اتصال و بازگشت سرور نیز بررسی گردد.
تصمیم نهایی درباره مناسب بودن ربات
ربات برای حساب کوچک زمانی مناسب است که سودآوری آن پس از کسر اسپرد، کمیسیون، سوآپ و اسلیپیج همچنان مثبت بماند؛ افت سرمایه آن با موجودی واقعی سازگار باشد؛ حداقل حجم معامله، مارجین و قوانین کارگزار در مدل لحاظ شده باشند؛ و عملکرد آن در داده خارج از نمونه و سناریوهای بدبینانه فرو نریزد. وجود چند ماه سودده یا یک منحنی سرمایه صعودی، بهتنهایی معیار کافی برای شروع معاملات واقعی نیست.
پیش از استفاده، باید بدترین افت تاریخی و افت حاصل از شبیهسازیهای بدبینانه با سرمایه قابلتحمل مقایسه شود. اگر حساب پس از یک دوره زیان متوالی به مارجین بحرانی نزدیک میشود، ربات برای آن حساب بیش از حد تهاجمی است؛ حتی اگر فاکتور سود بالایی داشته باشد. همچنین اگر سود مورد انتظار هر معامله فقط اندکی از هزینه اجرای آن بیشتر است، کوچکترین تغییر در شرایط کارگزار میتواند مزیت سیستم را حذف کند.
تصمیم حرفهای باید بر پایه مجموعهای از شواهد گرفته شود: امید ریاضی مثبت و پایدار، افت سرمایه کنترلشده، تعداد معاملات کافی، حساسیت پایین به تغییر پارامترها، عملکرد مناسب خارج از نمونه و توان عبور از شرایط بد اجرای سفارش. در صورت تأیید این موارد، ربات را میتوان ابتدا با حجم حداقلی و سرمایهای که از دست دادن آن فشار مالی ایجاد نمیکند، وارد مرحله آزمایشی کرد. استفاده از حساب کوچک باید مرحلهای باشد و با نظارت بر لغزش واقعی، اختلاف عملکرد با بکتست، کیفیت اجرا و تغییرات منحنی سرمایه ادامه پیدا کند.
در نهایت، بکتست موفق به این معنا نیست که ربات در آینده حتماً سودده خواهد بود. معنای دقیقتر آن این است که ربات، با فرضهای شفاف و آزمونهای سختگیرانه، توانسته شواهدی از مزیت آماری و قابلیت بقا ارائه کند. برای حساب کوچک، همین قابلیت بقا از سود خام مهمتر است. رباتی که سود کمتری تولید میکند اما ریسک آن قابلکنترل، اجرای آن واقعبینانه و رفتار آن در شرایط دشوار پایدار است، معمولاً انتخاب بهتری از سیستمی است که در گزارش تاریخی سود چشمگیر اما شکنندهای نشان میدهد.
دیدگاهها (0)