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



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

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

    Сегодня мы поговорим о том, какими навыками нужно обладать, чтобы получить работу в 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.
    ITI Capital 258,41
    Лучший онлайн-брокер для работы на бирже
    Поделиться публикацией
    Комментарии 25
    • 0
      С Лондом-то все понятно, а что там с зарплатами отечественных финансовых программистов? :)

      В свете перехода .NET на Open Source, едва ли стоит хоронить эту технологию.

      Еще интересно, какие библиотеки используются программистами для всех этих стратегий. TA-Lib, QuantLib, etc? Или вообще у всех свои велосипеды?
    • +8
      Вы тоже £500-700 в день предлагаете? :)
      • +5
        either vi

        Это еще что за зверь?
        Если все-таки переводите, то ссылку на первоисточник будьте добры.
      • 0
        Имхо человек должен уметь и хотеть учиться, а остальное — вторично.
        • +2
          Да уж, и смех, и слезы. Какие огромные инженерные ресурсы вкладываются в эту высокочастотную торговлю, а цель — более эффективное паразитирование на бирже, чем конкуренты.

          Впрочем, это лучше, чем война. Там ведь тоже огромные ресурсы, а цель еще более неприглядна — убийство людей. Хотя ей тоже придумывают разные красивые оправдания.
          • 0
            Какие огромные инженерные ресурсы вкладываются в эту высокочастотную торговлю,
            никаких огромных инженерных ресурсов не вкладывается в эу высокочастотную торговлю. У вас просто искаженное ое ней представление
            • +2
              Не только в HFT, но в принципе в фондовый и валютный рынок вливаются нефиговые ресурсы. Впрочем, ИМХО, большая часть ресурсов человечества тратятся очень нерационально
              • 0
                ну а где они вообще тратятся рационально? наверное только на кладбищах?
                • 0
                  Ну не знаю. Просто мне кажется платить парню 80 миллионов долларов за пинание мячика или тратить их на разработку и производство очередной мега-удобной селфи-палки когда люди с голоду умирают это как-то странно. И то что с этим ничего не поделать очень обидно.

                  И заработок с помощью HFT для меня в той же категории примерно.
                  • 0
                    заработок с помощью HFT не так уже велик чтобы горевать о нем
                    • –1
                      Благодаря торговле на бирже ресурсы распределяются более рационально, т.к. цена формирует по объективным критериям.

                      Чем быстрее совершаются торги и распространяется информация о цене, тем дешевле получается конечный товар. В т.ч. тот который мы покупает в супермаркетах.
                      • 0
                        т.к. цена формирует по объективным критериям.
                        увы это обывательское заблуждение. цена формируется субьективно на оснве страхов и глупостей каждого участника торгов
                        • 0
                          Страх и глупости одного участника никак не могут повлиять на биржу в целом.

                          Если же страх и глупость действуют на всех участников, то это уже перестает быть субъективным и становится объективным.
                          • 0
                            у вас какое-то бинарное мышление. либо один либо все. а если не один а тридцать участников? а сто участников на этих тридцать смотрят и оценивают? и каждый по своему. а семьдясет пять тысяч смотрят на этих сто тридцать. и тоже оценивают — каждый по своему
              • +2
                по своему опыту сужу что программист в сфере финансов должен уметь следующее:

                • знать предметную область очень хорошо — уметь как минимум отличать бид от аска и фьючерс от опциона
                • знать FIX протокол
                • уметь работать в большом коллективе программистов, когда в проект коммитят 150 человек глобально
                • быть внимательным к мелочам — каждый баг, выкаченный на продакшен, может стоить охренительных бабок убытка — а чего не любят в банказ — это терять деньги.
                • английский язык
                • 0
                  Вопрос к автору (или просто к компании). А есть ли кто-то, кто мог бы проконсультировать на тему источников информации по российским дивидендам?
                  • 0
                    Данная информация всегда находится в открытом доступе. Если Вас интересуют какие-либо подробности, можете позвонить нам :)
                    • 0
                      Да, но не сборная, а ходить по каждому эмитенту — сложно.

                      Подробности? Хмм… Ну интересно, есть ли у вас подобные данные и можно ли было бы их использовать?
                  • 0
                    Процедуры хранения в бд — это что за зверь такой?
                    • 0
                      Возможно, опечатались и имеются ввиду хранимые процедуры в СУБД, например в MSSQL, PostgreSQL .
                      • 0
                        Простите, но на опечатку это не похоже. Больше похоже на то, что статью писал человек не разбирающийся.
                        • 0
                          это переводил человек не знающий как переводитс stored procedure, как написано в оригинале
                    • 0
                      Правильная статья, не знаю насчет Лондона, но в NewYour-ском блумберге с такими скилсами можно будет сразу найти контракт на 170-200 USD/hr, а у фултаймера зарплата может достигать 400К в год (тимлид)

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое