"معاملات الگوریتمی فرایندی برای اجرای سفارشات با استفاده از دستورالعمل های معاملاتی خودکار و از پیش برنامه ریزی شده برای محاسبه متغیرهایی مانند قیمت است, زمان و حجم. الگوریتم مجموعه ای از دستورالعمل ها برای حل یک مشکل است. الگوریتم های رایانه ای با گذشت زمان بخش های کوچکی از سفارش کامل را به بازار ارسال می کنند."- سرمایه گذاری.
مفاهیم اساسی¶
تصمیم برای خرید یا فروش اوراق بهادار مالی از یک الگوریتم از پیش تعیین شده با هدف کسب سود استفاده می کند. در پلت فرم ما این الگوریتم یک اسکریپت پایتون است که داده های تاریخی را به عنوان ورودی می گیرد و تصمیم به خرید/فروش به عنوان خروجی می دهد.
اجازه دهید ما می گویند که ما یک سرمایه 1 میلیون دلار و ما می خواهیم به سرمایه گذاری در یک نمونه کارها متشکل از سه سهام: اپل (اپل), الفبای شرکت کلاس ج (گوگ), شرکت تسلا (تسلا). اجازه دهید نگاهی به قیمت باز این سهام برای برخی از دوره داشته باشیم. قیمت باز قیمتی است که یک اوراق بهادار برای اولین بار پس از افتتاح صرافی در یک روز معاملاتی معامله می کند. ما از داده های تاریخی بورس نزدک به عنوان ورودی استفاده می کنیم:
تاریخ | اپل | گوگل | تسلا |
---|---|---|---|
02 مارس 2020 | 282.28 | 1,351.61 | 711.26 |
03 مارس 2020 | 303.67 | 1,399.42 | 805.00 |
04 مارس 2020 | 296.44 | 1,359.23 | 763.96 |
جدول 1: قیمت باز کردن سهام به دلار. نزدک تبادل.
اکنون باید الگوریتمی را تعریف کنیم که سرمایه ما را به سهام اختصاص دهد. این الگوریتم را می توان جستجوی هوشمندانه برخی از رویدادهای جهانی منعکس شده در داده ها دانست. فرض کنید که ما یک فرضیه ساده داریم: اگر قیمت باز پایین باشد بیشتر سرمایه گذاری کنید. این فرضیه را می توان از طریق فرمول بیان کرد:
از این پس از نمادهای پررنگ برای بردارها استفاده خواهیم کرد. ما می توانیم یک فرم ماتریس الگوریتم را با استفاده از فرمول (2) به جدول 1 دریافت کنیم:
تاریخ | اپل | گوگل | تسلا |
---|---|---|---|
02 مارس 2020 | 0.00354258183 | 0.00073985839 | 0.00140595562 |
03 مارس 2020 | 0.00329304837 | 0.00071458175 | 0.00124223602 |
04 مارس 2020 | 0.00337336391 | 0.00073571065 | 0.00130896905 |
جدول 2: فرم ماتریس الگوریتم.
سرمایه متناسب با مقادیر ماتریس توزیع می شود. برای دریافت سهام سرمایه سرمایه گذاری شده در هر سهام, ماتریس (جدول 2) باید عادی شود (\('ل_1'\) هنجار) به یک برای هر روز:
تاریخ | اپل | گوگل | تسلا |
---|---|---|---|
02 مارس 2020 | 0.6228 | 0.1301 | 0.2472 |
03 مارس 2020 | 0.6273 | 0.1361 | 0.2366 |
04 مارس 2020 | 0.6226 | 0.1358 | 0.2416 |
جدول 3: وزن نهایی الگوریتم.
بنابراین $1M·0.6228 = 622,800$ دالر اختصاص داده شده برای AAPL on Mar 02, 2020; GOOG و TSLA دریافت $130,100 دلار$ و $247,200$ USD. مقادیر ماتریس (3) وزن الگوریتم نامیده می شود.
موقعیت بلند در مقابل موقعیت کوتاه¶
برای فروش سهام به سادگی باید وزن منفی را در الگوریتم اختصاص داد. اجازه دهید فرض کنیم که شما وزن های زیر را دارید:
تاریخ | اپل | گوگل | تسلا |
---|---|---|---|
02 مارس 2020 | 0.4 | 0.4 | -0.2 |
علامت مثبت به این معنی است که ما موقعیت بلندمدت داریم (خرید سهام) علامت منفی به این معنی است که ما یک موقعیت کوتاه داریم (فروش سهام). بنابراین 1M دلار سرمایه اختصاص داده خواهد شد در ابعاد زیر است: $400,000$ USD به AAPL; $400,000$ USD به GOOG; $-200,000$ به TSLA.
اطلاعات بیشتر
برای پلتفرم ما از یک درمان ساده از پوزیشن های کوتاه و موقعیت های بلند مدت استفاده می کنیم. برای یک تجارت در محیط واقعی باید به یاد داشته باشید که موقعیت های کوتاه با خطرات بالاتر همراه است. سرمایه گذار فروش سهام که او هنوز خود را ندارد (به عنوان یک قاعده از حساب کارگزار خود) موظف به خرید پس از مدتی است. بنابراین سرمایه گذار انتظار کاهش قیمت ها را دارد و در برابر بازار بازی می کند. این منجر به چندین خطر می شود:
برخی از سهام سخت به قرض گرفتن هستند. دلیل تقاضای بالا است, تعداد محدودی از اوراق بهادار و غیره. برای یک موقعیت کوتاه برای چنین اوراق بهادار, کارگزار به اتهام هزینه های اضافی.
فروشنده کوتاه وظیفه پرداخت سود سهام به شخصی را دارد که از او وام گرفته شده است.
ضررهای احتمالی در یک فروش کوتاه می تواند بی پایان باشد زیرا از لحاظ نظری حداکثر قیمت سهام نامحدود است. از سوی دیگر, قیمت سهام نمی خواهد زیر صفر سقوط, بنابراین حداکثر سود محدود است.
حتی اگر تخمین درست باشد ممکن است لحظه نامناسب باشد. نگه داشتن یک موقعیت کوتاه با افزایش قیمت برای مدت طولانی بسیار بی سود است.
بازده نسبی¶
سبد سرمایه گذاری طبق الگوریتم یک بار در روز توزیع می شود (صرافی 252 روز کاری در سال دارد). توزیع مجدد در ابتدای روز اتفاق می افتد. برای پلت فرم ما فرض می کنیم که خرید سهام در قیمت باز رخ می دهد.
حقوق صاحبان سهام با پیش بینی صحیح تغییرات قیمت رشد می کند. تغییر روزانه حقوق صاحبان سهام پس از پایان روز معاملاتی تخمین زده می شود و به شدت به قیمت نزدیک بستگی دارد. بستن قیمتی است که یک معامله امنیتی در یک روز معاملاتی انجام می شود.
نتایج الگوریتم محاسبه شده بر روی داده های تاریخی معمولا بر روی نمودار حقوق صاحبان سهام به منظور درک رفتار سود تجمعی نمایش داده می شود. در پلتفرم ما حقوق صاحبان سهام اولیه را روی 1 تنظیم می کنیم تا به راحتی مقیاس بندی شود.
بازده نسبی به سادگی نشان می دهد که چقدر سرمایه تغییر کرده است. برای روز \('من^'\) ما بازده نسبی را در کسرهای واحد معرفی می کنیم:
اطلاعات بیشتر
گاهی اوقات مهم است که بدانیم چگونه سود انباشته (سود انباشته) محاسبه می شود. بگویید ما سرمایه خود را متناسب با بردار وزن برای روز \(`من^`\) اختصاص می دهیم. بنابراین ما سهام را با قیمت باز خریداری می کنیم و موقعیت های زیر را دریافت می کنیم:
جایی که متغیرهای پررنگ در فضای سهام برای بردارها ایستاده اند. برای روز بعد یک الگوریتم یک بردار جدید از وزن تولید می کند که سرمایه ما را به موقعیت های جدید توزیع می کند. توزیع مجدد ابزارهای نمونه کارها منجر به تلفات سرمایه ای می شود که عمدتا با کمیسیون کارگزار و لغزش مرتبط است .
این کاملا روشن است که بخش بیشتری از سرمایه ما باید توزیع مجدد, کمیسیون کارگزار بیشتر سود ما تاثیر می گذارد. برای تجارت واقعی, لغزش تاثیر قابل توجهی بر سود از کمیسیون, بنابراین در پلت فرم ما, ما فقط لغزش در نظر.
لغزش است? برای فروش/خرید سهام به خریدار/فروشنده نیاز داریم. در صورتی که هیچ پیشنهاد در بورس وجود دارد, سفارش در یک قیمت جدید باز. بدین ترتیب, ما خرید تعداد مورد نظر از سهام در قطعات, با استفاده از پیشنهادات برای خرید/فروش یک شماره خاص از سهام در یک قیمت خاص. لغزش را طبق فرمول زیر محاسبه می کنیم:
جایی که \ ('\متن (14)'\) - یک شاخص نوسانات بازار است. میانگین دامنه واقعی (\( ` \ ` )'\)) شاخص یک میانگین متحرک است (کارشناسی ارشد) بیش از ن روز از محدوده واقعی (فوروم ) مقادیر:
\[\شروعاکنون می توانیم فرمول حقوق صاحبان سهام را برای روز اول معرفی کنیم:
کیفیت الگوریتم¶
هنگامی که ما یک الگوریتم ساخته اند و رسم حقوق صاحبان سهام در داده های تاریخی, ما نیاز به استفاده از مجموعه ای از معیارهای ارزیابی عملکرد.
نسبت شارپ¶
ابتدا برای تخمین سوددهی الگوریتم نسبت شارپ را که مهمترین و محبوبترین معیار است اندازهگیری میکنیم. برای پلتفرم ما از سیستم عامل سالانه استفاده می کنیم و فرض می کنیم که به طور متوسط 252 روز معاملاتی در سال وجود دارد. فرمول سالانه برای روزهای ن در زیر نشان داده شده است:
جایی که مقدار مورد انتظار را نشان می دهد.
شمارنده یک بازده متوسط روزانه است. اندازه کتاب با اندازه حقوق صاحبان سهام تغییر می کند, بنابراین عدد یک میانگین هندسی است.
مخرج انحراف معیار بازده اضافی نمونه کارها است. روش دیگر برای فکر کردن در مورد مخرج این است که به معنای نوسان است.
بنابراین نسبت شارپ بازده واحد ریسک (نوسانات) است. هرچه نسبت شارپ بیشتر باشد بهتر است (شکل دوم). برای ارسال یک استراتژی با موفقیت, پدر باید بالاتر از باشد 1 در دوره در نمونه.
اطلاعات بیشتر
در سال 1994 ویلیام شارپ نسبت شارپ را چنین تعریف کرد:
- ارزش مورد انتظار از بیش از بازده نمونه کارها بیش از بازده معیار, \ (``زیگما_پ`\) - انحراف معیار بازده اضافی نمونه کارها. ما نرخ بدون ریسک را صفر فرض می کنیم (روش جایگزین برای محاسبه نسبت شارپ تنظیم بازده کل اس اند پ 500 به عنوان نرخ بدون ریسک است). برای روزهای معاملاتی:
جایی که \ ('\خط بیش از حد'\) - مقدار مورد انتظار بازده نسبی را نشان می دهد. اندازه کتاب با اندازه حقوق صاحبان سهام تغییر می کند, بنابراین عدد یک میانگین هندسی است. در حال حاضر ما پدر معرفی, کوچک در یک دوره دلخواه \ ('تی'\) :
برای نسبت شارپ سالانه می توان قرار داد تی= 252 - روزهای معاملاتی در سال. ما از نسبت شارپ سالانه (تی= 252) برای تخمین الگوریتم ها در سیستم عامل خود استفاده می کنیم.
منحصر به فرد بودن¶
یک الگوریتم خوب باید همپوشانی با سیگنال های شناخته شده و از قبل موجود را به حداقل برساند. منحصر به فرد بودن را می توان از نظر حداکثر همبستگی الگوریتم با مجموعه الگوریتم های موجود تعریف کرد:
در نمونه و خارج از نمونه¶
نصب بیش از حد ساده است. اگر یک تلاش می کند مقدار قابل توجهی از تنظیمات الگوریتم, بک تست را می توان به هر عملکرد مورد نظر نصب شده. با تقسیم داده ها به نمونه در نمونه و خارج از برش های نمونه می توان از نصب بیش از حد جلوگیری کرد.
در نمونه
منظور ما از" نمونه " نمونه داده است. یک مجموعه در نمونه (است) مشابه یک مجموعه تمرین در یادگیری ماشین است.
خارج از نمونه
مجموعه خارج از نمونه (سیستم عامل) مشابه مجموعه تست در یادگیری ماشین است. تمرین خوبی است که الگوریتم خود را بر روی داده ها توسعه دهید و بر روی سیستم عامل داده های دیده نشده تست کنید.
رقابت
عملکرد یک سیستم عامل الگوریتم خوب احترام به دوره داعش را کاهش نمی دهد.
بهبود الگوریتم¶
خنثی سازی¶
اجازه دهید عملکرد سهام 500 شرکت بزرگ فهرست شده در بورس اوراق بهادار در ایالات متحده را به اصطلاح شاخص اس و پی 500 تحلیل کنیم. همانطور که می بینید, بازار به طور متوسط رشد می کند. بازگشت اس 500 از چند درصد به بیش از 20 درصد در برخی سالها متفاوت است. این بدان معنی است که به سادگی باز کردن پوزیشن های طولانی یک ایده خوب است?
متاسفانه بحران های مالی دوره ای رخ می دهد:
1987, دوشنبه سیاه.
2000-2003, سقوط از داتکامز.
2007-2008. بحران مالی.
پیامدهای بحران ها در نمودار قابل مشاهده است و به صورت افت بازار تا 30 درصد ظاهر می شود. خطرناک است که فکر کنیم بحران ها داستان های ترسناکی از گذشته هستند.
ما می توانیم نفوذ بازار را با تعادل موقعیت های بلند/کوتاه برای الگوریتم ما حذف کنیم. بنابراین یک الگوریتم خنثی در بازار خواهد بود. خنثی سازی می تواند برای کل بازار یا هر صنعت (یا گروه کوچکتر) انجام شود. از نظر ریاضی خنثی سازی بازار ابتدایی است.
بگو, ما یک بردار از وزنiبرای من روز, داده شده توسط الگوریتم. برای اینکه الگوریتم را به یک الگوریتم خنثی در بازار تبدیل کنید کافی است معادله زیر را برای هر روز اعمال کنید:
وزنه های خنثی شدهi= وزنi- میانگین (وزنi ).
اکنون میانگین وزن برای هر روز صفر است. این بدان معناست که ما نه پول سرمایه گذاری می کنیم و نه از بازار خارج می کنیم.