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

В апреле прошлого года я написал первую статью на 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.

88
38 комментариев

А знаете почему не удается придумать успешный автоматический алгоритм торговли? Потому что он уже придуман и используется :)
Вся торговля "ломается" на квантовых алгоритмах высокочастотной торговли маркет-мейкеров рынка, которые могут торговать вашими же позициями вперёд вас.

1

Со всем уважением к вам, но я с вами не соглашусь. Торговля есть на различных таймфреймах и с различными капиталами. Если ты отрабатываешь месячную волатильность, то тебе наплевать, что какие-то высокочастотные трейдеры у тебя заберут долю процента.

3

Это заблуждение.
Есть HFT алгоритмы, которые работают эксплуатируя неэффективности за счёт преимущества в скорости и информированности.
Моя стратегия — это мой подход к трендовой торговле.

1

Было интересно читать, но я бы хотел сделать замечание. Нет ни ссылок, ни каких то картинок, мало по существу алгоритмической торговли.
Нет каких-то данных по точности и анализа доходности.
Совершенно не ясно что у вас с нейронными сетями.

Взять, например, tslab. Там видно что у вас происходит с вашей доходностью при использовании той или иной торговой стратегии.

Совершенно не ясно из вашей статьи, что у вас с алгоритмами в разрезе различных финансовых инструментов.

Я вот писал простые алгоритмы на EMA и стохастике (хотя писал и другие), и ты смотришь, на одном инструменте ты опережаешь инвестиционную доходность в два раза, а на другом в убытке.

Это связано с тем, что инвесторы, трейдеры и прочие используют разные подходы + волатильность.

На мой взгляд, нужно нормально, научно и обоснованно представлять информацию.

1

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

Если вам интересно узнать о моей работе больше можем пообщаться в телеграмм.

Если вы хотите выявить взаимосвязь тех или иных факторов с каким-то выходным параметром, то есть такая вещь, как корреляционный анализ. То есть, вы получаете коэффициент корреляции и понимаете, что например, на таком то отрезке времени лучше всего торговать по Стохастику, а в другой момент времени по MACD.

Однако здесь есть РЯД проблем, которые нужно учитывать. Важнейшая проблема заключается в том, что если вы взяли временной ряд до какой-то точки, то это не значит, что после всё будет работать.

Давайте взглянем на картинку.
Посмотрите на выделенное зелёным цветом. Очевидна высокая корреляция со стохастиком. Вы берете промежуток, вам показывает, что нужно торговать по стохастику. Но смотрите что происходит дальше. Рост MACD и уже точка входа по пересечению сигнальной линии и MACD. (выделено красным). А есть вообще дичь, которая выделена синим цветом.

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

Лично для себя я нашел объяснение и двигаюсь в другом направлении.

1

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

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

1