Я недавно получил много электронных писем от людей, желающих сменить карьеру из инженерии, научных кругов и ИТ. Количественные финансы стали особенно привлекательной областью в последнее время из-за интеллектуальной проблемы и высокого вознаграждения. Вопрос, который постоянно возникает в этих электронных письмах, заключается в том, что мне нужно изучать, чтобы убедить интервьюера дать мне работу?
Любая карьера в области количественных финансов требует определенной степени обобщения, а не широкой специализации. Количественные разработчики не отличаются. Они должны вписываться в команду трейдеров, финансовых инженеров и ИТ-поддержки, чтобы помочь инвестиционным банкам оценивать и продавать новые структурированные инвестиционные продукты или помочь фондам развивать торговую инфраструктуру и системы управления портфелем.
Научные вычисления
Наиболее распространенный путь к количественному развитию - через академический опыт в области научных вычислений. Это связано с тем, что основными навыками, необходимыми для
Тем не менее, если вы не имеете опыта в области научных вычислений, все еще есть много возможностей стать количественным разработчиком, используя опыт программирования.
Навыки программирования
В первую очередь количественный разработчик - это разработчик программного обеспечения. Таким образом, роль будет почти исключительно основана на 100% программировании. Вы обнаружите, что оптимизируете торговые прототипы или разрабатываете торговую инфраструктуру с нуля. Если вы нацелены на банковские роли, то вам, вероятно, нужно будет использовать C ++, Java или C # в среде Microsoft / Windows. Если вы нацелены на хедж-фонды, то вы, вероятно, переведете MatLab или R на C ++ и / или Python. Фонды, как правило, используют Java и C # меньше, поскольку они часто находятся в среде UNIX, где C ++ и Python имеют больше смысла. Если у вас есть опыт в любой из этих программных сред, имеет смысл оценить свои сильные стороны и придерживаться программного обеспечения, которое вы хорошо знаете. Таким образом, если вы знаете Java, например, было бы разумно нацелиться на инвестиционные банковские роли.
Предполагая, что вы компетентный программист и счастливы перейти на программное обеспечение, наиболее широко используемое в финансовой отрасли, тогда я бы предложил изучить C ++ и Python чрезвычайно хорошо, так как это дает вам наиболее сквозные возможности в разных секторах отрасли.
Прочитайте всю книгу Accelerated C++ от Эндрю Кенига. Эта книга поможет вам начать с нуля с синтаксиса C++ и, в частности, подробно расскажет о указателях и управлении памятью. Это область, с которой многие программисты (включая тех, кто имеет опыт Java и C#) не знакомы. Лучше всего прочитать при реализации примеров, либо с Microsoft Visual Studio, либо с GCC компилятором на Linux/UNIX, чтобы практиковаться в синтаксисе, а не просто читать его! Прочитайте (неоднократно!) всю книгу Effective C++ от Скотта Майерса. Я повторял этот совет последовательно на сайте, но он все еще стоит повторить. Эта книга приведет вас от начинающего программиста C++ до промежуточного программиста, который готов к интервью. Эта книга труднее практиковать перед терминалом, поскольку Майерс устанавливает некоторые сложные примеры. Если вы подаете заявку на работу в C++, вы, вероятно, захотите выйти за рамки этих двух работ. Скотт Майерс также написал более эффективный C++ и эффективный STL. Вам нужно будет рассмотреть библиотеку Boost, многопоточное программирование и основы операционной системы Linux, чтобы стать настоящим экспертом. Аналогично для Python:
Если вы уже опытный программист C++/Java/C#, то прочитайте определенные разделы книги Марка Люца Learning Python. В частности, прочитайте главы 4-9, в которых обсуждается Python
Программная инженерия
Для того, чтобы стать хорошим кандидатом на собеседование на должность квантового разработчика, необходимо стать как хорошим программистом, так и хорошим разработчиком программного обеспечения. Многие могут узнать первое из учебников и практики. Однако последнее можно узнать только от работы над более крупными программными проектами, как правило, с другими разработчиками. Однако это не означает, что его нельзя включить в домашнюю учебную программу!
QuantLib
Прочитав (некоторые из) исходного кода этого проекта, вы получите хорошее представление о том, как пишутся крупномасштабные программные проекты на C++.
Чтобы стать хорошим разработчиком программного обеспечения, необходимо понимать, как создавать крупномасштабные программные проекты.Для современной разработки программного обеспечения это требует использования контроля версий, непрерывной интеграции и других гибких практик.
Прочитайте как Код Стива Макконнелла, так и Чистый код Роберта Мартина. Обе эти книги заставят вас серьезно переосмыслить, как вы занимаетесь разработкой программного обеспечения, начиная с первых принципов. Например, сколько времени вы тратите на проектирование программного обеспечения перед тем, как прикоснуться к клавиатуре? Обе эти книги позволят вам сэкономить часы потраченного на разработку кода. Я бы предложил применить как можно больше советов в этих книгах к вашим проектам как можно скорее, чтобы устранить любые плохие привычки. Они также отлично подходят для обсуждения на собеседовании, так как вас неизменно попросят написать какой-то код.
Дискуссия о хорошем мастерстве программного обеспечения не будет полной, если не упомянуть о дизайнерских моделях, также известных как книга
Несмотря на то, что стать отличным программистом и отличным разработчиком программного обеспечения является предпосылкой для получения должности на собеседовании, вам также будут задавать вопросы, связанные с хранением и анализом данных. Один из ключевых компонентов в повседневной жизни квантового разработчика - взаимодействие с базами данных. Таким образом, ожидается определенный уровень зрелости с обращением с базами данных. Если вы никогда не использовали систему хранения данных, то лучший способ начать - начать понимать системы управления реляционными базами данных (RDBMS) и их язык - Structured Query Language (SQL).
Лучший способ начать изучать RDBMS - это установить версию с открытым исходным кодом (поскольку вы можете скачать их бесплатно!) и следовать списку чтения ниже. Это выходит за рамки этой статьи, чтобы научить вас, как установить RDBMS, но вы можете попробовать MySQL, так как это очень распространенная база данных в рамках хедж-фондов. SQL Server и Oracle, скорее всего, распространены в банковском секторе. После установки базы данных, такой как MySQL, используйте следующие руководства, которые помогут вам понять хранение и доступ к данным:
Если вы не знакомы с SQL, то книга O
Поскольку количественный разработчик работает на финансовых рынках, полезно иметь относительно хорошее понимание продуктов, которые производят банки, или инструментов, которыми будут торговать фонды. Таким образом, вам необходимо будет (широко) ознакомиться с акциями, валютой, фиксированным доходом, товарами и связанными с ними рынками производных продуктов. В частности, вы хотите постоянно думать о том, как эти данные представлены, хранятся и доступны, поскольку большая часть работы квантового разработчика заключается в предоставлении хранилища и доступа к финансовым данным.
Более актуальными являются алгоритмы, используемые в количественных финансах для проведения ценообразования инструментов и алгоритмической торговли. Техники ценообразования производных инвестиционных банков почти наверняка сосредоточатся на методах Монте-Карло и методах конечных различий, оба из которых опираются на знания вероятности, статистики, численного анализа и частичных дифференциальных уравнений.
Для хедж-фондов вы, вероятно, будете реализовывать торговую инфраструктуру - либо с низкой, либо с высокой частотой. Это будет включать в себя принятие алгоритма, уже закодированного в MatLab, R или Python (или даже C++), а затем его оптимизацию на более быстром языке, таком как C ++, а также подключение этого алгоритма к первичному интерфейсу программирования брокерских приложений (API) и выполнение сделок. Необходимые навыки здесь довольно разные. Вам нужно будет уметь собирать данные из различных источников, помещать их в правильный контекст, быстро повторять их, а затем генерировать отчеты по требованию либо в фиксированном формате (PDF), через веб, либо в качестве самого API. Эти навыки трудно выучить непосредственно из книг и требуют нескольких лет опыта разработки программного обеспечения в индустрии технологий.
Чтобы узнать больше об этих темах, пожалуйста, ознакомьтесь с моими статьями по внедрению C ++, моими статьями по внедрению Python и списком чтений по количественным финансам.
Поиск работы
Несмотря на то, что вышеперечисленный список выглядит как обширный объем материала для изучения, это будет относиться только к тому, кто совершенно новичок в программировании. Вряд ли позиция количественного разработчика будет подходящей для такого человека, и я предполагаю, что ваш собственный опыт будет в области программирования или физических наук. Убедитесь, что вы читаете только разделы, которые вы считаете релевантными для вашей собственной ситуации, поскольку в противном случае вы можете легко потратить несколько лет своего свободного времени на изучение вышеуказанного материала!
Как только вы считаете, что вы готовы к собеседованию, вам нужно будет начать процесс обращения к количественным рекрутерам. Есть специализированные фирмы, которые занимаются инвестиционными банками и хедж-фондами. Если вам нужны конкретные имена, не стесняйтесь отправлять мне электронную почту по адресу:mike@quantstart.comи я с радостью укажу вам в правильном направлении.
Любой хороший рекрутер будет обсуждать ваше прошлое с разумной степенью детализации, поскольку они ставят свою репутацию на карту, когда они рекомендуют вас на собеседование. Рекрутеры, как правило, не очень знакомы с техническими особенностями количественных технологий, и они не должны быть. Однако это означает, что им приходится больше полагаться на совпадение ключевых слов для фильтрации своего резюме / резюме. Убедитесь, что, если вы сильны с C ++, вы указываете навыки C + + - сильные и ссылки на STL, Boost и любые проекты C ++, над которыми вы работали, например. Не будьте скромны в отношении своих навыков, но также не преувеличивайте их. Если вы пишете что-либо в своем резюме / резюме, это справедливая игра, чтобы быть допрошенным об этом в техническом интервью!
Поскольку рынок труда (в 2013 году) в настоящее время не самый лучший (особенно на начальном уровне), вы можете обнаружить, что вам потребуется некоторое время, чтобы получить работу, которую вы ищете.