Иван присоединился к Quantiacs в 2021 году и выиграл Конкурс фьючерсов Q15. Его система выделила 1 миллион долларов США. Здесь вы можете узнать больше об Иване и его мыслях о Quantiacs.
Здравствуйте, Иван, не могли бы вы рассказать нам больше о себе и своем прошлом?
Привет, меня зовут Иван, мне за тридцать. Я получил степень магистра в области финансовой математики и в настоящее время являюсь начальником отдела в международной корпорации. В своей должности я руковожу группой программистов и IT-специалистов. Я пишу в основном на .NET ежедневно.
В свободное время люблю путешествовать, читать книги по философии, играть в компьютерные игры и настольный теннис и смотреть видео с YouTube-канала Galkovskyland. На данный момент я посетил 30 разных стран, и я хочу посетить еще много!
Почему вы занялись количественной торговлей?
Я рассматривал три варианта обучения в магистратуре в России.
Первым вариантом была разработка программного обеспечения, но на тот момент мне эта карьера была не слишком интересна. Я не хотел развивать карьеру чисто разработчика программного обеспечения. Я должен был начать с базовых задач, таких как реализация веб-форм и подключение баз данных. Я хотел узнать больше.
Вторым вариантом была математика. Меня интересовала теория вероятностей. Я также нашел привлекательной абстрактную математику. Наверное, я бы выбрал абстрактную алгебру.
Третьим вариантом была финансовая математика. Я выбрал его, поскольку он сочетал в себе программирование и математику. Мне нравилось работать с данными, и у меня была возможность работать с замечательными преподавателями, такими как мой научный руководитель Виктор Конев. Он был номинирован на звание профессора года в России и проводил свои исследования в Стэнфордском университете. В то же время я начал писать свои первые торговые стратегии.
Потом, после окончания института, я работал программистом. Параллельно я изучал книги Халла и Уилмотта и несколько месяцев работал в ведущем инвестиционном банке в Лондоне.
Какова была ваша роль в инвестиционном банке?
Я имел дело с расчетом риска. Задача состояла в том, чтобы рассчитать сумму денег, которую следует отложить в связи с каким-либо конкретным риском, например, риском изменения процентной ставки. Для оценки рисков я использовал стоимость под риском и ожидаемый дефицит.
Для этой работы было важно знать дифференциальные уравнения, теорию вероятностей и основы финансовой математики, такие как модель Хестона. Но знания в программировании были не столь важны. Достаточно базовых знаний в области программирования.
Связана ли ваша текущая работа программиста с финансами?
Нисколько. Моя команда разрабатывает и поддерживает несколько проектов на основе стека .NET и других фреймворков. Я участвую во встречах, пишу код и провожу технические собеседования по .NET.
Проведение интервью — большая задача для меня. В принципе, примерную оценку кандидата я могу дать после двух-трех вопросов. Однако рекрутинг имеет решающее значение для нашей компании, и обязательна точная оценка кандидатов.
Одна вещь, которую я заметил, проработав в разных командах более 10 лет, заключается в том, что в области разработки программного обеспечения существует серьезная неэффективность.
О какой неэффективности вы говорите?
Возьмем, к примеру, реализацию веб-формы с использованием современных интерфейсных фреймворков: ее создание может занять больше минуты. Сравните это сейчас со временем, затраченным на другие задачи, и вы поймете, что что-то не так. Нейросеть можно запрограммировать примерно на 10 строк Python, а игра на смартфоне со сложной графикой запускается молниеносно.
Я считаю, что с современной фронтенд-разработкой что-то не так. По моему опыту, часто некоторые этапы фреймворка вроде Scrum трансформируются в Cargo Cult и их эффективность толком не оценивается.
Какие методы вы используете в своей команде?
Мы пробовали работать с разными фреймворками и в итоге остановились на своем, который назвали «Reactive Scrum». Это в основном формат, который наиболее удобен для меня и моей команды. Это сводится к использованию Scrum и выполнению минимального количества итераций для получения конечного результата.
Обычная задача для программистов — переписать код, строго следуя обычным принципам SOLID, DRY, KISS и YAGNI при изменении некоторых требований. Это, на мой взгляд, не всегда необходимо и зависит от граничных условий. Будет ли это последнее изменение? Является ли это приоритетом?
Я много раз встречал опытных программистов, которые были категоричны в этих вопросах и отказывались придерживаться иного подхода, чем тот, к которому они привыкли, утверждая, что код превратился бы в «большой ком грязи».
Я считаю, что нельзя слепо следовать правилам. Иногда приходится ломать их, чтобы повысить эффективность.
Вы считаете себя больше программистом или трейдером?
Я в первую очередь геймер, который играет в программирование, трейдинг и другие игры. Я думаю о своей работе программистом как об игре в программирование.
Я также люблю работать удаленно из разных мест. Сегодня я в Белграде, завтракаю в отеле, завтра в Амстердаме, через три дня в Париже, через неделю в Будапеште.
Ваша выигрышная стратегия называется "Duckling PentaKill". Вы играете в видеоигры?
Да. Например, я дошел до 85 уровня в Lineage 2 на рейте х1. Мне понадобилось 1,5 года. Сейчас, конечно, у меня уже не так много времени на игры.
Какую платформу для количественной торговли вы использовали первой?
Я начал программировать на C++ для компании, в которой работал. Алгоритмы, которые были реализованы, напоминали алгоритмы из «Финансового моделирования с использованием C++» Чандана Сенгупты. Моей первой крупной платформой была Quantiacs, и я был удивлен тем, насколько легко и удобно писать алгоритмы по сравнению с другими проектами на C++/C#.
Почему вы присоединились к Quantiacs?
С тех пор, как я пошел в школу, мне нравилось участвовать в различных научно-технических конкурсах. Я занял первые места в своей области по математике, информатике, химии, географии, физике, истории и литературе.
Будучи магистрантом, я выиграл Потанинскую стипендию. Я попал в число 300 победителей, отобранных из 8 000 студентов лучших вузов России. Победители встретились в Москве, и мы сформировали 50 команд. Моя команда вошла в семерку победителей.
Год назад я участвовал в конкурсе «Лучший частный инвестор — 2020» на Московской бирже и занял 67-е место (33-е, если рассматривать только фондовый рынок) из более чем 15 000 участников.
В конце декабря 2020 года я искал информацию о количественном трейдинге на YouTube и нашел видео, рассказывающее о Quantiacs. Я прочитал о проекте и очень заинтересовался им, поэтому я подписался.
Каково ваше впечатление о платформе?
На мой взгляд, Quantiacs — очень удобная и простая платформа для разработки торговых стратегий. Я помню, как тяжело было, когда я начал работать над оптимизацией торговых алгоритмов около 15 лет назад, и я очень рад, что могу легко реализовать свои идеи с помощью Quantiacs.
С Quantiacs легче развиваться как Quant для тех, кто стремится к этому. Кроме того, на платформе можно зарабатывать деньги. Как пишет Дмитрий Галковский, «человек будущего — это геймер», и пользователи платформы — это тоже геймеры, которые могут зарабатывать на игре.
Какие методы вы используете для разработки?
Я стараюсь использовать все доступные методы, черпая вдохновение из математики, разработки программного обеспечения и трейдинга. Например, я написал внутреннюю библиотеку на С++ для создания оптимальных решений с помощью специального Software Development Kit для in-memory БД. Я планировал использовать и CUDA SDK для вычислений видеочипсетов, но это оказалось не очень актуально. Всю свою жизнь я использовал Fortran, F#, Mathcad и MATLAB.
Я считаю, что тип актива (фьючерсы, акции и т. д.), волатильность, политическая обстановка, фазы рынка и латентность алгоритма являются ключевыми параметрами для выбора оптимальной стратегии. У меня нет определенного любимого метода. Лучший способ - рассмотреть различные методы.
Возьмем, к примеру, нейронные сети. Их существует несколько видов и каждая сеть имеет определенный набор параметров: количество слоев, количество входов, количество выходов, функция активации и так далее.
Применять их к задаче разработки торговых стратегий можно по-разному: для определения значений цен акций на следующем шаге или для оценки трендов.
Данные также можно использовать по-разному: вы можете начать с необработанных данных, обработанных данных (например, с помощью фильтра Калмана) и так далее.
Какие инструменты мы должны добавить в Quantiacs, чтобы помочь вам в разработке системы?
Было бы здорово иметь возможность иметь в своем распоряжении какой-нибудь действительно сложный и интересный алгоритм. Например, я хотел бы увидеть какой-нибудь пример, основанный на нейронных сетях, других методах машинного обучения или каких-то других относительно сложных математических теориях, таких как теория мартингейла.
Какие наборы данных вы хотели бы иметь в своем распоряжении?
Я хотел бы иметь данные об объеме торгов криптовалютой. Кроме того, данные по американским казначейским облигациям и нотам могут быть добавлены для разработки алгоритмов торговли акциями.
Также были бы интересны данные с других фондовых бирж (Лондона, Nikkei, Гонконга, Euro Stoxx) с эквивалентом казначейских облигаций и нот соответствующих стран.
Какой совет вы можете дать начинающим количественным исследователям?
Я могу ответить на этот вопрос с разных точек зрения.
С точки зрения разработчика программного обеспечения, нужно написать и протестировать как можно больше стратегий. Чем больше стратегий вы напишете, тем быстрее вы их напишете и получите результаты. Вы должны изучить Python, который является мощным языком для анализа данных.
Что касается математики, важно знание теории вероятностей и дифференциального исчисления. В идеале вы должны прочитать много статей и уметь применять описанные там стратегии.
С точки зрения анализа данных важно знать, как работают основные алгоритмы анализа данных: регрессия, нейронные сети, деревья решений, бэггинг, бустинг, машины опорных векторов, суммирование.
Важно присоединиться к неформальным встречам по разработке программного обеспечения, науке о данных и трейдингу, так как там можно получить ценные советы.
Но, пожалуйста:
1. Никому не доверяй.
2. Помните: «Барзини попытается нанести удар первым, вам попытаются назначить встречу через кого-то, кому вы доверяете, он будет гарантировать вашу безопасность, но на этой встрече вас убьют… Кто предложит встретиться с Барзини, тот предатель. ».
Оставайтесь в безопасности.
Спасибо, Иван, и удачи в новых конкурсах Quantiacs!