В нашем блоге на Хабре мы много пишем об использующихся в сфере финансов технологиях. На фондовых биржах сегодня используется самое передовое программное и аппаратное обеспечение — как для построения самой торговой инфраструктуры, так и для создания систем онлайн-трейдинга.
Сегодня здесь востребованы математики, физики и программисты. Люди способные создавать алгоритмы торговли и делать на их базе качественный софт. Многие программисты, в свою очередь, хотели бы попробовать свои силы в финансовой отрасли — она может предложить привлекательное сочетание интересных задач и высоких зарплат.
Сегодня мы поговорим о том, какими навыками нужно обладать, чтобы получить работу в 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.
Комментарии (25)
Secessus
10.03.2016 11:22+5either vi
Это еще что за зверь?
Если все-таки переводите, то ссылку на первоисточник будьте добры.
MichaelBorisov
10.03.2016 22:19+2Да уж, и смех, и слезы. Какие огромные инженерные ресурсы вкладываются в эту высокочастотную торговлю, а цель — более эффективное паразитирование на бирже, чем конкуренты.
Впрочем, это лучше, чем война. Там ведь тоже огромные ресурсы, а цель еще более неприглядна — убийство людей. Хотя ей тоже придумывают разные красивые оправдания.webmascon
11.03.2016 01:24Какие огромные инженерные ресурсы вкладываются в эту высокочастотную торговлю,
никаких огромных инженерных ресурсов не вкладывается в эу высокочастотную торговлю. У вас просто искаженное ое ней представление
Randl
11.03.2016 10:51+2Не только в HFT, но в принципе в фондовый и валютный рынок вливаются нефиговые ресурсы. Впрочем, ИМХО, большая часть ресурсов человечества тратятся очень нерационально
webmascon
11.03.2016 11:59ну а где они вообще тратятся рационально? наверное только на кладбищах?
Randl
11.03.2016 12:04Ну не знаю. Просто мне кажется платить парню 80 миллионов долларов за пинание мячика или тратить их на разработку и производство очередной мега-удобной селфи-палки когда люди с голоду умирают это как-то странно. И то что с этим ничего не поделать очень обидно.
И заработок с помощью HFT для меня в той же категории примерно.deniskreshikhin
11.03.2016 19:38-1Благодаря торговле на бирже ресурсы распределяются более рационально, т.к. цена формирует по объективным критериям.
Чем быстрее совершаются торги и распространяется информация о цене, тем дешевле получается конечный товар. В т.ч. тот который мы покупает в супермаркетах.webmascon
12.03.2016 02:07т.к. цена формирует по объективным критериям.
увы это обывательское заблуждение. цена формируется субьективно на оснве страхов и глупостей каждого участника торговdeniskreshikhin
12.03.2016 12:27Страх и глупости одного участника никак не могут повлиять на биржу в целом.
Если же страх и глупость действуют на всех участников, то это уже перестает быть субъективным и становится объективным.webmascon
15.03.2016 02:22у вас какое-то бинарное мышление. либо один либо все. а если не один а тридцать участников? а сто участников на этих тридцать смотрят и оценивают? и каждый по своему. а семьдясет пять тысяч смотрят на этих сто тридцать. и тоже оценивают — каждый по своему
webmascon
11.03.2016 01:30+2по своему опыту сужу что программист в сфере финансов должен уметь следующее:
- знать предметную область очень хорошо — уметь как минимум отличать бид от аска и фьючерс от опциона
- знать FIX протокол
- уметь работать в большом коллективе программистов, когда в проект коммитят 150 человек глобально
- быть внимательным к мелочам — каждый баг, выкаченный на продакшен, может стоить охренительных бабок убытка — а чего не любят в банказ — это терять деньги.
- английский язык
man_without_face
11.03.2016 08:30Вопрос к автору (или просто к компании). А есть ли кто-то, кто мог бы проконсультировать на тему источников информации по российским дивидендам?
IgorMetechko
14.03.2016 10:38Данная информация всегда находится в открытом доступе. Если Вас интересуют какие-либо подробности, можете позвонить нам :)
man_without_face
14.03.2016 13:07Да, но не сборная, а ходить по каждому эмитенту — сложно.
Подробности? Хмм… Ну интересно, есть ли у вас подобные данные и можно ли было бы их использовать?
mird
11.03.2016 09:49Процедуры хранения в бд — это что за зверь такой?
edeldm
11.03.2016 16:27Возможно, опечатались и имеются ввиду хранимые процедуры в СУБД, например в MSSQL, PostgreSQL .
BalinTomsk
11.03.2016 17:27Правильная статья, не знаю насчет Лондона, но в NewYour-ском блумберге с такими скилсами можно будет сразу найти контракт на 170-200 USD/hr, а у фултаймера зарплата может достигать 400К в год (тимлид)
oYASo
С Лондом-то все понятно, а что там с зарплатами отечественных финансовых программистов? :)
В свете перехода .NET на Open Source, едва ли стоит хоронить эту технологию.
Еще интересно, какие библиотеки используются программистами для всех этих стратегий. TA-Lib, QuantLib, etc? Или вообще у всех свои велосипеды?
Bond_algotrade
Мы как раз ищем такого специалиста: http://hh.ru/vacancy/16106826