الگوتریدینگ، معاملهگری به سبک آینده
کامیپوتر در دنیای امروز نقشی اساسی دارد. مثالهای بسیاری میتوانیم برای آن بیاوریم. یکی از مهمترین بخشهایی که ورود کامپیوتر آن را متحول کرده، بازار سهام است. ورود کامپیوتر به بازارهای سرمایه، باعث آنلاین شدن خریدوفروش سهام و دیجیتالی کردن دادههای بازار شد. این کار، راه را برای ظهور سیستمهای پیشرفتهتر نیز باز کرد. سیستمهای
کامیپوتر در دنیای امروز نقشی اساسی دارد. مثالهای بسیاری میتوانیم برای آن بیاوریم. یکی از مهمترین بخشهایی که ورود کامپیوتر آن را متحول کرده، بازار سهام است. ورود کامپیوتر به بازارهای سرمایه، باعث آنلاین شدن خریدوفروش سهام و دیجیتالی کردن دادههای بازار شد. این کار، راه را برای ظهور سیستمهای پیشرفتهتر نیز باز کرد. سیستمهای هوشمندی که خود میتوانند بازار را تحلیل و ریسکهای آن را تعیین کنند. الگوتریدینگ (Algorithmic Trading or Algo Trading) یکی از این سیستمها است.
الگوتردینگ سیستم هوشمند یا نیمههوشمندی است که برای یافتن فرصتهای سرمایهگذاری، بازارهای گوناگون را بررسی میکند. این سیستم پس از یافتن این فرصتهای تجاری، میتواند معامله انجام داده و سود کسب کند. ما در این مقاله میخواهیم به الگوتریدینگ و مهارتهای لازم برای وارد شدن به این حوزه بپردازیم.
الگوتریدینگ چیست؟
شاید بتوانیم عبارت «معامله الگوریتمی» را بهعنوان معادل فارسی الگوتریدینگ بیان کنیم. الگوتریدینگ به استفاده از الگوریتمهای خودکار برای تحلیل بازار، یافتن فرصتهای تجاری و انجام معامله گفته میشود. برای چنین کاری به یک شبکه ارتباطی با سیستم معاملات و کارگزار و برنامههایی کامپیوتری برای خرید، فروش و انجام دیگر عملیات تجاری مثل کنترل قیمت و شرایط بازار نیاز داریم.
یک مثال از الگوتریدینگ
بهمنظور انجام معاملات با الگوریتمها، ما از یک برنامه کامپیوتری متصل شده به سیستم معاملاتی (مستقیم یا بهواسطه کارگزاری) استفاده میکنیم. این کامپیوتر بهجای ما معامله میکند. چنین برنامه یا الگوریتمی صرفا مجموعهای از دستورات قابلفهم برای کامپیوتر است. یک مثال ساده از این سیستم میتواند شامل چنین دستوراتی باشند:
- دادههای مربوط به قیمت سهام شرکت الف را بخوان
- میانگین و انحراف معیار آنها را حساب کن
- اگر جدیدترین مقدار قیمت، بیشتر از میانگین و انحراف معیار کمتر از یک مقدار آستانه باشد، دستور خرید n سهم جدید را ارسال کن
در الگوتریدینگ کامپیوتر بهجای ما معامله میکند.
اینیک مثال ساده است. الگوریتمهای معاملاتی میتوانند بسیار پیچیدهتر باشند؛ اما با همین مثال میتوانیم نکاتی مفیدی را بیان کنیم. الگوریتم سادهای که در اینجا توصیف شد، جنبههای مشترکی با تمام الگوریتمهای معاملاتی دارد:
۱- دریافت دادهها
الگوتریدینگ یک برنامه برای دریافت دادهها که در اینجا شامل خواندن قیمتها میشود، لازم دارد. باید توجه داشت که خود این برنامه میتواند بسیار پیچیده باشد. این برنامه باید به پایگاه داده بازار متصل گردد. شاید لازم باشد از برنامهای پیچیدهتر برای رصد همزمان بازار نیز بهره ببریم.
۲- تحلیل و محاسبه
حداقل یک ابزار برای تحلیل دادهها که در این مثال میانگینگیری و محاسبه انحراف معیار است، نیز در الگوتریدینگ لازم است.
۳- بررسی شرایط
شرایط موردنظر با ابزار تحلیل و محاسبه دست آمدهاند و اگر درست باشند به تصمیمی برای خرید یا فروش منجر میشوند. در این مثال، شرط این است که اگر قیمت بیشتر از میانگین و انحراف معیار کمتر از یک مقدار آستانه باشد، دستور خرید ارسال شود.
۴- اجرای دستور معامله
اجرای دستور معامله نیز ممکن است یک بخش پیچیده دیگر باشد. این بخش نیازمند روشهای ارتباطی با بازار یا کارگزاری است. مدیریت ارتباطات و ردگیری معامله هم از کارهای است که در این بخش انجام میشوند.
اجزای فرعی
دیگر اجزای مشترک الگوریتمهای معاملاتی میتوانند شامل این بخشها باشند:
۱- ابزارهای مدیریت ریسک
برای مثال محاسبات اندازه و حجم سهام، میزان سرمایه و ابزارهایی برای بررسی عملکرد و رفتار سیستم از ابزارهای مدیریت ریسک در الگوتریدینگ است.
۲- ابزارهای مدیریت پورتفولیو
ابزارهای مدیریت پورتفویلو تا حدی با موارد بالا نیز در ارتباط هستند و برای بررسی و مدیریت تعداد و حجم سهمهای موجود در پورتفولیو و تحلیل آنها به کار میروند.
۳- ابزارهای کنترل و ذخیرهسازی دادهها
مشخصا برای کار کردن با این حجم از دادهها، نیازمند ابزارهایی هستیم که دادهها را کنترل کنیم، در مواقع لزوم بهسرعت آنها را بخوانیم و اطلاعات جدید را نیز ذخیره کنیم.
۴- تحلیلها و پیگیریهای پس از معامله
انجام معامله فقط یک بخش از کار است. برای داشتن تصویری از آینده بازار، سرمایهها، افزایش دقت پیشبینی و تصحیح و بهبود ابزارها، لازم است پس از انجام معامله نیز آنها را دنبال کنیم.
انواع الگوتریدینگ
الگوتریدینگ بسیار گسترده است؛ اما نوعی از الگوتریدینگ که تقاضای بیشتری دارد، الگوریتمهایی هستند که به دنبال یافتن فرصتهایی برای خرید ارزان و فروش گران میگردند. این یک سیستمِ بر پایه سیگنال است. در این دستهبندی وسیع، زیرمجموعههای گوناگونی برای الگوتریدینگ ایجادشده است. بااینکه هنوز نامگذاری مشترکی در این حوزه شکل نگرفته، اما میتوان این نوع از الگوریتمها را بهصورت زیر دستهبندی کرد.
تحلیلهای تکنیکال
تحلیلهای تکنیکال (Technical Analysis) به مجموعه تحلیلهای گفته میشود که از الگوهای قیمت و حجم برای پیشبینی تغییرات آینده بازار استفاده میکنند. بر اساس این گفته، این تحلیلها بر پایه فرضی هستند که میگوید در تغییرات قیمت، الگوهایی تکراری وجود دارند.
تحلیل تکنیکال یکی از ابزارهای مورد استفاده در الگوتریدینگ است.
ابزارهای تحلیل تکنیکال شامل مجموعهای از شاخصهای قیمت و حجم مثل شاخص قدرت نسبی (Relative Strength Index or RSI) و میانگین متحرک همگرا-واگرا (Moving Average Convergence Divergence or MACD) هستند.
نشانگرهایی همچون سطوح مقاومت و حمایت و آرایشهایی مثل آرایش پرچم، پرچم سهگوشه و الگوهایی همچون الگوی سر و شانه نیز در آن وجود دارند. حتی دستهای از الگوهای شمعی مثل الگوی دربرگیرنده کاهشی (Engulfing Bear) که میتوانند جهتگیری آینده بازار را نشان دهند نیز در تحلیل تکنیکال استفاده میشوند.
معاملات مقداری
معاملات مقداری (Quantitative Trading) نیز همچون تحلیل تکنیکال معانی متعددی برای افراد گوناگون دارند. برای برخی، معاملات مقداری شکل دیگری از تحلیل تکنیکال است. معاملات مقداری بر پایه چند مدل ریاضی و آماری از رفتار بازار ساختهشدهاند.
مدلهای بسیار زیادی برای پیشبینی رفتار بازار وجود دارند. بااینهمه، یافتن مدلی که بهاندازه کافی دقیق باشد و بتواند سود تولید کند کار آسانی نیست. گاهی اوقات ابزارهای تحلیل تکنیکال نیز در معامله مقداری استفاده میشود.
یکی از مدلهای محبوب این حوزه، استراتژی تکانه مقطعی (cross-sectional momentum strategy) است. این مدل بر خرید برندهها و فروش بازندهها تاکید دارد. مدل محبوب دیگری همچون استراتژی میانگین معکوس (mean-reversion strategy) هم بر فروش برندهها و خرید بازندهها تاکید میکند.
مدلهای بسیار زیادی برای پیشبینی رفتار بازار وجود دارند؛ اما دلیل یافتن مدلی که بهاندازه کافی دقیق باشد و بتواند سود تولید کند، کار آسانی نیست.
یکی مهمترین زیرمجموعههای معاملات مقداری، یادگیری ماشینی و هوش مصنوعی است. یادگیری ماشینی و هوش مصنوعی امروزه توجه زیادی را جلب کردهاند.
برای اینکه بتوانید تصویر روشنی از چیستی یادگیری ماشینی به دست آورید به مقاله یادگیری ماشینی و تصویر حیرتآور آینده مراجعه کنید. با استفاده از یادگیری ماشینی و تغذیه آن با دادهها و مدلهای آماری بازار، میتوانیم بینش خوبی نسبت به بازار به دست آوریم. این ابزارها همینالان هم برای کمک به تصمیمگیریهای تجاری و بهبود عملکرد سیستمهای پیچیده استفاده میشوند.
معاملات سریع
طبق تعریف، معاملات سریع (Hight Frequency Trading or HFT) به معاملاتی که در یک میلیونم ثانیه رخ میدهند، گفته میشود. هیچ انسانی بدون کمک کامپیوتر نمیتواند معاملات سریع انجام دهد. در این معاملات، دریافت یک سیگنال خاص میتواند منجر به خرید یا فروش شود.
در معاملات سریع تاخیر و سرعت انجام عملیات از سیگنال دریافتی که منجر به عملیات شده هم مهمتر است.
بااینکه معاملات سریع کاملا بر پایه سیگنالهای دریافتی کار میکنند؛ اما سرعت و تاخیر در انجام عملیات، از خود سیگنال مهمتر هستند. این مسئله ایجاب میکند که کد اجراکننده این معاملات تا جای ممکن سریع و بهینه باشد. چنین کدی را میتوان در زبانهای سطح پایین همچون ++C نوشت.
چرا الگوتریدینگ مهم است؟
الگوتریدینگ و اتوماسیون در فضای معاملات سازمانی مدتها است که استفاده میشوند؛ اما بعدها در بازارهای دیگر هم جایگاه پیداکرد. برای مثال در سال ۲۰۰۶، ۴۰ درصد سفارشها در بازار بروس لندن با سیستمهای الگوتریدینگ صورت میگرفت. این عدد در سال ۲۰۰۷ به ۶۰ و در سال ۲۰۱۰ به بیش از ۸۰ درصد رسید.
چرا این تمایل به سمت الگوتریدینگ وجود دارد؟
مهمترین دلایل برای این مسئله متمرکز بر محدودیتهای انسانی هستند. برای مثال:
- کامپیوترها میتوانند حجم عظیمی از دادهها را در یکچشم بر هم زدن پردازش کنند. این توانایی آنها را به ابزاری قدرتمند برای اسکن همزمان صدها بازار و یافتن فرصتهای معاملاتی تبدیل میکند؛ اما یک معاملهگر انسانی نمیتواند از عهده این حجم کار برآید.
- کامپیوترها با مشکلاتی که انسانها مواجه میشوند، رودررو نیستند. مشکلاتی از قبیل خطاهای محاسباتی، مدتزمان لازم برای واردکردن معاملات در یک سیستم و خطای ناشی از انگشتان چاق (Fat Fingers) که میتواند به فشار اشتباهی کلیدها منجر شود.
کامپیوترها با مشکلاتی از قبیل خطاهای محاسباتی، مدتزمان لازم برای واردکردن معاملات در یک سیستم و خطای ناشی از انگشتان چاق مواجه نیستند.
- کامپیوترها هیچ وابستگی احساسی به معامله یا بازار ندارند. برای آنها فقط یک مسئله مهم است. اینکه آیا فرصت تجاری وجود دارد یا نه.
- کامپیوترها دائما و بهصورت پیوسته کار میکنند؛ اما انسانها فقط میتوانند چندین ساعت در روز کار کنند. انسانها خسته میشوند و زندگی اجتماعی نیاز دارند.
بااینهمه، هیچکدام این تفاوتها دلیلی محکمی نیست که به یک الگوریتم کاملا اعتماد کنیم و اجازه دهیم بدون نظارت انسانی به کار خود ادامه دهد.
برای موفقیت در الگوتریدینگ باید چهکار کنیم؟
اگر بخواهیم یک سیستم الگوتریدینگ را ایجاد و اجرایی کنیم به مجموعههای مهارت گوناگون از برنامهنویسی، آمار و بازار را لازم داریم.
برای یادگیری هرکدام از مباحث، دانستن بنیانهای نظری مهم هستند. ازاینروی بهتر است در اولین گام، به یادگیری این مفاهیم بپردازید. جهت حرفهای شدن در الگوتریدینگ یا همان معاملات الگوریتمی، قطعا باید مدلهای نظری را در عمل استفاده کنید. استفاده عملی از چیزهایی که یاد میگیرید مهمترین بخش قضیه است. کسانی که میخواهند سیستم الگوتریدینگ خود را بسازند به مهارتهایی که در ادامه میآید نیاز دارند.
حداقل مهارتهای فنی که برای موفقیت طولانیمدت در الگوتریدینگ لازم دارید، به این شرح هستند:
- برنامهنویسی
- آمار
- مدیریت ریسک
مهارتهای دیگری را نیز میتوان به این لیست اضافه کرد؛ اما این مهارتها کمی فراتر از چیزی میشود که ما به آن «حداقلهای لازم» میگوییم.
۱- برنامهنویسی
اگر برنامهنویسی بلد نیستید، بهتر است از همین امروز شروع کنید. برای اینکه بتوانید کار جدی در الگوتریدینگ انجام دهید، شما قطعا باید برنامهنویسی بلد باشید. برنامهنویسی میتواند شمارا در تحلیلها و جستجوی بازارها توانا کند.
کلیک، راست کلیک، پنجره و آیکونها را فراموش کنید. شما نمیتوانید بدون کدنویسی در الگوتریدینگ موفق شوید. کمی که برنامهنویسی کنید، لذت آن را خواهید چشید.
برنامهنویسی از مهمترین مهارتها برای کار با الگوتریدینگ است.
بهتر است با دستور زبانهای بر پایه C مثل ++C و جاوا آشنا باشید؛ اما همزمان سعی کنید به مبانی، ساختار دادهها و الگوریتمها هم مسلط شوید. مهارتهایی برنامهنویسی که برای الگوتریدینگ لازم دارید اینها هستند:
پایتون
پایتون (Python) یک زبان ساده و قدرتمند است و ابزارها و کتابخانههای فراوانی برای پردازش دادهها در اختیار میگذارد. این کتابخانهها و ابزارها کار تحلیل دادهها را بسیار آسان میکنند.
زبان R
زبان برنامهنویسی R برای کارهای آماری و تحلیل دادههای آماری بزرگ ساختهشده است. ازاینروی کتابخانههای و مجموعههای بزرگ، قدرتمند و رایگان فراوانی برای تحلیل دادهها و کارهای آماری در این زبان وجود دارند. این ابزارها بهخوبی میتوانند در الگوتریدینگ به کار آیند.
ابزارهای موجود در زبان R بهخوبی میتوانند در الگوتریدینگ به کار آیند.
برنامهنویسی با نرمافزار متلب
آشنایی و کار با متلب (MATLAB) بهاندازه پایتون و R مهم نیست و راستش برای استفاده جدی در الگوتریدینگ چندان هم به درد نمیخورد. اگر هم واقعا متلب لازم داشته باشید، میتوانید از همتای کدباز آن یعنی اوکتاو (Octave) استفاده کنید. بااینهمه برخی از افراد که با پیشزمینه مهندسی وارد الگوتریدینگ شدهاند، متلب را ترجیح میدهند.
۲- آمار
بدون داشتن دانش خوبی درباره آمار، نمیتوان در الگوتریدینگ موفق بود. آمار در همه کارهای معاملاتی وجود دارد. از محاسبه ریسک تا تنظیم استراتژیها و تصمیمگیری، آمار همواره حضور و اهمیت دارد. با داشتن دانش آمار خواهید دید که این دانش، بسیاری از ایدههای جدید در الگوتریدینگ را به شما الهام میکند. برای مثال:
- آزمونهای آماری میتوانند بینشی در مورد فرآیندهای پشت زمینه جریانهای بازار ارائه دهند. با کسب این بینش میتوان در مورد بازار تصمیم گرفت و ایدههای جدید ارائه داد.
- دانستن میزان همبستگی اجزای پورتفویلو، برای مدیریت ریسک مفید است.
- رگرسیون دادهها میتواند بینشی در مورد نحوه عملکرد ایدهها و رهیافتهای خاص ارائه دهد.
رگرسیون دادهها میتواند بینشی در مورد نحوه عملکرد ایدهها و رهیافتهای استفاده شده، ارائه دهد.
علاوه بر اینها، مهمترین کاربرد آمار در الگوتریدینگ مربوط به تفسیر و آزمودن مدلها و نتایج شبیهسازی است. در مقاله آینده به شبیهسازی و مدلسازیهای مورداستفاده در الگوتریدینگ خواهیم پرداخت.
۳- مدیریت ریسک
برای بهکارگیری الگوتریدینگ، ریسکهای فراوانی باید در نظر گرفته شوند. برای مثال ریسکهای زیرساختی مثل حالتی که سرور خراب شود، برق قطع شده یا اتصال اینترنت بهصورت موقتی از بین برود. ریسکهای همراه با طرفین معامله مثل ریسک اینکه طرف معامله شما نتواند تراکنش را بهموقع و بهدرستی انجام دهد یا ریسک ورشکست شدن کارگزار نیز وجود دارند.
برای بهکارگیری الگوتریدینگ، ریسکهای فراوانی باید در نظر گرفته شوند.
بااینکه تمامی این ریسکها جدی هستند و جای تامل دارند، اما ما میخواهیم روی مدیریت ریسک پورتفویلو و معاملات تمرکز کنیم. در این نوع مدیریت ریسک، تلاش میکنیم احتمال ضرر را به دست آوریم و متناسب با آن، استراتژی و پورتفولیو بچینیم. داشتن دانش محاسبه و مدیریت ریسک میتواند فرآیند طراحی و اجرای سیستم الگوتریدینگ را بهینه کند.
مشکلات الگوتریدینگ چیست؟
علیرغم مزایایی که استفاده از الگوتریدینگ دارد، مثل هر اختراع دیگری مشکلاتی نیز با آن همراه هستند. میتوان برخی از این مشکلات را به شکل زیر دستهبندی کرد:
- الگورتریدینگ نیازمند مهارتهایی است که شما یا باید خود یاد بگیرید یا به دیگرانی که چنین مهارتهایی را دارند رجوع کنید. مشخصا دانش برنامهنویسی برای الگوتریدینگ لازم است؛ اما اگر بتوانید دانشی در مورد ساختار بازار، سختافزار کامپیوتر، نرمافزار و شبکه داشته باشید، مفید خواهد بود.
- ابزارهایی مثل یادگیری ماشینی که امروزه در معاملات الگوریتمی استفاده میشوند، بهینه و بسیار قدرتمند هستند اما برای استفاده از آنها، نیازمند دانش خاصی هستید. استفاده از الگوتریدینگ درواقع سخت و نیازمند مهارتهایی از چندین حوزه است.
- برای اجرای یک سیستم الگوتریدینگ نیازمند زیرساختهایی همچون برق اضطراری و اتصال دائم شبکه اینترنت هستید. امروزه این زیرساختها بهواسطه سرورها و خدمات ابری ارزان، بهراحتی قابل تامین هستند.
استفاده از الگوتریدینگ نیازمند مهارتهایی از چندین حوزه است.
- الگوتریدینگ روی سختافزار کامپیوتر اجرا میشود؛ اگر به هر دلیلی سرور الگوتریدینگ خراب یا خاموش شود، چه اتفاقی میافتد؟
- برای استفاده از الگوتریدینگ ما یک یا چند برنامه کامپیوتری را همزمان اجرا میکنیم. ممکن است به دلیل پیچیدگی، عدم آگاهی کامل از جزئیات آن یا حتی خستگی، نتوانیم دائما روی آن کنترل داشته باشیم.
بگذار و بگذر؟
علیرغم تمام آنچه درباره قدرت الگوتریدینگ گفتیم، هیچوقت نباید ناظر انسانی را از صحنه خارج کنیم. ما نمیتوانیم یک سیستم الگوتریدینگ را ایجاد کرده و آن را به حال خود رها کنیم تا سود تولید کند. ازاینروی نهتنها ساخت و استفاده از الگوتریدینگ سخت است؛ بلکه مدیریت آن نیز حجم کار زیادی میطلبد. شاید بتوان ابزارهایی برای هشدار دادن ایجاد کرد که در مواقع حساس، شما را از طریق تلفن همراه آگاه کند. از سوی دیگر لازم است معاملات، متناسب با وضعیت هرروز، تجمیع شوند. چنین کاری برای اطمینان از عملکرد صحیح سیستم لازم است.
الگوتریدینگ یک ابزار قدرتمند و هیجانانگیز در بازارهای مالی است. شاید بهتر باشد بهجای اینکه شما با استرس هرروزه به دنبال کسب سود در بازارهای مالی باشید، بگذارید همین کار را کامپیوترتان برای شما انجام دهد.
نظرات