Я искал платформу для исследования торговых стратегий, но пришлось начать писать свою

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

Я попробовал несколько популярных решений, и каждое из них закрывало лишь часть моих потребностей

Wealth‑Lab — интерфейс ощущается как Windows‑программа начала нулевых

StrategyQuant X — у них всё сводится к тому, что AI слопит стратегии за пользователя. Мне хотелось описывать стратегии самому, и проверять свои идеи. У них плюс ко всему цены больно кусаются

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

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

Мне нужен был простой инструмент, в котором можно было быстро реализовать собственную идею, запустить её на исторических данных с разными параметрами, сравнить результаты и сделать выводы.

В какой‑то момент я понял, что продолжаю искать несуществующий продукт, и решил сделать такой продукт самому.

А идея, сама по себе казалось не такая сложная в реализации. Пользователь пишет код стратегии, движок гонит их по барам — код стратегии входит или не входит в позиции. Всё.

Пример стратегии

Пример стратегии

И тут появился вопрос: а как вообще исполнять код, который пишет пользователь?

Передо мной стоял выбор: использовать Roslyn, принимая связанные с этим риски безопасности, или создать собственный DSL с синтаксисом, максимально похожим на C#. Язык — это целая экосистема. Своя грамматика — самая лёгкая часть. Дальше нужен лексер, парсер, проверка типов, вменяемые сообщения об ошибках… Решил что Roslyn подходит мне лучше всего и решает все проблемы, и с помощью рефлексии забанил «опасные» пространства имен. Да, это стоило усилий — но это конечная, разовая работа, а не второй продукт на вечную поддержку.

Движок Runner-а

Движок Runner‑а

Центр движка — цикл по времени. Эксперимент может держать несколько активов, а у них разные тайминги баров и пропуски. Решение, к которому я пришёл: строю единый таймлайн — отсортированное объединение времён баров всех инструментов — и иду по нему. У каждого инструмента свой курсор, который сдвигается только тогда, когда его собственный следующий бар открывается ровно в текущий момент. Общие часы, индивидуальные стрелки.

Дальше порядок действий внутри одного тика, на каждом шаге таймлайна я:

  1. двигаю курсоры инструментов;

  2. сначала матчу отложенные ордера против нового бара

  3. потом даю стратегии подумать и разместить новые ордера;

Потом обложил тестами случаи, где движок не упадет, но вернет неожиданные результаты. Например, невозможность коду стратегии смотреть на будущее (look‑ahead), через все возможные случаи (получит цену на завтра, использовать индикаторы с параметрами на завтра…)

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

Если вы хотите протестировать стратегию так, будто у вас депозит 1 000 USDT с плечом 100×, то с точки зрения бэктеста это эквивалентно депозиту 100 000 USDT при размере позиции в 1% капитала. Результат стратегии будет тем же, если учитывать одинаковые комиссии, финансирование и правила ликвидации. Поэтому в BacktestScope нет отдельного параметра «кредитное плечо». Вместо этого стратегия явно управляет размером позиции. На мой взгляд, это делает модель проще и честнее: платформа не скрывает математику за дополнительной настройкой.

Отчет запуска стратегии

Отчет запуска стратегии

Уже сейчас пользователь может просто запустить стратегию, и проверить результат. В идеале хочу чтобы платформа видела какие‑то закономерности и выдавал итогов в виде:

Добавление RSI уменьшило количество ложных входов. При EMA Fast > 18 стратегия резко теряет прибыльность. Лучшие результаты наблюдаются только на высокой волатильности

Или

Гипотеза не подтвердилась.

Добавление RSI действительно снизило максимальную просадку, но одновременно уменьшило количество прибыльных сделок, из‑за чего итоговая доходность стала ниже. Наиболее устойчивые результаты наблюдались при EMA Fast в диапазоне 8–12.

Для дальнейшего исследования стоит проверить влияние ATR‑фильтра или изменить правила выхода

Эксперименты

Эксперименты

Пока что на разработку этого продукта я потратил всего три дня. И, если честно, пока не понимаю, стоит ли двигаться дальше.

С технической точки зрения проект кажется невероятно интересным. Это отличная возможность потыкать ML, да и в целом можно много интересного придумать в плане как быстро обрабатывать тысячи Run‑ов одновременно

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

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

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

Пока я планирую продолжать разработку продукта. Но есть несколько вопросов, на которые у меня пока нет ответов:

  • Как это монетизировать?

  • Как найти свою аудиторию?

  • И в целом, стоит ли продолжать?

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

Автор: Amangeldi

Источник

Оставить комментарий