Що повинен вміти програміст, щоб отримати роботу у сфері фінансів



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

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

Сьогодні ми поговоримо про те, якими навичками потрібно володіти, щоб отримати роботу в HFT-фірмі, інвестиційному банку, хедж-фонді або брокерської компанії. При підготовці топіка використовувалися матеріали сайтів experience.com і quantstart.com.

Мови

Одним з найпопулярніших у сфері фінансів мов програмування на протязі багатьох років є C. Його потрібно знати не тільки для підтримки застарілого коду, але також для організації роботи з API в системах електронних торгів та обміну даними з провайдерами.

«Основною мовою Уолл-Стріт» називають C++, оскільки найголовніше для трейдінгових систем — це швидкість. Якою б добре продуманою і налагодженої не була торгова програма, якщо в якийсь момент вона витратити зайві мілісекунди на «збір сміття», то це може призвести до серйозних збитків. Теж саме стосується і біржової інфраструктури — всіляких шлюзів передачі даних і «коннекторів» до різних систем.

Як результат, програмісти C++ вкрай затребувані в компаніях фінансового сектора — в тому числі і на самих біржах. І така ситуація збережеться ще на довгі роки вперед — комусь потрібно підтримувати поточну інфраструктуру.

Для одного з наших попередніх матеріалів ми спілкувалися з російським експертом по створенню торгових систем, який рекомендував в ситуаціях, коли необхідна максимальна швидкість, використовувати такі технології:

Для цих завдань дуже добре підходить C++ і чистий C. Буває і так, що швидкі роботи створюються і мало не на асемблері — тут варто згадати механізми прямого читання-запису даних в пам'ять мережевої карти, минаючи стандартні механізми роботи через драйвери, а також роботу з «супербыстрым програмованим залізом» начебто FPGA.
За даними творця ресурсу QuantStart та професійного трейдера Майкла Халлс-Мура, сьогодні senior-програміст з 5-7-річним досвідом роботи на C++ може заробляти в Лондоні £500-700 в день. У російських компаніях фахівці по C++ також дуже затребувані. Крім того, таких розробників часто залучають професійні трейдери, які можуть створити успішну торгову стратегію, але потребують допомоги того, хто міг би її запрограмувати.

C# і Java також досить давно використовуються різними фінансовими інститутами. В основному, великими банками для їх трейдингової інфраструктури. Ці мови використовуються для створення фронтенд-інтерфейсів і обробки даних.

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

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

Але і на .NET і Java можна досить швидко створювати закінчені програмні продукти. Головний мінус — вони бувають не найшвидшими (якщо рахунок іде на мікросекунди).
Для прототипування квантових моделей в хедж-фондах і «квантових» трейдерських підрозділів у банках часто застосовують скриптові мови, начебто Python, MATLAB та R.

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

Клієнт-серверні системи

Трейдингові системи за визначенням є розподіленими. Практично всі компанії, від невеликих фірм до великих інвестиційних банків, будують свої системи з застосуванням протоколів TCP і UDP — іноді у справі трейдингу швидкість важливіше гарантії доставки даних.

Тому розробникам торгових додатків необхідно добре розбиратися в класах сокетів для C: socket(), bind(), poll() і select(). Працювати з ними безпосередньо практично ніколи не потрібно, оскільки для цього вже є безліч готових бібліотек, проте розуміти, як влаштована взаємодія з ними просто необхідно.

Крім того, для розробників фінансового софта плюсом є знання використовуються у цій сфері протоколів передачі даних, таких як FIX, FAST, ASTS Bridge.

Потоки

Створення клієнт-серверних систем і багатопоточне програмування у фінансовій сфері йдуть рука об руку. Усе це передбачає, наприклад, написання стандартного TCP-сервера, сервера балансування навантаження, сервера високої продуктивності — розробник, який хоче займатися створенням софта у фінансовій компанії повинен вміти це робити. Непогано також розуміти, що таке класи pthreads(), fork(), mutexes і ідея семафора в цілому. У разі застосування Java також потрібно розбиратися в існуючих для цього мови методів синхронізації.

Бази даних

В основі систем для фінансової сфери лежать бази даних, тому розробникам необхідні глибокі знання SQL. Знання простих операторів вибору буде недостатньо — досить часто в ході роботи доведеться возитися з створенням процедур зберігання, розбиратися з індексами, і т. д. Крім того, необхідно розуміти різницю між table-level, page-level і row level блокуваннями.

UNIX
Трейдингові системи зазвичай використовують платформу UNIX (часто це Solaris і Linux). Для Windows, як правило, створюються торговельні термінали з графічними інтерфейсами, для розробки ж «движка» трейдингового софта використовують UNIX.

Це означає, що розробникам просто необхідно розуміти, що таке команди tail, sed, grep, awk, tr і top. Ще краще, якщо фахівець уміє працювати з either vi, vim або emacs і не лякається проблем, викликаних неправильною конфігурацією $LD_LIBRARY_PATH.

Навички налагодження

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

Висновок

Фондовий ринок — вкрай високотехнологічна галузь, яка активно розвивається, що робить роботу в цій сфері дуже привабливою для ІТ-фахівців, що бажають розвивати свої навички. При цьому, для того, щоб взяти участь у цікавих проектах інженеру зовсім не обов'язково їхати за кордон — нові технології активно впроваджуються і на російському фондовому ринку. В одному з наших попередніх матеріалів ми розповідали про власних ІТ-проекти створення терміналу SmartX і брокерської торгової системи Matrix, у розвитку яких можна взяти участь.

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

P. S. В команду розробників ITinvest для проектної роботи над торговими додатками потрібно сильний розробник. Наші вимоги і побажання до кандидатів:

  • Хороше знання ООП і досвід розробки високонавантажених додатків на C++, досвід розробки на C#;
  • Знання стандартних алгоритмів;
  • Досвід розробки багатопотокових додатків;
  • Вміння користуватися системами контролю версій;
  • Уявлення про роботу фінансових протоколів (FIX, FAST, ASTS Bridge).
Про те, що чекає розробників торгових додатків ITinvest ми писали в цьому матеріалі.

Розповідь про себе і проектах, у яких вдалося взяти участь, надсилайте у текстовому форматі в тілі листа на адресу електронної пошти ivan.igoshev@itinvest.ru.

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

0 коментарів

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