Торговый алгоритм, с которым я намучился. Привлечь деньги инвесторов, потерять доверие, но допилить продукт
В апреле прошлого года я написал первую статью на VC, где рассказывал про свою торговую стратегию и алгоритм. Несмотря на то, что волна популярности торговых алгоритмов спала, мне до сих пор пишут люди, которые прочитали эту статью и заинтересовались алгоритмизированной торговлей. Найти информацию о том, как создавался или функционирует инвестиционный робот, довольно сложно. В этой статье я расскажу, как происходила разработка алгоритма, и почему сейчас я могу привлекать инвестиции без оглядки на первые неудачи.
Большие деньги
В то время алгоритм работал на Срочном рынке Московской биржи, код был написан под QUIK — самый популярный в России торговый терминал. Предполагалось, что алгоритм станет инструментом для ритейл-инвестора, забегая вперед, скажу, что этого так и не произошло. Предлагая что-то новое российскому массовому инвестору, сталкиваешься с глобальным недоверием и пренебрежением – так можно навсегда остаться на этапе объяснения, что это, вместо того, чтобы работать над качеством продукта.
Практически сразу после публикации статьи мне написал менеджер крупной инвестиционной компании и предложил обсудить сотрудничество, я отнесся к этому с большим сомнением, но, конечно, не отказался от встречи. На тот момент я даже не мог предположить, что мой инструмент может заинтересовать категорию клиентов HNWI. Однако, оказалось, что люди устали от классических предложений брокеров и инвестиционных банков и находятся в поиске альтернативных инструментов. Встреча с новым партнером получилась крайне позитивной. Если пару дней назад я ждал перевод в 3000 рублей от одного из текущих клиентов алгоритма, то сейчас мне пообещали привлечь двух клиентов с суммарным объемом инвестиционных средств в 200 000$. Безусловно, это была удача, и я очень благодарен своей девушке за то, что она предложила мне написать первую статью на VC, и терпеливо ее редактировала.
Крупные инвестиционные средства открывали возможность выйти с алгоритмом на международные рынки и сделать полноценный инвестиционный продукт. Более того, стало понятно, что регулярные сделки единовременным объемом в 14 млн рублей на Московской бирже мешают корректному исполнению стратегии и могут влиять на конечный финансовый результат. Так я начал тестировать ES.CME (фьючерсные контракты на американский индекс S&P) в работе через свой алгоритм, чтобы понять, могу ли предложить своим клиентам один из самых ликвидных в мире финансовых инструментов.
Несколько суток без сна, чтобы сделать бэктест руками – тогда я чувствовал себя, как перед полетом в космос.
Здесь надо понимать, что для корректного тестирования стратегии должен быть написан специальный бэктест алгоритм. Необходимо взять данные исторического движения цены, прогнать их через алгоритм, который просимулирует сделки и покажет эффективность использования стратегии. В тот момент времени такого бэктест алгоритма у меня не было, пришлось делать все вручную. В моем алгоритме задействовано девять параметров, которые необходимо рассчитать прежде чем принять решение о сделке. В свою очередь эти параметры составлены из нескольких других расчетных величин.
Вероятно, фаза рынка, которую я выбрал для тестирования инструмента была исключительно благоприятной — бэктест показывал прибыль в 100% за месяц. Презентация для инвесторов оказалось очень многообещающей.
Международный брокер и разработка алгоритма
Российские брокеры и биржи сейчас активно развивают доступность международных рынков для ритейл клиентов. Да, наверное, для тех, кто хочет иметь возможность добавить в свой портфель акции крупных международных компаний, текущий сервис, предлагаемый отечественными финансовыми институтами, подходит. Мне же был необходим полноценный выход на международные рынки и функциональный API. Казалось, что единственный вариант для российского инвестора выйти на международный рынок — это Interactive Brokers. Но как раз в то время, когда мы обсуждали, на какой платформе писать алгоритм, началась волна закрытия счетов граждан РФ. Interactive Brokers без объяснения причин начал закрывать счета российских клиентов. Так мы нашли альтернативу — EXANTE.
Дальше было нужно найти программиста, который сможет написать торговый алгоритм. Честно, я подумать не мог, что в 2020 году будет так сложно найти человека, который сможет написать код. Поиски программиста затянулись на месяц, пока кто-то из друзей наконец не вспомнил, что у него есть человек с релевантным опытом написания алгоритмов для хедж-фонда. Я готов рекомендовать этого специалиста всем, кто заинтересован. Полное погружение в проект, экспертиза, желание помочь и терпение сделали возможным существование текущей версии алгоритма. Разработка алгоритма заняла 1,5-2 месяца и стоила мне 500 000 рублей собственных средств.
EXANTE презентует себя как высокотехнологичного брокера. Брокер действительно постоянно развивается: существенно увеличил количество серверов за последний год и каждую неделю выкладывает свежее обновление торговой платформы. Однако в первый год работы было огромное количество ошибок, которые удавалось решать только благодаря прямому контакту с главой разработки. Однажды, в первый месяц после запуска алгоритма, во время активной фазы торгов на американском рынке у EXANTE упали сервера и клиенты не получали информации о состоянии собственных заявок и позиций. В попытках закрыть свои позиции, набирали новые в противоположную сторону и с неограниченным плечом, и обнаруживали это с задержкой. В тот день мы потеряли по 30 000$ из портфеля каждого клиента. После того, как брокер возместил эти убытки, признав ошибки на своих серверах — сомнения относительно надежности EXANTE пропали.
Бэктест в реальном времени
В целях диверсификации клиентских средств инвесторам было предложено шесть разных инструментов на выбор для торговли, позднее это число выросло до 12. В один день на клиентском счете торговалось не более трех разных инструментов, и набор этих инструментов часто менялся. Как можно догадаться, результаты были крайне нестабильны. Мы переключались с одного инструмента на другой, относясь болезненно к любой краткосрочной просадке. В один день алгоритм зарабатывал 12 000$, два последующих дня терял по пять. К счастью, клиенты оказались терпеливыми людьми, склонными к авантюрам. Было принято решение продолжать работать, и мы пробовали совершенно разные инструменты в поисках подходящего.
Стало очевидно, что это бэктест в настоящем времени и на реальных деньгах. На этом этапе я остановил работу алгоритма и обратился к другу за помощью в написании полноценного бэктест-алгоритма – конечно, это следовало сделать в самом начале.
Следующие полгода я занимался исключительно тестами. Проверял различные инструменты и искал, почему не получалось зарабатывать стабильно. Способ, которым алгоритм принимает решение о входе в позиции, не меняется уже многие годы, но часть вспомогательных расчетов в результате работы с тестером были изменены. Раньше выбор инструмента производился фактически на глаз. Основным требованием было наличие трендовости на ценовом графике инструмента, этого было достаточно чтобы запуститься в работу. Период для расчета параметров, уровень ограничения рисков, тейк-профит и другие параметры были статичны, рассчитывались из одинаковой выборки данных для каждого инструмента и для каждого таймфрейма. Теперь же каждый параметр становился динамическим, способным подстраиваться под инструмент и текущий рынок. В сущности, на этом этапе я мог найти рабочие параметры для алгоритма под каждый инструмент на любом отрезке времени. Люди, знакомые со статистикой и тестированием систем, поймут, что речь идет об overfitting. Это такая ситуация, когда тестировщик системы занимается подгонкой параметров для получения лучшего результата его системы. На практике заканчивается это тем, что у торговой системы идеальные показатели на исторических данных, но ничего не получается в будущих периодах.
Спустя время и несчетное количество тестов удалось сократить количество инструментов и рабочих таймфреймов до двух. Я проверил 18 разных инструментов и только два из них давали стабильно хорошие результаты без существенного изменения рабочих параметров алгоритма под каждый временной период. Сейчас алгоритм торгует ZL.CBOT и HE.CME, при этом первый торгуется каждый час, а сделки по второму могут происходить каждые пол часа.
Жадность
В новой презентации для инвесторов на слайдах было объяснено, почему ранее отсутствовала стабильность, что поменялось в коде алгоритма, как теперь рассчитываются параметры. Запускались осторожнее, на скромные 15 000$, проверяли ежедневный результат. Спустя пару недель добавили денег на счет, увеличив его до 90 000$.
Имея на депозите такую сумму, клиент мог позволить себе торговать 15-30 контрактов инструмента ZL.CBOT/ZS.CBOT, что давало возможность зарабатывать в день 15 000-19 000$. Таким образом, каждый новый день торгов мы могли увеличивать количество лотов в работе на 3-5 штук. В какой-то момент нереализованная прибыль по сделке достигала 42 000$.
Думаю, что опытные трейдеры могут из предыдущего абзаца понять, что случилось дальше. У каждой стратегии есть период просадки, это абсолютно нормально, не стоит из-за этого переживать. Однако в случае, если вы не соблюдаете правила риск-менеджмента, такие периоды могут стать губительными для вашего депозита. Торговать на 100% от депозита и добавлять количество лотов при первой же прибыли совсем не подходит для правильного управления капиталом. Короткий отрезок убыточных сделок пришелся на тот момент, когда на счету стало 200 000$, и все они были полностью в работе. Счет быстро опустился к начальной точке.
Проблема решается весьма тривиально: необходимо использовать такое количество капитала в работе, которое даст возможность переживать короткие серии убыточных сделок.
Что дальше
У меня нет длинного трек-рекорда работы моего алгоритма на живом рынке, но я могу позволить себе привлекать инвестиции, потому что знаю, что является фундаментом моей стратегии. Потому что смог найти и признать свои ошибки, сделать алгоритм лучше. Мне не составит труда объяснить, почему алгоритм работает и будет продолжать зарабатывать. За эти два года была проделана колоссальная работа, чтобы алгоритм приносил прибыль.
Сейчас я активно привлекаю средства сторонних инвесторов. Мне бы хотелось открыть полноценный фонд на базе своего алгоритма и нескольких других. Система торгов этого робота подходит под множество рыночных активов, алгоритм тестировался на акциях, криптовалюте и облигациях. Количество инструментов так велико, что для эффективной диверсификации по активам, в ближайшем будущем планируется добавить нейронную сеть.
Нейронная сеть сможет самостоятельно искать подходящие инструменты среди всех классов активов. Более того, работа с сетью позволит улучшить чувствительность алгоритма к рыночным изменениям, нейронная сеть позволит более оперативно менять период для самообучения параметров алгоритма. Также, за счет нейронной сети повысится результативность алгоритма так как появится возможность иметь динамический уровень прибыльности под каждую сделку.
Если вам интересно узнать подробности этой истории, получить презентацию, или вы хотите получить контакты моих программистов, напишите мне в Telegram.