الگوریتم چیست؟

الگوریتم چیست؟
27 می 2022
تعریف الگوریتم
الگوریتم [1] مجموعهای از دستورالعملها برای حل یک مسأله یا انجام یک کار است. دستور پخت، یک مثال رایج برای الگوریتم است که شامل دستورالعملهای خاصی برای تهیه غذا یا خوراک میباشد. تمامی دستگاههای رایانهای از الگوریتمها در قالب رویههای سختافزاری و نرمافزاری برای انجام عملکردهای خود، استفاده میکنند.
در امور مالی، الگوریتمها در توسعه سیستمهای معاملاتی خودکار، معاملات فرکانس بالا (HFT) و همچنین قیمتگذاری ابزارهای پیشرفته مالی مانند ابزارهای مشتقه، اهمیت پیدا کردهاند.
نکات مهم
1- یک الگوریتم مجموعهای از دستورالعملها برای حل مسأله یا به نتیجه رساندن یک کار میباشد.
2- همهی دستگاههای رایانهای از الگوریتمها استفاده میکنند؛ این الگوریتمها زمان لازم برای انجام دستی کارها را کاهش میدهند.
3- معاملات الگوریتمی که به عنوان معاملات خودکار یا معاملات جعبه سیاه نیز شناخته میشود، از یک برنامهی کامپیوتری برای خرید یا فروش اوراق بهادار [2] با سرعتی که برای انسان غیر ممکن است، استفاده میکند.
4- معاملات الگوریتمی بیش از 60 درصد از کل حجم معاملات بازارهای جهانی سهام را تشکیل میدهند.
5- معاملهگران الگوریتمی قادرند اطلاعات را سریعتر از انسانها تحلیل کنند که این امر به آنها امکان عکسالعمل سریع در مقابل تغییرات لحظهای قیمت را میدهد.
درک الگوریتمها
شرکتهای مالی از الگوریتمها در زمینههایی نظیر قیمتگذاری وام، معاملات سهام، مدیریت دارایی-بدهی [3] و بسیاری از فعالیتهای خودکار استفاده میکنند. به طور مثال، معاملات الگوریتمی، که تحت عنوان الگوتریدینگ نیز شناخته میشوند، برای تصمیمگیری در مورد زمان، قیمت و حجم سفارشهای سهام، مورد استفاده قرار میگیرند.
الگوتریدینگ که به آن معاملات خودکار یا معاملات جعبه سیاه نیز میگویند، از برنامههای کامپیوتری در خرید و فروش اوراق بهادار با سرعتی که برای انسان غیرممکن است، استفاده میکند.
بخش بزرگی از معاملات سهام در ایالات متحده آمریکا با استفاده از الگوریتمها انجام میشود. همچنین، الگوریتمها به طور گستردهای در معاملات فارکس [4] مورد استفاده قرار میگیرند. بخش بزرگی از معاملات مذکور را معاملات فرکانس بالا (HFT) تشکیل میدهد که اغلب از سوی صندوقهای پوشش ریسک [5] به کار گرفته میشوند.
HFT شامل استفاده از کامپیوترها و الگوریتمهای پیچیده در معاملات است. یکی از عوارض جانبی الگوریتمها، کاهش قابل توجه در مدت زمان متوسط نگهداری سهام است- از 8 سال در دههی 1950 به کمتر از 6 ماه در سال 2020.
الگوریتمهای کامپیوتری با کوتاه کردن زمان انجام دستی کارها، زندگی را آسانتر میکنند. در دنیای ماشینی، الگوریتمها به معاملهگران اجازه میدهند تا مهارت و تمرکز بالاتری داشته باشند. الگوریتمها فرآیندهای کند را تسریع میکنند. الگوریتمها میتوانند در بسیاری از موارد، به ویژه در اتوماسیون، در هزینه شرکتها صرفهجویی کنند.
از آنجایی که قیمت سهام، اوراق قرضه و کالاها در اشکال مختلف آنلاین و در دادههای معاملاتی ظاهر میشوند، فرآیندی که طی آن یک الگوریتم تعداد زیادی از دادههای مالی را تجزیهوتحلیل میکند، آسان میشود. کابر برنامه به سادگی مولفهها را تنظیم کرده و زمانی که اوراق بهادار معیارهای مورد نظر معاملهگر را برآورده میکند، نتیجهی مطلوب را بدست میآورد.
الگوریتمها در معاملات برای کاهش جنبهی احساسی سرمایهگذاری استفاده میشوند. الگوریتمها توسط شرکتهای تامین سرمایه [6]، صندوقهای پوشش ریسک و موارد مشابه مورد استفاده قرار میگیرند. با این وجود، برخی از برنامهها و استراتژیهای مبتنی بر الگوریتم، قابل خرید و اجرا از سوی سرمایهگذاران خرد میباشد.
انواع مختلفی از الگوریتمها بر اساس استراتژیهای مورد استفادهی آنها، از قبیل استراتژی آربیتراژ (Arbitrage) [7] و زمان سنجی بازار (Market Timing) [8] وجود دارند.
در سال 2019، 60 تا 70 درصد از حجم معاملات جهانی سهام توسط الگوریتمها اجرا شد.

انواع معاملات الگوریتمی
انواع مختلفی از معاملات الگوریتمی، به سرمایهگذاران در تصمیمگیری برای خرید یا فروش کمک میکند. انواع کلیدی الگوریتمها بر اساس استراتژیهایی که هر یک به کار میگیرند، طبقهبندی میشوند. به عنوان نمونه، یک الگوریتم بازگشت به میانگین [9] قیمتهای کوتاهمدت را نسبت به قیمت متوسط و بلندمدت بررسی کرده و اگر قیمت سهامی بسیار بالاتر از متوسط باشد، ممکن است معاملهگر آن را برای کسب سود سریع به صورت استقراضی بفروشد.
سایر استراتژیهای الگوریتمی میتوانند زمانسنجی بازار، تعادل مجدد صندوق شاخصی [10] یا آربیتراژ باشند. استراتژیهای دیگر، مانند تعادل صندوق و اسکالپینگ (Scalping) [11] نیز وجود دارند.
آربیتراژ
آربیتراژ به دنبال بهرهمندی از اختلاف قیمت داراییهای یکسان در بازارهای متفاوت است. الگوریتمها قادرند با تحلیل سریع دادهها و شناسایی تفاوتهای قیمتی و سپس اجرای سریع عملیات خرید و فروش داراییهای مذکور، روی این استراتژی سرمایهگذاری کنند.
یک دارایی ممکن است به یک قیمت خاص در یک بورس، اما به قیمتی متفاوت در بورسی دیگر، معامله شود، الگوریتم با خرید دارایی به قیمت پایین در یک بورس سرمایهگذاری کرده و بلافاصله آن را به قیمت بالاتر در بورس دیگر میفروشد.
زمانسنجی بازار
استراتژیهای زمانسنجی بازار (Market Timing) از بک تست یا پیشآزمون (Backtesting) برای شبیهسازی معاملات فرضی به منظور ساخت یک مدل معاملاتی استفاده میکنند. هدف از این استراتژیها پیشبینی نحوه عملکرد یک دارایی در طول زمان است. سپس الگوریتم، بر اساس بهترین زمان پیشبینی شده برای خرید یا فروش معامله می کند. این استراتژیها، مجموعه دادهها و آزمایشهای بسیاری را در بر میگیرد.
بازگشت به میانگین
استراتژیهای بازگشت به میانگین (Mean Reversion) متوسط قیمت سهام را در طول یک دورهی زمانی یا دورهی معاملاتی، به سرعت محاسبه میکنند. اگر قیمت سهام خارج از قیمت میانگین باشد، بر اساس انحراف معیار یا شاخصهای گذشته، الگوریتم مطابق آن معامله میکند.
به عنوان مثال، اگر قیمت سهام پایینتر از قیمت متوسط باشد، معامله بر اساس این فرض که قیمت به متوسط خود برمیگردد (مثلا قیمت رشد میکند)، میتواند یک معاملهی ارزشمند محسوب شود. این نوع استراتژی، از الگوریتمهای محبوب به شمار میرود.
مثال معاملهی الگوریتمی
در زیر نمونهای از یک الگوریتم برای معامله آورده شده است. یک معاملهگر دستورالعملهایی را در حساب خودکار خود ایجاد میکند تا در صورتی که میانگین متحرک [12] 50 روزه سهم پایینتر از میانگین متحرک 200 روزه برسد، تعداد 100 سهم را بفروشد. برعکس، معاملهگر می تواند دستورالعملهایی برای خرید تعداد 100 سهم در صورت افزایش میانگین متحرک 50 روزه سهام به بالاتر از میانگین متحرک 200 روزه، تعریف کند.
الگوریتمهای پیچیده، قبل از خرید یا فروش اوراق بهادار صدها معیار را در نظر میگیرند. کامپیوترها به سرعت دستورالعملهای حسابهای خودکار را برای رسیدن به نتایج مطلوب، ترکیب میکنند. بدون کامپیوترها، معاملات پیچیده، زمانبر و احتمالاً غیرممکن خواهد بود.

الگوریتم ها در علم کامپیوتر
در علم کامپیوتر، یک برنامهنویس باید پنج بخش اساسی یک الگوریتم را برای ایجاد یک برنامهی موفق بهکار بگیرد:
1- مسأله را به زبان ریاضی بیان کند.
2- فرمولها و فرآیندهایی که به نتیجه منجر میشوند را ایجاد کند.
3- مولفههای نتیجه را وارد کند.
4- برای آزمایش دقت برنامه، آن را به طور مکرر اجرا کند.
5- جمعبندی نهایی الگوریتم، از گذر مولفهها از مجموعهی دستورالعملهای برنامه، منتج میشود.
در الگوریتمهای مالی، هرچه برنامه پیچیدهتر باشد، میتواند دادههای بیشتری را برای ارزیابی دقیق در خصوص خرید یا فروش اوراق بهادار به کار بگیرد. برنامهنویسها الگوریتمهای پیچیده را به طور کامل آزمایش میکنند تا مطمئن شوند که این برنامهها بدون خطا هستند.
الگوریتمهای بسیاری را برای یک مسأله میتوان استفاده کرد. با این حال، برخی از آنها، فرآیند را از بقیه سادهتر میکنند.
مزایا و معایب معاملات الگوریتمی
معاملات الگوریتمی دارای مزایای حذف عنصر انسانی از معاملات است، اما معایب خود را نیز دارد.
مزایا
شاید بزرگترین مزیت معاملات الگوریتمی این است که عنصر انسانی را حذف میکند. با معاملات الگوریتمی، بخش احساسی معاملات خنثی میشود.
همچنین، امکان بالقوهی معاملهی بیش از حد [13] (Overtrading)، یا معامله کمتر از حد [14] (Undertrading)، زمانی که معاملهگران در صورت نتیجه نگرفتن از یک استراتژی، بلافاصله ناامید میشوند، کاهش مییابد. علاوه بر این، کامپیوترها میتوانند سریعتر از انسان معامله کنند، که به آنها امکان سازگاری سریعتر با بازارهای در حال تغییر را میدهد.
معایب
مشکل بزرگ معاملات الگوریتمی این است که به کامپیوترها متکی است. الگوریتمها بدون برق (الکتریسیته) یا اینترنت کار نمیکنند. خرابی کامپیوتر نیز میتواند معاملات الگوریتمی را مختل کند.
همچنین، در حالی که ممکن است یک استراتژی مبتنی بر الگوریتم عملکرد خوبی روی کاغذ یا در شبیهسازی داشته باشد، هیچ تضمینی وجود ندارد که در معاملات واقعی، کار کند. ممکن است معاملهگران یک مدل به ظاهر بینقص ایجاد کنند که در بستر شرایط گذشتهی بازار کار میکند ولی در بازار جاری شکست بخورد.
مزایا
1- عناصر و احساسات انسانی را حذف می کند.
2- هنگام آزمایش یک استراتژی، ثبات ایجاد میکند.
3- معامله بیش از حد یا کمتر از حد را کاهش میدهد.
4- کامپیوترها سریعتر با تغییرات قیمت و بازار سازگار میشوند.
معایب
1- بدون برق یا اینترنت کار نمیکند.
2- میتواند روی کاغذ خوب به نظر برسد اما عملکرد ضعیف داشته باشد.
3- امکان بهینهسازی بیش از حد [15] (Fine Tuning) وجود دارد.
4- به دادههای زیاد، توان کامپیوتر، تخصص و غیره نیاز دارد.
الگوریتم و معاملات الگوریتمی
صندوقهای پوشش ریسک از چه الگوریتم هایی استفاده میکنند؟
صندوقهای پوشش ریسک از انواع مختلفی از الگوریتمها و استراتژیهای مبتنی بر الگوریتم استفاده میکنند. این امر شامل استفاده از مجموعهای بزرگ از دادهها (مانند تصاویر ماهوارهای و سیستمهای فروش) برای تحلیل سرمایهگذاریهای بالقوه میباشد. همچنین، الگوریتمها و یادگیری ماشین [16] برای بهینهسازی عملیات اداری در صندوقهای پوشش ریسک، شامل عملیات تطبیق، مورد استفاده قرار میگیرند.
آیا الگوتریدینگ دشوار است؟
الگوتریدینگ واقعی در ظاهر آسان است، شما یک استراتژی را اجرا میکنید و رایانه تمام کار را انجام میدهد. با این وجود، قسمت سخت کار، صرف کار و زمان کافی برای درک الگوریتم یا ساختن یک الگوریتم برای معامله است.
آیا معاملات الگوریتمی قابل اعتماد هستند؟
با این فرض که یک استراتژی سودآور برای اجرا ساختهاید، معاملات الگوریتمی نسبتاً قابل اعتماد هستند. برخی از استراتژیهای معاملاتی قابل خریداری میباشند، هرچند این استراتژیها همچنان برای اجرا به توان کامپیوتری کافی نیاز دارند.
آیا بانکها از معاملات الگوریتمی استفاده میکنند؟
بانکها، متشکل از معاملهگران نهادی و خرد، از معاملات الگوریتمی استفاده میکنند. این شامل شرکتهای تامین سرمایه و صندوقهای پوشش ریسک که از معاملات الگوریتمی برای اجرای سفارشهای عمده یا تضمین معاملات سریع استفاده میکنند، میباشد.
الگوریتمهای شکارچی چگونه کار میکنند؟
الگوریتمهای معاملاتی و سرمایهگذاری را میتوان به عنوان الگوریتمهای شکارچی [17] (Predatory Algos) در نظر گرفت، چرا که این الگوریتم ها ممکن است، نقدپذیری سهم را کاهش داده یا هزینههای معاملاتی را افزایش دهند. هرچند، الگوریتمهای صرفاً شکارچی برای هدایت بازار در یک جهت خاص یا فراهم کردن امکان بهرهمندی معاملهگران از موضوع نقدپذیری، ایجاد شدهاند.
سوالات متداول درباره الگوریتم
u003ch3u003eالگوریتم چیست؟u003c/h3u003e
u003cpu003eالگوریتمu003cspan style=u0022color: #3366ffu0022u003e u003c/spanu003eمجموعهای از u003cbu003eدستورالعملها u003c/bu003eبرای حل یک u003cbu003eمسأله u003c/bu003eیا u003cbu003eانجام یک کار u003c/bu003eاست. u003cbu003eدستور پختu003c/bu003e، یک مثال رایج برای الگوریتم است که شامل دستوالعملهای خاصی برای تهیه غذا یا خوراک میباشد. تمامی دستگاههای رایانهای از الگوریتمها در قالب رویههای u003cbu003eسختافزاری u003c/bu003eو u003cbu003eنرمافزاری u003c/bu003eبرای انجام عملکردهای خود، استفاده میکنند.u003c/pu003e
u003ch3u003eشرکتهای مالی از الگوریتمها برای چه مواردی استفاده میکنند؟u003c/h3u003e
u003cpu003eشرکتهای مالی از الگوریتمها در زمینههایی نظیر u003cbu003eقیمتگذاری وامu003c/bu003e، u003cbu003eمعاملات سهامu003c/bu003e، u003cbu003eمدیریت دارایی-بدهیu003c/bu003eu003cspan style=u0022color: #3366ffu0022u003eu003cbu003e u003c/bu003eu003c/spanu003eو بسیاری از فعالیتهای خودکار استفاده میکنند. به طور مثال، معاملات الگوریتمی، که تحت عنوان u003cspan style=u0022color: #000000u0022u003eالگوتریدینگu003c/spanu003e نیز شناخته میشوند، برای تصمیمگیری در مورد u003cbu003eزمانu003c/bu003e، u003cbu003eقیمت u003c/bu003eو u003cbu003eحجم سفارشهای سهامu003c/bu003e، مورد استفاده قرار میگیرند.u003c/pu003e
u003ch3u003eانواع استراتژیهای معاملاتی الگوریتمی چیست؟u003c/h3u003e
u003cpu003eانواع مختلفی از الگوریتمها بر اساس استراتژیهای مورد استفادهی آنها، از قبیل u003cbu003eاستراتژی آربیتراژ u003c/bu003e(u003cbu003eArbitrageu003c/bu003e) و u003cbu003eزمان سنجی بازار u003c/bu003e(Market Timing) وجود دارند.u003c/pu003e
u003ch3u003eپنج بخش اساسی یک الگوریتم چیست؟u003c/h3u003e
u003cpu003e1- مسأله را به u003cbu003eزبان ریاضی u003c/bu003eبیان کند.u003cbr /u003e2- u003cbu003eفرمولها u003c/bu003eو u003cbu003eفرآیندهایی u003c/bu003eکه به نتیجه منجر میشوند را ایجاد کند.u003cbr /u003e3- u003cbu003eمولفههای نتیجه u003c/bu003eرا وارد کند.u003cbr /u003e4- برای آزمایش دقت برنامه، آن را به طور u003cbu003eمکرر u003c/bu003eاجرا کند.u003cbr /u003e5- جمعبندی نهایی الگوریتم، از گذر مولفهها از مجموعهی دستورالعملهای برنامه، منتج میشود.u003c/pu003e








