В нашем блоге мы много пишем о технологиях, применяющихся в сфере финансов. За несколько сотен лет биржи прошли путь от публикации цены дважды в неделю на небольших клочках бумаги — как это было, например, в Лондоне, где брокеры собирались в кофейне «У Джонатана», до настоящего технологического большого взрыва в 80-е годы прошлого века.

В итоге сегодня для организации и участия в торгах используется передовой софт, железо, разрабатываются сложнейшие алгоритмы и оригинальные подходы к анализу и обработке данных. Кроме того, в сфере финансов, обычно, весьма неплохие зарплаты — комбинация этих факторов приводит к тому, что многие ИТ-специалисты хотели бы попробовать свои силы в этой отрасли.

Сегодня мы поговорим о том, чего стоит ждать тем из них, кто все-таки решится углубиться в финансовую отрасль — какие технологии (софт, железо, протоколы) здесь используются и какие требования предъявляются к специалистам?

Какие технологии используются на фондовом рынке


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

Языки программирования

Так значительная часть инфраструктуры брокерских компаний и бирж создана с применением языка C++ — с его помощью создаются самые разные продукты от библиотек для расчета ценовых моделей производных инструментов до модулей обработки потоков данных. Неудивительно, что специалисты, знающие этот язык, крайне востребованы в сфере финансов. Более того, сам создатель языка C++ Бьерн Страуструп (Bjarne Stroustrup) работает в инвестбанке Morgan Stanley (этот факт, в свое время, активно обсуждался в сообществе разработчиков).

Также крайне востребованными языками программирования в сфере финансов являются C# и Java — они реже используются для инфраструктурных задач, но часто с их помощью реализуют определенные части торговых приложений или фронтенд-сервисы финансовых компаний (например, брокеров).

Для описания торговых стратегий и прототипирования моделей применяют в том числе и скриптовые языки, вроде Python, MATLAB и R. Впоследствии код таких прототипов может быть переведен на более производительный язык — например, C++. Однако в некоторых случаях механические торговые системы могут быть целиком реализованы на скриптовых языках. Некоторые из таких инструментов, вроде языка TradeScript, даже включают в торговые терминалы, что позволяет пользователям быстро «набросать» торговую стратегию, не отвлекаясь от анализа котировок и графиков.

Протоколы передачи данных

На финансовом рынке также существуют свои собственные протоколы передачи финансовых данных. Некоторые из них — это международные стандарты, вроде протоколов FIX, а также проприетарные протоколы, использующиеся конкретными биржами. В на российском рынке популярностью пользуется два протокола — Plaza II, который был разработан специалистами биржи РТС, и ASTS Bridge, созданный на бирже ММВБ. Позднее две эти площадки были объединены в общую «Московскую биржу».

Есть свои протоколы и на зарубежных биржах — не так давно мы рассказывали о протоколах ITCH и OUCH, использующихся на американской Nasdaq.

Железо

В сфере финансов востребованы далеко не только разработчики программного обеспечения, но и специалисты, занимающиеся созданием и поддержанием работоспособности инфраструктуры. В одном из наших предыдущих материалов мы рассказывали о том, как устроены биржевые дата-центры в России и за рубежом. Как правило, биржи и финансовые компании работают с ведущими ЦОД в своем регионе. Например, московская биржа сейчас работает с дата-центром DataSpace1, который стал первым дата-центром в России и континентальной Европе, который получил все три сертификата категории Tier III от Uptime Institute. Ниже представлены фото его систем охлаждения, электропитания и пожаротушения:

image

image

image

Кроме того, для размещения в подобных ЦОД часто используется передовое «железо» — многие вендоры создают продукты, «заточенные» под работу в сфере финансов. К примеру, в 2015 году Juniper выпустила так называемый «сервер на коммутаторе» QFX5100-AA. Этот продукт предназначен для работе в средах, предъявляющих особые требования к производительности, скорости работы и масштабирования. Финансовый рынок — не единственный подобный сегмент, но один из самых очевидных.

image

Если говорить о реальных проектах, то инфраструктура торговой системы ITinvest Matrix создана с применением аппаратных средств Dell и IBM. В том числе, используются серверы IBM Data Power X75 (и софт MQ Low Latency Messaging), блейд-серверы PowerEdge и системы хранения данных PowerVault от Dell.



В каких проектах можно поучаствовать


На финансовом рынке действуют самые разные компании — от бирж, банков и брокеров до независимых разработчиков софта для трейдеров и финансистов. Соответственно, и знания ИТ-специалистов могут быть использованы в разных плоскостях, например для создания торговых роботов, работы с инфраструктурой или разработки клиентского софта.

О задачах брокерских компаний можно судить на примере ITinvest. У нас есть несколько проектов, самыми важными из которых являются торговый терминал SmartX (его историю мы описывали здесь) и торговая система Matrix.

Отдельный и довольно большой пласт проектов — разработка мобильных приложений для онлайн-трейдинга. В ITinvest есть собственные приложения для iPhone, iPad и Android — ранее мы рассказывали об эволюции интерфейсов этих терминалов с начала двухтысячных годов до наших дней.

Кроме брокеров и самих бирж ИТ-специалисты востребованы компаниями, занимающимися разработкой продуктов для финансистов и трейдеров, которые создают торговый софт. Историю одной из таких компаний StockSharp члены ее команды рассказывали в гостевом материале в нашем блоге.

Также мы рассказывали истории разработчиков, которые занимаются самостоятельной торговлей на бирже и разрабатывают для этого соответствующие инструменты. В этом интервью российский программист рассказал об использующихся им средствах для разработки торговых роботов, а в этом материале описана история американского разработчика, заработавшего полмиллиона долларов с помощью машинного обучения и высокочастотного трейдинга.

Какие требования предъявляются к специалистам


Требования, предъявляемые к ИТ-специалистам в разных финансовых компаниях, могут отличаться. И если для специалистов по работе с инфраструктурой они обычно мало отличаются от того, что нужно знать в других отраслях, то для разработчиков есть и некоторые специфические пожелания.

Вот, что желательно знать программисту, чтобы получить работу в сфере финансов:

  • Прежде всего, требуется отличное знание ООП и стандартных алгоритмов. Разработка клиент-серверных финансовых систем также идет рука об руку с многопоточным программированием. Поэтому, специалист должен не бояться задач, подразумевающих, к примеру, написание стандартного TCP-сервера, сервера балансировки нагрузки и сервера высокой производительности. Кроме того, очень ценятся разработчики, которые знают не только C++, но и более низкоуровневые языки, вплоть до ассемблера.
  • В основе систем для финансовой сферы лежат базы данных, поэтому разработчикам понадобятся глубокие знания SQL. Знания простых операторов выбора будет недостаточно — довольно часто в ходе работы придется иметь дело с созданием процедур хранения, разбираться с индексами, и различными типами блокировок.
  • Трейдинговые системы обычно используют платформу UNIX (часто Linux). Для Windows, как правило, создаются торговые терминалы с графическими интерфейсами, для разработки же «движка» трейдингового софта используют UNIX.
  • Кроме того, специалистам, занимающимся разработкой торгового софта необходимо уметь работать с GPU, сопроцессорами и современными сетевыми картами Mellanox и Solarflare.

Кроме того, большим плюсом для поиска работы в сфере финансов будет наличие знаний предметной области — если разработчик понимает разницу между фьючерсом и опционом или аском и бидом и знает, что такое биржевой «стакан», то это может серьезно сократить время, которое понадобится на то, чтобы войти в курс дела. Также это позволит снизить количество ошибок, особенно на первых порах.

Не стоит забывать и о технологических знаниях, применимых именно к финансовой сфере — прежде, чем искать работу в условной брокерской компании, стоит разобраться, к примеру, с протоколами передачи данных вроде FIX или, в случае «Московской биржи», ASTS Bridge.

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

Ссылки и дополнительные материалы по теме:



Комментарии (2)


  1. msdos9
    25.04.2016 09:57

    Я дико извиняюсь, но вроде как уже было: habrahabr.ru/company/itinvest/blog/278931


    1. IgorMetechko
      25.04.2016 15:59

      Тут мы решили сделать общую статью. Вы правы, похожий материал был на хабре, но с упором на программистов.