Лучший онлайн-брокер для работы на бирже
65,60
рейтинг
21 мая 2014 в 14:58

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

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

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

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

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

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

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

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

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

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

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

Платформа была полностью написана на 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 года? Определенно, да.

Ссылки и посты по теме:

Автор: @itinvest
ITinvest
рейтинг 65,60
Лучший онлайн-брокер для работы на бирже

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

  • +10
    А что ж на «скриншоте» Java?
    • –4
      Ну так про нее ж тоже сказано, что очень перспективна. Все логично
    • 0
      Видимо картинка с кодом Java сопровождает этот текст =):
      такие как .NET и Java. Последняя очень популярна на западных фондовых рынках, у нас пока меньше, но есть хорошие перспективы более широкого распространения этого языка. Это значит, что Java-программисты, будут востребованы в финансовых компаниях, фондах и брокерах.

      Тоже возникло ощущение, что картинка ни к месту.
  • +19
    Статья типа honeypot.
    Особенно порадовали иллюстрации с пляжем, кодом на java в пункте про связку C#/C++, «мощными серверами».
    Красота — всем срочно писать торговых роботов!
    • –4
      Почему бы и нет, собственно)
      • 0
        Да я чисто констатировал факт.
        Ни негатива, ни позитива по отношению к статье, автору, главному герою, применяемым технологиям и прочему-прочему не испытываю и не выказываю.
        При написании комментария ни одно животное не пострадало.
      • +6
        Знаете ли, дело то такое неблагодарное. Можно убить годы на вылизывание алгоритма и, будь он трижды логически верным и 500 раз переоптимизированным, но без понимания «покапать/продавать» в конкретный момент времени ничего стоящего не получится, кроме того исходя из опыта собственных наработок — очень сложно написать алгоритм( если вообще такое возможно ), который бы торговал в плюс на протяжении пары месяцев и более.
        Статье плюс, читать интересно было
      • 0
        Тогда почему бы не писать роботов для игры в букмейкерских конторах?
        Анализировать ставки, историю событий, спортивные новости…
        Реальной пользы (имеется ввиду глобально, а не ограниченному кругу лиц заведующему процессом) что тут что там нет, зато можно разбогатеть (если повезет).
        • +1
          Ну их и пишут. Читал популярной является «игра на вилках» — в разных конторах разные фавориты в некоторых матчах. Например, в одной конторе на событие «Реал забьет больше 1.5 мячей в первом тайме» коэффициент 2.1, а в другой конторе, такой же коэффициент на то, что «забьет меньше 1.5 мячей в первом тайме». Перекрываешь оба события и точно выиграл. Опять же слышал, что пытаются отслеживать таких умников, как не знаю.
          • 0
            Торговля на арбитраже, уже давно малоактуально, торговые боты выравнивают цены за миллисекунды.
            • 0
              Простите, вы про букмекерские конторы говорите? В последний раз когда заглядывал на сайты из топа контор сам глазами находил «вилки».
              • 0
                Извиняюсь, в голове сразу возникла аналогия межбиржевого/междиллингового арбитража, там боты съедают разницу почти сразу или она не превышает величины спреда, сейчас посмотрел, торговля на «вилках» у букмекеров действительно все еще актуальна (или по крайней мере так пишут)
                • 0
                  букмекерская вилка тоже арбитраж, и есть сканеры и парсеры букмекеров для поиска этих вилок, но букмекеры могут обломать весь кайф, например
                  ограничив ставку
        • 0
          У букмекеров низкая ликвидность, мало данных для анализа и случайность результата выше.
      • +1
        Вот только itinvest не очень подходит начинающим алготрейдерам. Высокие тарифы + отсутствие возможности выбора терминала.
        Если пишешь под SmartTrade, то к другому брокеру уже не уйти + завышенные тарифы по плазе.

        В трейдинге мы ищем закономерности — эти закономерности приходят и уходят. И они статистически всегда вам дадут 50% дохода / убытка. + комиссия брокера и вы уже в убытке.

        Если планируете все же попробовать — берите сумму, с который уже попрощались.

        • 0
          Есть SmartTrade, есть новая торговая система и SmartX, возможность подключения партнерских терминалов. Какого рода выбор должен быть?
  • +18
    А это такой стандарт внутренний, в любых статьях о трейдинге прикреплять фотографии курортов?
  • 0
    Статья полна позитива.
    Но вот как только начинаешь понимать, каково соотношение людей получивших профит к слившим стартовый капитал. При чем не в пользу последних. Понимаешь, что все далеко не так просто, и хорошим терминалом/навыками программиста, дело не заканчивается.
    Например, в таких статьях либо вскользь упоминают, либо вообще не говорят о менторе (фин партнере) который хорошо разбирается в рынке и по сути знания, опыт которого и играют ключевую роль.
    • 0
      В статье Андрей как раз об этом и говорит, что все совсем не так однозначно. Очевидно, что неподготовленным соваться на фондовый рынок — это стопроцентная гарантия потери денег. При этом если разработчик, сначала поработает в компании из индустрии, то потом, особенно при наличии знакомых трейдеров (которые обязательно появятся), вполне может добиться определенного успеха. Пусть не стать миллионером, но изменить жизнь к лучшему
  • 0
    Стратегии постоянно меняются, моя история другая — писал торговых ботов для форекс как хобби в течении 3-х лет. Начал студентом 3-его курса, подрабатывал админом и оттачивал ботов на демо, многие стратегии отсеивались, если работало в плюс месяц -два, ставил бота на реал, потом даже выиграл приз в 1000$ на конкурсе демо-счетов у одного из форекс-дилеров, это меня окрылило, в последующие 2 месяца поднял свой реальный счет с 50 до 150тыс руб., (для недавнего студента это было супер) еще через месяц стратегия начала работать в стабильный убыток, думал все вот-вот закончится и пойдет обратно в профиты, нет, осталось 50тыс, остановился, вывел все до копейки, дал зарок что больше в это не сунусь, разве что осенит гениальная идея грааля :)
    Сейчас работаю на стабильной работе, по удаленке, точно также не надо стоять в пробках, зато нервы целы.
    • 0
      Ну форекс с фондовым рынком сравнивать, конечно, не совсем корректно. Но действительно обстоятельства могут разные быть.
  • +2
    Андрей молодец!
    По своему опыту могу сказать, что очень сложно создать свою платформу для алгоритмической торговли! Тем более универсальную под различные коннекторы и торговые терминалы. Но именно такой подход позволяет строить гибкие стратегии и прибыльных торговых роботов.
    К сожалению, ни одна российская разработка для алгоритмической торговли(да, и большинство зарубежных) не могут предложить гибкий, доступный и функциональный интерфейс для создания роботов, тем более высокоскоростных. Получается либо слишком примитивно — с визуальными конструкторами, либо слишком сложно — много специфичного кода(не редко низкого качества).
    Поэтому все профессионалы сидят на своих «велосипедах». Пока, к сожалению, реалии таковы)

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

Самое читаемое Разработка