امروز می خواهیم یک مدل ML ایجاد کنیم که حرکت قیمت را در کتاب سفارش پیش بینی می کند. این مقاله شامل یک چرخه کامل از تحقیقات است: دریافت داده ، تجسم ، مهندسی ویژگی ، مدل سازی ، تنظیم دقیق الگوریتم ، تخمین کیفیت و غیره.
کتاب سفارش چیست؟
کتاب سفارش یک لیست الکترونیکی از خرید و فروش سفارشات برای یک ابزار امنیتی یا مالی خاص است که بر اساس سطح قیمت سازماندهی شده است. یک کتاب سفارش تعداد سهام پیشنهادی یا ارائه شده در هر نقطه قیمت یا عمق بازار را نشان می دهد. داده های عمق بازار به معامله گران کمک می کند تا تعیین کنند که قیمت یک امنیت خاص می تواند در کجا قرار بگیرد. به عنوان مثال ، یک معامله گر ممکن است از داده های عمق بازار برای درک گسترش پیشنهاد برای امنیت استفاده کند ، به همراه حجم جمع شده در بالای هر دو شکل. اوراق بهادار با عمق بازار قوی معمولاً از حجم قوی برخوردار بوده و کاملاً مایع است و به معامله گران این امکان را می دهد تا سفارشات بزرگی را بدون تأثیر قابل توجهی در قیمت بازار قرار دهند. اطلاعات بیشتر در اینجا است.
عمق بازار به نظر می رسد ، تجسم می تواند متفاوت باشد و به نرم افزار بستگی دارد
راه دیگر برای تجسم کتاب های سفارش ، لیستی با پیشنهادات و پیشنهادات است
قیمت متوسط قیمت بین بهترین قیمت فروشندگان سهام یا کالای پیشنهادی کالا است یا قیمت و بهترین قیمت خریداران سهام یا قیمت پیشنهادی کالا را درخواست می کند. این به سادگی می تواند به عنوان میانگین پیشنهاد فعلی تعریف شود و از قیمت های نقل شده بپرسید.
هدف ما ایجاد مدلی است که قیمت متوسط را پیش بینی می کند.
دریافت داده ها
بیایید نمونه های داده را از Lobster بارگیری کنیم. این سرویس Google ، Apple ، Amazon ، Intel ، Microsoft دارایی را به عنوان نمونه ای با 3 سطح به عنوان عمق بازار (1 ، 5 ، 10 سطح) ارائه می دهد.
اول از همه ، من پیشنهاد می کنم قیمت متوسط و تفاوت حجم Ask-Bid را برای همه دارایی های موجود تجسم کنید. ما باید کتابخانه های لازم را وارد کنیم
MSFT و INTC توزیع های کمی عجیب و متفاوت دارند. نمودار قیمت میانی یک منحنی زنگ تنها ندارد ، به نظر می رسد ترکیبی از دو توزیع است. همچنین ، اختلاف حجم بیش از حد متقارن است و با سایر دارایی ها متفاوت است.
مهندسی ویژگی
این قسمت به دلیل کیفیت مدل به طور مستقیم به آن بسیار مهم است. ما باید طیف گسترده ای از روابط بین پیشنهادات ، درخواست ها ، حجم ها و همچنین بین اعماق مختلف داده ها را در این ویژگی های جدید منعکس کنیم.
فرمول های بعدی امکان ایجاد این ویژگی ها را فراهم می کنند
این ویژگی ها اولین بخش از مهندسی ویژگی ها است. بخش دوم اضافه کردن اجزای تاخیر است. این بدان معناست که ما با برخی از تاخیر در زمان ویژگی هایی را تغییر می دهیم و به عنوان ستون اضافه می کنیم. این مثال نشان می دهد که چگونه در مجموعه داده های خام کار می کند (ویژگی های جدید نیست).
کد بعدی این دو بخش مهندسی ویژگی را ارائه می دهد و ستون هدف log_retu_mid_price را اضافه می کند.
مدل سازی از طریق تقویت شیب و تنظیم دقیق
هدف ما این است که نشان دهیم که آموزش یک GBM در حال انجام به حداقل رساندن شیب در برابر برخی از عملکردهای از دست دادن بین هدف واقعی ما ، Y و تقریب ماست ،
این بدان معنی است که اضافه کردن مدل های ضعیف ،
به نوعی نزول شیب را انجام می دهد. این منطقی است که برهنه کردن تقریب ما ، نزدیکتر و نزدیکتر به هدف واقعی Y می تواند نزول شیب باشد. به عنوان مثال ، در هر مرحله ، باقیمانده کوچکتر می شود. ما باید برخی از عملکردهای مربوط به فاصله بین هدف واقعی و تقریب خود را به حداقل برسانیم. بیایید قیاس گلف باز را مجدداً مورد بررسی قرار دهیم و خطای مربع بین تقریب و مقدار واقعی را تجسم کنیم
اطلاعات بیشتر می توانید در اینجا پیدا کنید.
ما از اجرای Yandex در تقویت شیب که CatBoost می نامد استفاده خواهیم کرد. این کتابخانه در بیشتر موارد با سرعت و کیفیت بهتر از سایرین است
این الگوریتم چند پارامتر دارد که تأثیر زیادی بر کیفیت دارد:
- n_estimators - حداکثر تعداد درختانی که می توانند هنگام حل مشکلات یادگیری ماشین ساخته شوند.
- عمق - حداکثر عمق درختان ؛
- Leaing_rate - این تنظیم برای کاهش مرحله شیب استفاده می شود. این بر زمان کلی آموزش تأثیر می گذارد: هرچه ارزش آن کوچکتر باشد ، تکرار بیشتر برای آموزش لازم است.
- L2_LEAF_REG - ضریب در اصطلاح تنظیم L2 عملکرد هزینه. هر مقدار مثبت مجاز است.
همچنین ، ما پارامترهایی از ویژگی ها داریم:
- سطح - عمق بازار ؛
- تعداد مراحل زمانی-چند تاخیر برای ساخت.
از لحاظ تئوریکی ، هر دارایی ما می تواند مجموعه منحصر به فردی از پارامترها را داشته باشد. برای این کار ، ما باید عملکرد عینی را تعریف کنیم که کیفیت مدل را تخمین می زند
مجموعه قطار از ابتدا 50 ٪ از داده ها را تشکیل می دهد. داده های اعتبار سنجی برای تنظیم دقیق مدل استفاده می شود. 25 ٪ آخر داده های مورد نیاز برای آزمایش نتیجه نهایی و این داده های نگهدارنده است.
بعد از مرحله تنظیم دقیق ، مدل نهایی را در هر دو قسمت (مجموعه قطار و اعتبار سنجی) آموزش می دهیم و مدل را با استفاده از قسمت آخر تست می کنیم. بیایید این را کد کنیم
سوال دوم این است که چه مقادیری باید به عنوان پیش بینی پایه استفاده شود. بسیاری از تحقیقات ادعا می کنند که بازارها غیرقابل پیش بینی هستند. اغلب، قیمت بعدی پیش بینی شده همان قیمت آخر به اضافه مقداری نویز است، و به نظر می رسد
یعنی اگر بخواهیم بازده را پیش بینی کنیم حدود 0 به اضافه نویز خواهد بود. این نتیجه را می توانید در این مقاله توسط Rafael Schultze-Kraft پیدا کنید.
پایه ما هم مشابه است. این رویکرد در تابع do_experiment پیاده سازی شده است. اجازه دهید این آزمایش do_experiment(asset_name) را اجرا کنیم، جایی که asset_name از لیست (AAPL، AMZN، GOOG، INTC، MSFT) است.
پارامترها و معیارهای مهم را در این جدول جمع آوری کنید
AMZN و GOOG پارامترهای بهینه یکسانی دارند. اغلب، سطح و عمق دارای حداکثر یا نزدیک به حداکثر مقدار هستند.
همانطور که به یاد داریم، در مرحله اکتشافی در ابتدا، سه دارایی اول (AAPL، AMZN، GOOG) توزیع خوبی از قیمت و حجم پیشنهادی داشتند. دو دارایی آخر (INTC، MSFT) توزیع های عجیبی داشتند.
این جدول نشان می دهد که ما یک تفاوت آماری معنی داری در خطا برای AAPL، AMZN، GOOG دریافت کردیم و خط پایه شکسته شده است (رنگ سبز). حد بالایی بازه برای مدلسازی کمتر از حد پایین برای خط پایه است.
برای INTC ما نتیجه قابل توجهی نداریم، فواصل متقاطع هستند (رنگ خاکستری). در مورد MSFT، نتیجه داده شده بدتر از خط پایه (رنگ قرمز) است. احتمالاً علت آن الگوی شناسایی شده در توزیع ها است (شاید برخی از فعالیت های بازارسازان یا موارد دیگر).
بیایید به مهم ترین ویژگی های مدل ها نگاه کنیم
همانطور که می بینیم، برای مدل های موفق، مهم ترین ویژگی ها با مقادیر اخیر log_retu_ask، log_retu_bid، log_ask_div_bid، و غیره مرتبط است.
نتیجه گیری
- رویکردی را برای مدل سازی کتاب سفارش از طریق تقویت گرادیان پیشنهاد کرد. کدی که می توانید در GitHub پیدا کنید.
- روش مهندسی ویژگی توصیف و رسمی شد. اهمیت ویژگی نشان داده شده است.
- برآورد کیفیت نشان داده شده است. برای برخی از دارایی ها نتیجه خوبی حاصل شد.
نحوه بهبود نتیجه:
- تعداد max_evals در بهینه سازی را تغییر دهید.
- max_depth، n_estimators را در برازش تغییر دهید.
- ویژگی های جدید را که بهتر از ویژگی های فعلی یا ترکیبی از ویژگی های داده شده هستند اضافه کنید.
- آزمایش ها را با استفاده از داده های بیشتر انجام دهید تا مدل بهتری بدست آورید.
- تاریخچه را با تعداد سطوح بیشتر در کتاب سفارش پیدا کنید.
- از مدلی استفاده کنید که به طور خاص برای سری های زمانی توسعه یافته است (مانند LSTM، GRU و غیره).
فارکس کاران ایران...
ما را در سایت فارکس کاران ایران دنبال می کنید
برچسب :
نویسنده : ديناروند فهيمه
بازدید : 34
تاريخ : پنجشنبه
16 شهريور
1402 ساعت: 11:33