Ближайшее окружение алгоритма

Москва, 28.06.2010
«D`» №12 (99)
Победитель обоих этапов «Алгоритмуса» Алексей Неботов рассказал о своих стратегиях и сопутствующих им инфраструктурных разработках

С Алексеем Неботовым мы встретились в редакции журнала D′. «Ага! Вот он какой», — поприветствовал гостя наш главный редактор. «Совершенно обычный», — отреагировал Алексей. Победителю «Алгоритмуса» 29 лет, в Ивановском химико-технологическом университете он получил два высших образования — по специальностям «автоматизация технологических процессов» и «менеджмент». В настоящее время живет в Москве, работает в сфере IT-консалтинга, а свободное время посвящает трейдингу, с которым и связывает свои перспективы.

Работа на рынке

— Ты пять лет в трейдинге, расскажи, как начинал. Сразу использовал механическую торговую систему (МТС) или сначала торговал «руками»?

— Начал я с ММВБ и торговал «руками», совсем недолго и неудачно. Как все начинающие, что-то проигрывал. Потом я перешел на FORTS, где торговал уже более аккуратно, и со временем я начал замечать четкий алгоритм своих действий, который было удобно исполнять с помощью робота. Прочитав Api к QUIK, с помощью MSSQL я сделал свою первую систему. Постепенно она изменялась: если сначала было много ручных операций, то со временем я занялся оптимизацией алгоритма. Начал с того, что использовал для расчетов Excel, из которого вручную переносил параметры в робота, потом реализовал расчет этих параметров в самом роботе. Так постепенно я скатился к полностью автоматическому трейдингу.

— Какие стратегии использовали твои роботы?

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

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

— Много систем ты сменил на рынке?

— Тестировалось очень много, многие показывали положительный результат, но тех, что получилось выпустить в бой, всего несколько, наверное, около пяти. Все они в своей основе имели простые идеи. Могу привести пример еще одного боевого робота: он считал количество покупок и продаж за последние N секунд. Потом если было больше покупок — покупал, если больше продаж — продавал и закрывал позицию через несколько секунд. Идея простая, но как раз такие идеи, как правило, и торгуются. Чем сложнее алгоритм, тем больше риск, что ты слишком много придумываешь, подгоняя систему под исторические данные. Этот риск очень значителен в случае использования нейронных сетей, например.

О чемпионах «Алгоритмуса»

  Фото: Виталий Михалицын
Фото: Виталий Михалицын

— Робот, победивший в «Алгоритмусе», разработан на основе нейронной сети. В реальной торговле ты их не используешь?

— Я к этому иду. Одной из причин моего участия в конкурсе было желание поэкспериментировать с нейронными сетями. Их использование в торговле — это отдельный разговор, тут есть свои сложности. Нейронные сети очень хорошо учатся, и всегда существует риск их переобучения. Они могут просто запомнить текущие данные и тупо использовать их в будущем. Существует известный пример, когда нейронную сеть пытались научить находить танки на фотографиях. Сеть обучили, однако позднее выяснилось, что она научилась распознавать не танки, а полигон, на котором они были сфотографированы, просто привязалась к типу ландшафта. Поэтому понять, чему научилась нейронная сеть, очень сложно, и чем больше сеть, тем сложнее это сделать. Зато ни один из индикаторов, работающих с историческими данными, не укажет точнее будущее направление рынка, чем нейронная сеть, которая способна учесть весь объем данных. Очень часто перед нейронными сетями ставят задачу определить цену, которая будет достигнута на следующем баре. На мой взгляд, это неправильно, да и не нужно — достаточно, чтобы она указывала направление движения.

— Система, победившая в конкурсе, могла бы работать на рынке?

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

— С крупными игроками трудно конкурировать в скорости?

— Да, в скорости и стабильности систем. Взять, например, арбитраж: зарабатывает больше тот, кто оказывается первым. Оказываясь вторым, третьим или пятым, ты зарабатываешь, но уже меньше. Если с одним и тем же инструментом работают два робота, которые по очереди предлагают лучшую цену, при этом один из них реагирует на действия конкурента через секунду, а другой — через полсекунды, то медленный робот будет зарабатывать в два раза меньше. Зарабатывая мало, при любом сбое ты рискуешь потерять все, что заработал. Надежность канала тоже очень важна: у тебя может быть все написано идеально, но где-то по пути к шлюзу зависла транзакция, например. А крупные игроки могут использовать надежные системы с высокой скоростью, потому что между их серверами и биржей меньше посредников.

Командный дух

— В комментарии по поводу первого этапа конкурса ты отметил, что хотел бы сменить работу, чтобы быть ближе к рынку.

— Это действительно так. Разработкой торговых систем я занимаюсь в свободное время и чувствую недостаток общения в этом вопросе. Вращаясь в профессиональной среде, намного легче получать новую информацию. Иногда достаточно 15 минут общения, чтобы не тратить массу времени на чтение специальной литературы. Онлайновые ресурсы тоже не панацея: для того чтобы узнать что-то ценное в интернете, приходится отфильтровывать массу лишней информации. Поэтому, поработав на рынке один, я пришел к тому, что продолжать работу нужно в команде.

Сейчас я занимаюсь онлайн-проектом, который, по моим планам, должен объединить усилия частников, занимающихся созданием МТС. Поскольку я пишу на C#, объединиться я предлагаю под C#. Проект еще молодой, поэтому пока приходится больше делиться своими разработками, но уже появились люди, которые готовы включиться в работу. Речь прежде всего идет об инфраструктурных разработках для МТС. Когда все пишешь сам, это отнимает очень много времени. Ведь помимо совершения сделок система должна подключаться к QUIK и отключаться, когда нужно. Всегда есть риск обрыва соединения — эту возможность нужно предусмотреть. В итоге оказывается, что обеспечить техническую сторону дела наиболее трудоемкая задача: мой торговый алгоритм — это всего 500 строчек кода, а система в целом — около 12 тыс.

— Российские брокеры начинают предоставлять услуги автотрейдинга. Может быть, с развитием этого рынка многие сложности, с которыми сталкиваются разработчики-одиночки, исчерпают себя?

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

Технические риски

  Фото: Виталий Михалицын
Фото: Виталий Михалицын

— С технической стороной торговли связаны наибольшие риски?

— Да, эти риски играют не меньшую роль, чем торговые. Мне приходилось как терять деньги на своих, так и зарабатывать на чужих технических сбоях. Их сразу видно. Распространенная ошибка систем, не учитывающих асинхронность: робот выставляет заявку и тут же смотрит список заявок, где новой заявки еще нет. Посылает еще одну. Так за три секунды может улететь до 100 заявок, да еще рыночных. Образовывается хороших размеров свеча. Когда робот обнаруживает, что слишком много купил, он начинает все продавать и так бьет по рынку в разные стороны. Сейчас я использую только лимитированные заявки и никогда, даже если очень нужно, не совершаю сделок по рынку. Покупая или продавая по рынку, ты всегда рискуешь получить цену с десятой строчки «стакана».

— Как ты борешься со сбоями системы?

— Мой подход заключается в том, чтобы ни в чем не менять код после этапа тестирования, потому что, поменяв код даже незначительно, можно столкнуться с непредвиденными проблемами. Сейчас, я считаю, у меня достаточно хорошая архитектура системы, но, чтобы ее добиться, мне пришлось переписать ее несколько раз. Сыграли свою роль переходы с MSSQL на Delphi, а потом на C# — сейчас код стал короче и логичнее. Меняя же любую строчку кода, как бы незначительна она ни была, обязательно нужно заново все тестировать. Кроме бэктестинга я тестирую роботов на демосерверах. Доступ к ним можно получить на сайте QUIK, некоторые брокеры тоже предоставляют такую возможность. Однако проявить себя в полной мере система может только в условиях реальной торговли, когда ей приходится конкурировать с другими роботами.

У партнеров

    «D`»
    №12 (99) 28 июня 2010
    Топ роста
    Содержание:
    Свой бизнес
    Реклама