یک استراتژی کوچک معاملات آتی رمزارز دارید که چند قرارداد را معامله میکند و تازه آن را از بکتست به معامله کاغذی منتقل کردهاید. نخستین بازتنظیم، سفارش 0.037 BTC میخواهد. شبیهساز آن را میپذیرد؛ صرافی ردش میکند، چون گام مقدار قرارداد 0.001 است و پس از گرد کردن، ارزش سفارش از حداقل ارزش اسمی کمتر میشود. موقعیت شما همچنان خالی میماند، در حالی که بکتست اجرای سفارش را ثبت میکند.
بهسادگی میتوان این اختلاف را یک ایراد قالببندی دانست. اما ممکن است داراییهایی را که نگه میدارید، زمان بازتنظیم و میزان ریسک باقیمانده پس از شکست سفارش نیز تغییر دهد. فیلترهای معاملاتی هر صرافی را بخشی از قواعد اجرای استراتژی بدانید و کاری کنید بکتست و آداپتور کاغذیتان همان قواعد را به ترتیب یکسان اعمال کنند.
چه فیلترهایی در صرافی میتوانند سفارش را نامعتبر کنند؟
از فراداده ابزار معاملاتیای شروع کنید که سفارش شما واقعاً به آن نیاز دارد: گام افزایش مقدار، حداقل مقدار، حداقل ارزش اسمی، اندازه تیک قیمت و هرگونه محدودیت اندازه سفارش یا محدوده قیمت. نام و دامنه این موارد در صرافیهای مختلف فرق میکند. ممکن است حداقل مقدار یک جفتارز نقدی با قرارداد دائمی آن متفاوت باشد؛ همچنین ممکن است فیلتری در حین اجرای استراتژی تغییر کند.
موقعیتی با ارزش $12 را در قراردادی در نظر بگیرید که حداقل ارزش سفارش در آن $10 است. اگر گام مقدار، سفارش را به $9.80 رو به پایین گرد کند، سفارش نامعتبر است؛ هرچند هدفِ گردنشده از حداقل عبور میکرد. گرد کردن رو به بالا تا $10.20 شاید سفارش را معتبر کند، اما هدف را $0.20 پشت سر میگذارد. وقتی حساب کوچک است یا استراتژی ابزارهای زیادی را معامله میکند، این اختلاف میتواند مهم باشد.
| قاعده | محدودیت | پیامد در بکتست |
|---|---|---|
| گام مقدار | تغییرات مجاز در اندازه سفارش | اندازه گردشده با هدف تفاوت دارد |
| حداقل مقدار یا ارزش اسمی | کوچکترین سفارش پذیرفتنی | بعضی معاملات بیاثر میشوند یا باید رو به بالا گرد شوند |
| تیک قیمت | قیمتهای مجاز سفارشهای محدود و محرک | گرد کردن قیمت، احتمال اجرای سفارش را تغییر میدهد |
| محدوده قیمت یا سقف اندازه | حدود تعیینشده از سوی صرافی برای فیلدهای سفارش | ممکن است سفارشها هنگام نوسان شدید بازار یا بازتنظیمهای بزرگ رد شوند |
گرد کردن را کجای مسیر سفارش انجام دهید؟
پس از محاسبه تغییر مطلوب موقعیت و پیش از تصمیمگیری درباره ارسال سفارش، فیلدهای آن را گرد کنید. هدف گردنشده را برای تحلیل نگه دارید و سپس بر اساس موقعیت فعلی، ضریب قرارداد و گامهای تعیینشده از سوی صرافی، سفارش قابلاجرا را بسازید. برای گام مقدار فروش 0.001، کاهش مطلوب 0.0017 بسته به قاعدهای که تعیین کردهاید به 0.001 یا 0.002 تبدیل میشود. این انتخابها موقعیتهای باقیمانده متفاوتی ایجاد میکنند؛ بنابراین «گرد کردن تا دقت مشخص» سیاست کاملی نیست.
برای مقدارها، گرد کردن به سمت صفر از افزایش ناخواسته اکسپوژر فراتر از تغییر درخواستی جلوگیری میکند، اما ممکن است ماندههای کوچکی بر جا بگذارد که هرگز معامله نمیشوند. گرد کردن به نزدیکترین مقدار، میانگین خطا را کمتر میکند، هرچند ممکن است از هدف عبور کند. برخورد با حداقل ارزش اسمی به تصمیم جداگانهای نیاز دارد: معامله را رد کنید، تا رسیدن به حد نصاب مقدار را جمع کنید یا اندازه را افزایش دهید و عبور از هدف را بپذیرید. این رفتارها را بیسروصدا با هم عوض نکنید.
دلیل انجامنشدن سفارش را هم ثبت کنید. «سفارشی ارسال نشد: کمتر از حداقل ارزش اسمی» با «با قیمت صفر پر شد» معنای متفاوتی دارد. در بازتنظیم پرتفوی، رد شدن سفارش ممکن است وجه نقد را بیاستفاده بگذارد یا اکسپوژر دارایی قبلی را حفظ کند؛ این نتیجه را در وضعیت حساب ثبت کنید.
چطور اجرای بکتست و معاملات کاغذی را همراستا نگه دارید؟
هر جا معماری سیستم اجازه میدهد، از یک تابع اعتبارسنجی سفارش در هر دو مسیر استفاده کنید. همان قواعد ابزار معاملاتی در زمان مربوط، سفارش مطلوب و وضعیت حساب را به آن بدهید. خروجی باید یا یک سفارش نرمالشده باشد یا دلیل مشخصی برای رد آن. سپس شبیهساز میتواند فرضهای مربوط به اجرا را روی سفارشهای نرمالشده اعمال کند و آداپتور کاغذی فیلدهای معادل را به صرافی بفرستد.
همراه هر اجرا، یک نسخه تاریخدار از فراداده فیلترها نگه دارید. اگر گام مقدار یا حداقل سفارش تغییر کند، باید بدانید بکتست از کدام قاعده استفاده کرده است. واکشی فراداده امروز برای بازپخش استراتژی یکساله میتواند سفارشهای قدیمی را نامعتبر نشان دهد یا این تصور را ایجاد کند که سفارشهای تاریخی شدنی بودهاند، در حالی که چنین نبوده است.
وقتی صرافی کاغذی گزارشی از رد سفارش میدهد، پیش از تغییر سیگنال، فیلدهای ارسالی و نسخه فیلتر را مقایسه کنید. اگر نرمالساز سفارش در بکتست 0.037 BTC تولید کرده، در حالی که صرافی فقط افزایشهای 0.001 BTC را میپذیرفته، اختلاف در آداپتور یا فراداده است. اگر سفارش ارسالی معتبر بوده اما اجرا نشده، مسئله به رفتار اجرا مربوط است؛ مثل قیمت، نقدشوندگی یا مدت اعتبار سفارش.
پیش از اعتماد به مقایسه چه چیزهایی را بررسی کنید؟
برای هر بازتنظیم، سابقه ممیزی مختصری نگه دارید: موقعیت هدف، موقعیت فعلی، سفارش خام، سفارش نرمالشده، نسخه فیلتر مربوط و وضعیت نهایی. سپس رکوردهای کاغذی و شبیهسازیشده را برای همان زمان تصمیمگیری مقایسه کنید.
- آیا هر دو مسیر از ضریب قرارداد و واحدهای مقدار یکسانی استفاده کردند؟
- آیا جهت گرد کردن و سیاست حداقل سفارش را به یک شکل اعمال کردند؟
- آیا مقادیر فیلتر هنگام ایجاد سفارش معتبر بودند؟
- آیا سفارش ردشده یا انجامنشده در هر دو حساب، موقعیت و وجه نقد یکسانی بر جا گذاشت؟
ممکن است استراتژی شما همچنان درست باشد، حتی اگر نخستین بازتنظیم کاغذی آن شکست بخورد. اما تا وقتی شبیهساز نتواند توضیح دهد چرا آن سفارش پذیرفته، گرد، رد یا کنار گذاشته میشد، منحنی ارزش ویژه آن سیستم اجرایی متفاوتی را توصیف میکند؛ سیستمی متفاوت از آنچه قصد اجرای آن را دارید.
← همهٔ مطالب

