Движок
Один код стратегий работает в бэктесте, в песочнице брокера и в боевом режиме, который включается только явным подтверждением в конфиге.
- Динамический universe: топ-30 бумаг MOEX по обороту, пересчитывается по запросу.
- Портфельный бэктест на нескольких инструментах с общим кэшем и лимитом на заявку.
- Риск: стоп-лосс и тейк-профит, ограничения позиции — одинаково в бэктесте и live.
- Реестр стратегий: 24 стратегии (пробои Дончиана, MACD, RSI, VWAP, режимные и двусторонние) и ансамбли.
- Кеш свечей в gob или SQLite: повторные прогоны за годы данных идут без запросов к API.
- Отчёты: сравнение всех стратегий, grid search, сортировка по годовой доходности, CSV и JSON.
Как проверяется стратегия
Подобрать параметры, которые красиво выглядят на истории, легко. Поэтому стратегия проходит только если держит планку и на данных, которых не видела.
Подбор
Сетка параметров и риск-настроек на обучающем окне.
Проверка
Лучшие параметры прогоняются на следующем, невиданном окне.
Сдвиг окна
Окна сдвигаются по всей истории, на каждом — заново подбор и проверка.
Планка
IS ≥ 30% и OOS ≥ 20% годовых одновременно, при достаточном числе сделок.
Поиск оркестрируется PowerShell-скриптами и сводится Go-утилитами: только для внутридневных интервалов сделано 27 итераций поиска.
Результаты
Walk-forward с переоптимизацией, дневные свечи, топ-N бумаг. Годовая доходность на обучающих (IS) и проверочных (OOS) окнах.
| Период | Стратегия | IS | OOS | Планка |
|---|---|---|---|---|
| 2 года | donchian_volume, top 10 | 22.3% | 25.0% | нет, 1 окно |
| 2 года | donchian_volume, top 15 | 36.8% | −1.4% | нет |
| 3 года | donchian_volume, top 18 | 37.9% | −1.0% | нет |
| 3 года | donchian_ma, top 18 | 11.8% | 8.0% | нет |
| 2 года, 1 час | donchian_volume, top 10 | 3.9% | 9.1% | нет |
Вывод: планку не прошла ни одна комбинация (0 из 16 на трёх годах, 0 из 38 в отдельном поиске OOS ≥ 20%). Лучшие результаты на истории не повторяются на новых данных, а внутридневные интервалы не лучше дневного. В бою стратегия не включена; следующий шаг — paper trading в песочнице.
Стек
- Язык
- Go 1.25, около 13 тыс. строк своего кода, 38 файлов тестов
- Брокер
- Tinkoff Invest API через официальный Go SDK (gRPC)
- Данные
- Кеш свечей в SQLite или gob
- Режимы
- Бэктест, песочница, боевой с явным подтверждением
- Исследование
- Grid search, walk-forward reoptimize, PowerShell-оркестрация
- Секреты
- Токен только в переменной окружения или локальном конфиге вне git