یک ردیف داده بازار میتواند کاملاً دقیق باشد و بااینحال مدرک قابل اتکایی برای بکتست نباشد. معامله انجام شده، قیمت درست است و زمانمهر معتبر؛ اما شاید فید آن را با تأخیر رسانده، فروشنده داده بعداً اصلاحش کرده یا بازارِ ثبتشده در دسترس استراتژی شما نبوده باشد.
برای اینکه بدانید داده تاریخی قابل معامله بوده یا نه، فقط زمان رویداد را بررسی نکنید. باید بدانید ردیف داده چه چیزی را توصیف میکند، چه زمانی در دسترس سیستم قرار گرفته، نماینده کدام صرافی یا ابزار است و آیا آن مظنه یا معامله میتوانسته مبنای معقولی برای سفارش شما باشد.
آیا قیمت تاریخیِ درست برای بکتست کافی است؟
نه. دقت پاسخ میدهد: «منبع در نهایت چه قیمتی را ثبت کرد؟» بکتست باید به این پرسشها هم پاسخ دهد: «استراتژی من در زمان تصمیمگیری چه چیزی میتوانست بداند؟» و «چه چیزی میتوانست اجرا کند؟» اینها پرسشهای جداگانهای هستند.
فرض کنید معاملهای در بازار رمزارز در 12:00:00.120 ثبت میشود، اما جریان فروشنده داده آن را در 12:00:00.480 به فرایند شما میرساند. استراتژیای که در .200 تصمیم میگیرد نمیتواند از آن معامله استفاده کند، هرچند زمان رویداد از زمان تصمیم جلوتر باشد. اگر فایل تاریخی فقط زمان رویداد را نگه دارد، بکتست ممکن است بیسروصدا اطلاعاتی در اختیار استراتژی بگذارد که فرایند زندهاش هنوز دریافت نکرده بود.
| زمان یا فیلد | چه چیزی را نشان میدهد | پیامد نبودن آن در بکتست |
|---|---|---|
| زمان رویداد | زمانی که صرافی میگوید رویداد رخ داده است | اشتباه گرفتن زمان بازار با زمان دسترسی استراتژی |
| زمان دریافت | زمانی که جمعآورنده شما پیام را دریافت کرده است | استفاده از داده با تأخیر، انگار که بیدرنگ رسیده باشد |
| شناسه توالی یا بهروزرسانی | جایگاه رویداد در ترتیب فید | اعمال بهروزرسانیها خارج از ترتیب یا رد شدن بیسروصدای آنها |
| زمان اصلاح | زمانی که مقدار تاریخیِ اصلاحشده معلوم شده است | بکتست با مقداری که در فید اصلی وجود نداشته است |
اگر آرشیو شما زمان دریافت را ندارد، این کاستی را صادقانه بیان کنید. میتوانید فرضی درباره تأخیر را آزمایش کنید یا ادعا را به پژوهش بر اساس زمان رویداد محدود کنید. از روی زمانمهرهایی که هرگز ذخیره نشدهاند، نمیتوانید مجموعه اطلاعات دقیق را بازسازی کنید.
چطور بفهمم اجرای یک مظنه ممکن بوده است؟
از بازاری شروع کنید که سفارش شما به آن میرسید. بهترین قیمت خرید و فروش تجمیعشده ممکن است چند صرافی را خلاصه کند؛ اما ثابت نمیکند حساب شما به حجم نمایشدادهشده دسترسی داشته، مظنه هنگام رسیدن سفارش هنوز برقرار بوده یا صرافی نوع سفارش شما را میپذیرفته است.
برای سفارش بازار، فرض پر شدن در قیمت میانی معمولاً خیالی است. برآورد مفیدتر، دفتر سفارش قابل مشاهده را متناسب با حجم سفارش پیش میبرد و سپس کارمزدها و فرضی درباره تأخیر یا اثر بازار را اضافه میکند. اگر فقط دادههای بهترین قیمت را دارید، ادعا را محدود کنید: میتوانید سطح اول را برآورد کنید، اما نمیتوانید عمقی را که هرگز ثبت نشده است استنباط کنید.
برای سفارش محدود، رسیدن قیمت به سطح سفارش به معنای پر شدن آن نیست. سفارشهای جلوتر از شما ممکن است ابتدا حجم موجود را مصرف کنند. جایگاه در صف معمولاً از روی اسنپشاتهای معمولی مشخص نیست؛ بنابراین قاعده پر شدن بر اساس برخورد قیمت را باید سناریویی خوشبینانه دانست، نه واقعیتی درباره آنچه رخ داده است.
یک کندل 1 دقیقهای میتواند نشان دهد که کمینه قیمت از سطح سفارش محدود شما عبور کرده است. اما نمیتواند بگوید سفارش در انتظار شما پیش از رسیدن قیمت به آن سطح به صرافی رسیده، چه حجمی آنجا معامله شده یا چه تعداد سفارش در صف جلوی شما بوده است.
پیش از اعتماد به آرشیو داده بازار، چه چیزهایی را بررسی کنم؟
اول سراغ موارد ساده و روزمره میروم. این بررسیها بیش از هر مدل اجرای پیچیدهای که روی فیدی خراب سوار شود، جلوی پژوهش نادرست را میگیرند.
- پوشش: آیا بازههای مفقود، رویدادهای تکراری، شکاف در توالی یا جهشهای بیتوضیحِ حجم صفر وجود دارد؟
- هویت بازار: آیا نماد در گذر زمان به همان صرافی، قرارداد، ارز مظنه و مشخصات ابزار اشاره میکند؟
- دسترسپذیری: آیا زمان رویداد و زمان دریافت هر دو حفظ شدهاند؟ اگر نه، چه فرضی درباره تأخیر، نتیجه را محدود میکند؟
- اصلاحات: آیا میتوانید پیام اصلی را از دادههای تکمیلی یا اصلاحات بعدی فروشنده جدا کنید؟
- واحدها: آیا قیمتها، مقدارها، ضرایب قرارداد و زمانمهرها بهشکلی یکسان تفسیر میشوند؟
این بررسی آخر آنقدر ساده به نظر میرسد که شاید بدیهی باشد. یک بار صبحی را صرف دنبال کردن تغییر ظاهری رژیم نوسان کردم که در نهایت معلوم شد یک فیلد مقدار پس از مهاجرت فید، واحدش عوض شده است. نمودار زیبا بود؛ واحد اشتباه بود.
چطور آزمایش کنم که دسترسپذیری داده نتیجه را تغییر میدهد؟
یک آزمون حساسیت کوچک پیرامون مرز تصمیمگیری استراتژی اجرا کنید. داده قابل استفاده را بهاندازه تأخیرهای واقعبینانه جابهجا کنید، بهروزرسانیهایی را که پیوستگی توالیشان مخدوش است کنار بگذارید و هرجا داده دفتر سفارش صرافی واقعی را دارید، پرشدن سفارشها را با آن مقایسه کنید. نتیجه اصلی و نتیجه پس از افت کیفیت را هر دو گزارش دهید. اگر تأخیری ناچیز اثر را از بین ببرد، ممکن است استراتژی به برتری اطلاعاتیای متکی باشد که زیرساخت جمعآوری داده شما نمیتواند بهطور قابل اتکا فراهم کند.
برای نمونهای مشخص، فرض کنید سیگنال وقتی فعال میشود که بهترین قیمت خرید بهاندازه 1 تیک بالا برود. یک بار آن را با زمان رویداد صرافی و بار دیگر با زمان دریافت جمعآورنده بازپخش کنید. اگر نسخه زمان رویداد 40 معامله و نسخه زمان دریافت 27 معامله انجام دهد، این تفاوت بخشی از شواهد مربوط به استراتژی است. عملکرد در هر بازپخش هم همینطور. بازپخش ضعیفتر را پنهان نکنید، چون دادههایش ظاهر مرتبتری ندارند.
معامله کاغذی گام بعدی مفیدی است، چون تأخیر فید، مظنههای کهنه، خطاهای نگاشت نماد و محدودیتهای صرافی را در همان مسیر عملیاتیای آشکار میکند که سیستم پژوهشی شما به کار میبرد. بااینحال، همه صفهای زنده یا اثر بازار را بازسازی نمیکند. این محدودیت را روشن نگه دارید.
«داده قابل معامله» در عمل یعنی چه؟
یعنی بکتست بتواند توضیح دهد یک مشاهده چه زمانی رخ داده، چه زمانی استراتژی توانسته آن را دریافت کند، از کدام بازار آمده و چه شواهدی از اجرا از پر شدن فرضشده پشتیبانی میکنند. یک سری قیمت تمیز نقطه شروع است. پژوهش زمانی اعتبار پیدا میکند که فرضهای مربوط به زمانبندی، دسترسی و پر شدن سفارش از بررسی سربلند بیرون بیایند و نتیجه پس از واقعبینانهتر کردن این فرضها هم همچنان معنادار باشد.
← همهٔ مطالب


