Які мови програмування і чому використовуються у сфері фінансів



Багатьох людей, що цікавляться темою фінансів, займає питання про те, яку мову програмування краще всього підходить для роботи, скажімо, на фондовому ринку. На нього неможливо відповісти однозначно, оскільки різні мови підходять для різних завдань.

У нашому сьогоднішньому матеріалі ми поговоримо саме про те, як зрозуміти, яку з існуючих технологій слід використовувати в конкретній ситуації на фондовому ринку.

Прийняття рішень про інвестиції

Перш за все слід визначитися, для чого нам знадобилося щось програмувати. Часті застосування — розробка ПЗ для торгівлі на біржі або аналізу великих масивів даних. Від того, який стиль роботи на ринку передбачається, і буде багато в чому залежати вибір мови програмування. Кажучи точніше, він буде залежати від вимог до швидкості роботи програм.

Ось, що говорить про це розробник сервісу YCharts Джеффрі Шек у відповідному тред на Quora:

Якщо мова йде не про високочастотної торгівлі, то очевидно, що рішення про інвестиції будуть прийматися не на основі секунд часу обробки. Швидше тут головними завданнями буде пошук і збір інформації. Приміром, багато хедж-фонди інвестують тільки в чітко певних нішах (унікальні індустрії, неліквідні боргові ринки, проблемні компанії тощо). Зібрати потрібну інформацію в такому випадку буде нелегко, навіть якщо працювати з різними API — розраховувати на те, що інформацію вдасться просто викачати з різних джерел без «танців з бубном».

Таким чином, якщо вам потрібно агрегувати дані для аналізу, то швидше за все ви захочете використовувати що-то з великою кількістю бібліотек, досить швидкодіючим, з великою кількістю вже написаного коду для вирішення різних завдань (щоб кожен раз не винаходити колесо). Частіше всього це буде щось типу C#, Java або Python.

Якщо потрібен швидкий торговий робот

Існують ситуації, коли швидкість роботи є пріоритетом. В такому випадку розробники вдаються до використання ефективних низькорівневих мов.



Керівник напрямку алгоритмічного трейдингу в АТ «Фінам» Олексій Афанасієвський в одній з наших публікацій називав такі технології, відповідні в подібній ситуації:

Для цих завдань дуже добре підходить C++ і чистий C. Буває і так, що швидкі роботи створюються і мало не на асемблері — тут варто згадати механізми прямого читання-запису даних в пам'ять мережевої карти, минаючи стандартні механізми роботи через драйвери, а також роботу з «супербыстрым програмованим залізом» начебто FPGA.

Під капотом бізнесу

Програмування торгових алгоритмів — це «візитна картка» біржових технологій, однак справжнього успіху на ринку не домогтися, якщо не приділяти увагу і програмним компонентам, які відповідають не за саму торгівлю, а за «бухгалтерію» цього процесу.

Один з таких аспектів, на думку Джеффрі Шека — це зберігання даних.

Мови для роботи з базами даних вкрай важливі. Хочете зберегти кожну заявку за акціями Microsoft за день? Спробуйте зробити це за допомогою SQL-бази даних (MySQL, SQLite тощо). Досить імовірно в такому випадку вам доведеться витратити багато годин на оптимізацію, перш ніж на основі цих даних вдасться здійснити операцію.

Я б рекомендував звернути увагу на мови, які дозволяють зберігати дані в колоночном форматі (а не у строковому) — це добре підходить для тикових даних. Серед таких технологій можна назвати KDB, OneTick, SECDB (створена в Goldman Sachs). Якщо ж потрібно просто зберігати ціни акцій, то підійдуть і MySQL з PosgreSQL.


Все в тому ж тред на Quora PhD-професор Прінстонського університету і керівник департаменту розробки компанії Flexport Ендрю Ледвин зупинився на мовах програмування, які можна використовувати для роботи «на рівні стратегії».

Тут нам потрібно генерувати приносять прибуток правила роботи, грунтуючись на різних сигналах. [...] На даному рівні ключовим моментом є виразність мови. Часто на ньому використовуються мови начебто Python або навіть C++, Java, але я вважаю ідеальним варіантом Haskell або Ruby «обгортки» з подальшою розробкою ключових модулів на більш низькорівневі мови.

Ще один важливий етап — пошук сигналів. Найчастіше це офлайн-активність, в ході якої аналізується велика кількість статистики з урахуванням обмежень систем реального часу. Тут використовують інструменти на зразок R або Matlab (як той же Goldman). Важлива можливість машинного навчання та роботи з великими обсягами даних з мінімальними зусиллями. Але взагалі, тут головне результат — якщо вам вдається домагатися його з допомогою Excel, то кому яке діло?

Якщо хочеться просто працювати програмістом

Вище ми говорили про вибір мови програмування в розрізі написання власних торгових систем. Однак не слід забувати і про те, що інфраструктура біржі і брокерів також кимсь написана на будь-яких мовах, і всю цю екосистему повинні підтримувати співробітники відповідних компаній.

У фінансовій галузі завжди цінуються фахівці, які добре знають C++, оскільки значна частина систем брокерів і бірж написана з його застосуванням. На ньому пишуть що завгодно: від бібліотек для розрахунку цінових моделей деривативів до інфраструктурних рішень, обробки різноманітних потоків і зберігання даних. Тому фахівцям, які добре знають З++, завжди знайдеться робота (наприклад, на тій же Московській біржі).

Також в інвестиційних компаніях досить часто використовуються C# і все частіше Java, говорить відомий квант і засновник блогу Quantstart Майкл Халлс-Мур. Експерт зазначає популярність цих технологій в інфраструктурних проектах — різні фронтенд-інтерфейси, дата-канали іноді навіть модулі для розрахунку цін деривативів пишуть саме на них.

З цим згоден розробник торгового терміналу SmartX Андрій Горьковенки. В інтерв'ю він порадив розробникам, які хотіли б спробувати себе на фондовому ринку, починати вивчення цих мов:

Я б порадив звернути свою увагу на високорівневі платформи і мови, такі як .NET і Java. Остання дуже популярна на західних фондових ринках, у нас поки менше, але є хороші перспективи більш широкого розповсюдження цієї мови. Це означає, що Java-програмісти, будуть затребувані в фінансових компаніях, фондах і брокерів.


Висновок: Все взаємопов'язане

Риску під обговоренням мов програмування у сфері фінансів можна підвести, процитувавши кванта з великого інвестфонду в Гонконзі Джозефа Ванга. На думку цього експерта, що використовуються для вирішення тих чи інших завдань мови програмування доповнюють один одного.

Для реалізації речей, які потребують великої роботи з процесором, використовується C++ або CUDA. Для процесів, пов'язаних з обміном даними, застосовують Java. Для проведення досліджень і прототипування торгових додатків вдаються до скриптовою мов Python, R, TradeScript (використовується в терміналі SmartX) або навіть Matlab. У свою чергу для створення звітів багато трейдерів застосовують Excel/VBA.

Всі ці мови взаємопов'язані. Ви можете написати модуль аналізу цін на C++, потім згодувати отримані дані підприємства движку на Java, проаналізувати дані за допомогою Python або R, а потім вивантажити все це в звіт через Excel.
Посилання по темі:

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.