Интервью: как С# и C++ помогают заработать на фондовом рынке

Одним из самых популярных топиков в нашем блоге стал рассказ о Джесси Сполдинге — парне, который заработал $500к на фондовом рынке, применив свои познания в программировании и понимание основ фондового рынка (часть 1часть 2). В комментариях к этим текстам некоторые хабрапользователи выражали свое сомнение в реалистичности такого сценария в нашей стране. Также слышались фразы вроде «ну он раньше работал в этой сфере».

В связи с этим редакция блога ITinvest поговорила с Андреем Горьковенко — разработчиком, который повторил путь Джесси Сполдинга и сумел перевернуть свою жизнь с помощью фондового рынка и технологических знаний. Этим текстом мы открываем цикл интервью с непосредственными участниками процессов на российском фондовом рынке — разработчиков софта, трейдеров и руководителей компаний.

Примечание: Андрей Горьковенко раньше работал программистом в ITinvest. В частности, он трудился над проектом торгового терминала SmartX (история его создания описана в отдельном хабратопике). Позднее он создал универсальную механическую торговую систему, с помощью которой можно реализовывать различные стратегии торговли на фондовом рынке. Эта разработка приносит ему основной доход, который превышает среднюю зарплату разработчика в Москве.

Андрей, привет! Расскажи, как ты вообще оказался связан с фондовым рынком?

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

И в чем там состояли твои обязанности?

Моей главной задачей была разработка торговых приложений для трейдеров компании. Например, я делал различные системы и приводы дляскальперов. С помощью одной из таких программ можно было вводить приказы в торговый терминал не мышкой, а прямо с клавиатуры. Сейчас этим никого не удивить, но в те годы удобных средств для торговли было не особенно много. Другая разработка того периода — арбитражный робот, умевший совершать арбитражные операции на разных рынках (фьючерс и спот).

Начиналось это все как простое удовлетворение собственных нужд организации, но «вышло из под контроля», поскольку оказалось, что такие продукты востребованы широкими массами потенциальных клиентов. Была организована отдельная компания, которая занималась разработкой торговых роботов и биржевого софта. Из этой компании, я уже и перешел на работу в ITinvest, где занялся разработкой нового торгового терминала SmartX (история этого проекта размещена здесь — прим. ред).

А как все пришло к самостоятельному выходу на рынок?

Через какое-то время после смены работы и переезда в Москву, я факультативно, в свободное время, написал нового робота, который мог торговать все, что угодно. Это даже скорее был не робот, а торговая платформа, которая могла подключаться к интерфейсам разных отечественных брокеров, к разным терминалам, к бирже. В нее можно было быстро загрузить торговую стратегию, и она работала. Что-то типа Wealth Lab или российских StockSharp и TSlab.

  TD Bank запускает роботизированный продукт для клиентов из США

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

Эта платформа жива до сих пор, это основной источник моего дохода. Конечно, в ней мало что сохранилось с 2011 года, но основные конструкции и философия остались неизменными.

image

Интересен такой момент, ты же сам не трейдер, а программист. Ты сам писал торговые стратегии, или тебе кто-то помогал? Как заработать на такой системе, если не разбираться в трейдинге?

Было и так и так. Во-первых, очень сильно мне помогло то, что изначально я работал в компании, которая занималась непосредственной торговлей на бирже. Меня прикрепили как раз к отделу профессиональных трейдеров, чьи запросы и нужно было реализовывать программно. Это дало понимание основных рыночных механизмов, а также знание базовых стратегий работы на рынке. Во-вторых, у меня есть партнер, который имеет значительно больший опыт в трейдинге. Эдакий Джефф Дин от трейдинга (смеется). Без шуток, его опыт и проницательность во многом повлияли на становление меня как профессионального трейдера. Большинство стратегий, которые дожили до сегодняшних дней – это плод наших с ним мозговых штурмов, споров и рассуждений. Еще я часто общаюсь со своими коллегами по цеху, мы обсуждаем новости рыночной и околорыночной сферы. Из таких встреч зачастую можно почерпнуть много нового и интересного. Часть стратегий я придумывал самостоятельно, наблюдая за рынком. Еще я постоянно изучаю различные решения на форумах, сайтах по продаже торговых роботов и т.п. в надежде найти хотя бы сколь-либо адекватную идею. Вообще, чтобы сделать робота нужна либо идея – своя или чужая — которую можно адаптировать под свою платформу и протестировать.

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

В целом, это достаточно увлекательный процесс – отделение зерен от плевела. 90% идей после тестирования оказываются шлаком, и в лучшем случае на истории показывают ноль. Оставшиеся идеи проверяются на наличие скрытых и случайных ошибок, затем запускаются в режиме виртуального исполнения заявок, и лишь 1-2% доходят до реальной торговли.

Понятно. Какова в итоге отдача от этого проекта? Насколько он успешен, по-твоему? Чем ты как успешный трейдер можешь похвастать?

Я не заморачиваюсь какими-то внешними проявлениями успешности вроде дорогих машин и крутых гаджетов (даже телефоном пользуюсь стареньким iPhone 4, хватает вполне, хотя могу купить что угодно). Я в принципе стараюсь во всем следовать соображениям целесообразности и жить аскетично – это закаляет и помогает без проблем переживать любые трудности. Зато не скуплюсь на путешествия. Только в 2013 году я побывал в 6 странах (зимой – в Чехии, Германии и Австрии, летом – в Финляндии, осенью – в Испании и Франции). Что касается жизни, то конечно благодаря трейдингу я смог избавиться от всякой скукоты типа поездок на работу и совещаний, которые пожирают чертову уйму времени (особенно в Москве).

  Секрет Арнольда

Сейчас я работаю из дома, у меня хорошее оборудование, мониторы, комфортная обстановка, удобное кресло. Стал ли я меньше работать? Пожалуй, нет, но я свободен строить свой график исходя из своих нужд и настроения. Единственный момент, с 10:00 до 19:00, когда идет основная торговая сессия на бирже, нужно приглядывать за роботом, чтобы он не падал. Вернее, чтобы не падала биржа (за последний год биржа давала сбоев больше, чем робот (смеется)). Хотя это можно делать откуда угодно — система уже достаточно «поумнела» и умеет сама себя мониторить и отправлять SMS-сообщения и имейлы о своем состоянии. Поднять ее можно хоть из кафе, хоть с Бали.

image

Ты продолжаешь разработку единолично или уже привлекаешь кого-то?

Да, продолжаю разработку один. Сейчас переписывают систему полностью на C++. Пока нет потребности к привлечению наемного труда.

Давай поговорим о технологиях. Чем обусловлен изначальный выбор С# и нынешний переход на «плюсы»? 

Изначально я писал проект на C# потому что на нем мне было проще и быстрее сделать готовый продукт. Функциональность, доступная в платформе .NET, довольно богата (работа с контейнерами, потоками, файлами, с XML, наличие GUI), что делает ее неплохим выбором. Причина перехода на C++ банальна — не хватает производительности. Сейчас требования к софту в этом плане очень высоки —время пересчета стратегий измеряется единицами микросекунд. Каждая микросекунда на счету.

Процесс перехода на «плюсы» начался несколько лет назад, когда был куплен сервер, и робот впервые встал на колокацию сначала к брокеру, а затем и в дата-центр биржи. Переписать часть модулей пришлось уже тогда, а затем я занялся и ядром. Если брать текущего торгующего робота, то на C++ написана вся «математика, и адаптеры к системам биржи и брокеров. Все остальное остается на C#. То есть на низкоуровневом языке написаны модули, требующие минимальных задержек, а логика принятия торговых решений, GUI и вспомогательные модули реализована на высокоуровневом языке.

Эта связка языков — C# и С++ — крайне жизнеспособна. На то, чтобы написать новую торговую стратегию или видоизменить старую у меня уходить час-два времени. В случае сложной математики — день-полтора. При этом в систему встроена функция бэк-теста, новую стратегию можно тут же протестировать на исторических данных. Кроме того, есть генетические алгоритмы, с помощью которых можно оптимизировать стратегии.

  Хороший инвестор - "мертвый" инвестор?

image

Вообще, что лучше изучать тем, кто хотел бы найти работу на фондовом рынке?

Тем, кто начинает свой путь в трейдинге или как-то заинтересован в этой области, я бы посоветовал обратить свое внимание на высокоуровневые платформы и языки, такие как .NET и Java. Последняя очень популярна на западных фондовых рынках, у нас пока меньше, но есть хорошие перспективы более широкого распространения этого языка. Это значит, что Java-программисты, будут востребованы в финансовых компаниях, фондах и брокерах. Все-таки .NET — довольно закрытая платформа, которая к тому же имеет целый ряд ограничений. Для low-latency и HFT-торговли она подходит не очень хорошо.

Но и на .NET и на Java можно довольно быстро создавать законченные программные продукты. Главный минус — они бывают не самыми быстрыми (если счет идет на микросекунды).

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

Все покупалось и делалось на доходы от трейдинга. Деньги на все «железо» выводились с брокерского счета. Что касается дохода, то до того момента, как доход от работы системы сравнялся с зарплатой разработчика, прошло где-то полгода.

image

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

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

Как и в любом деле, связанном с неопределенностью и риском, в трейдинге бывают взлеты и падения. Переменчивость (дисперсия) результатов в биржевой торговле, с одной стороны, позволяет получить значительные профиты (и речь не только о деньгах; сюда можно отнести и время, и знания и взгляды на окружающий мир), но с другой стороны, она постоянно разрушает мое сознание. Подводя черту под почти тремя годами торговли «на свои», я спросил себя — отказался ли бы я в пользу трейдинга от (на тот момент весьма и весьма приличной для 25-летнего программиста) зарплаты, если бы знал, что переживу за эти 3 года? Определенно, да.

Оригинал статьи http://habrahabr.ru/company/itinvest/blog/223551/

Пролистать наверх