Блог им. RomanMironov_d2b
Есть на гитхабе открытая библиотека StockSharp/AlgoTrading — 3811 готовых торговых стратегий. Скользящие, пробои, осцилляторы, Вайкофф, каналы, «машинное обучение». Всё бесплатно, бери и торгуй.
Мне стало интересно, что из этого выживает на нашем рынке с реальными издержками. И вообще я хотел сделать портфель стратегий, но нужно протестировать все, чтобы понимать. Запустить стратегии как есть нельзя — все файлы обёртки над .NET-движком StockSharp, доступа к моим данным у них нет. Поэтому 53 стратегии я портировал на Python вручную, логика входа-выхода один в один, и прогнал по 28 инструментам Мосбиржи.
Условия| Параметр | Значение |
|---|---|
| Период | 01.01.2024 — 25.06.2026 (2.5 года) |
| Инструменты | 28: 8 акций, 8 фьючерсов на них, 6 товарных, 2 валютных, 4 индексных |
| Данные | 5-минутные бары, ресемпл в 1h/4h |
| Прогонов | 1592 связки «стратегия × инструмент» |
| Издержки, акции | 0.05% на ногу |
| Издержки, фьючерсы | биржевой сбор по группе контракта + 0.45 ₽ за контракт на ногу |
| Проскальзывание | 0 |
Два уточнения сразу, иначе цифры прочитаются неверно.
Период — падающий рынок. Buy&hold отрицателен почти везде: GAZP −38.5%, ROSN −48.3%, CHMF −59.7%, по фьючерсам с контанго до −62.9%. Трендовые системы с шортом на таком отрезке выглядят лучше, чем они есть на самом деле.
Проскальзывание я не моделировал. То есть все цифры ниже — оптимистичная граница. В реальности будет хуже, и сильнее всего пострадают самые активные системы.
Что показал прогонИз 1592 прогонов до метрик дошли 1497, остальные отсеялись по числу сделок.
| Показатель | Значение |
|---|---|
| Медианная чистая доходность связки | −24.5% |
| Доля прибыльных связок | 26.6% |
| Медианный profit factor | 0.86 |
| Медианный Sharpe | −0.89 |
| Медианная просадка | −34.7% |
Три четверти связок убыточны. Само по себе это не приговор библиотеке — так выглядит любой набор шаблонов, прогнанный без отбора по всему пулу с честными комиссиями.
Положительную медиану по 28 инструментам имеют 9 стратегий из 51:
| Стратегия | ТФ | Медиана дох. | Прибыльных связок | Бьют B&H | PF |
|---|---|---|---|---|---|
| 0006 Tripple MA | 5m | +36.0% | 70.6% | 73.5% | 1.26 |
| 0019 CCI Breakout | 1h | +24.5% | 64.3% | 78.6% | 1.13 |
| 1837 BW Wise Man 2 | 4h | +20.0% | 60.7% | 67.9% | 1.23 |
| 0432 MACD DMI | 1h | +16.1% | 57.1% | 75.0% | 1.15 |
| 0001 MA CrossOver | 5m | +14.7% | 55.9% | 64.7% | 1.11 |
| 0332 Donchian + Hurst | 4h | +10.2% | 60.7% | 71.4% | 1.18 |
| 0007 Keltner Breakout | 5m | +5.4% | 58.8% | 64.7% | 1.09 |
| 0002 N-Day Breakout | 5m | +4.1% | 58.8% | 64.7% | 1.13 |
| 0005 Donchian Channel | 5m | +4.1% | 52.9% | 70.6% | 1.13 |
Прежде чем разбирать лидеров, вот срез, который объясняет результат лучше любой классификации по индикаторам. Разбил все связки на пять групп по числу сделок:
| Группа | Медиана сделок | Медиана доходности | Прибыльных |
|---|---|---|---|
| Q1 (редкие) | 59 | −4.4% | 43.9% |
| Q2 | 108 | −8.2% | 36.6% |
| Q3 | 248 | −9.5% | 41.1% |
| Q4 | 797 | −55.4% | 8.4% |
| Q5 (частые) | 2737 | −88.7% | 3.0% |
Корреляция Спирмена между числом сделок и доходностью — минус 0.64. Связь почти монотонная: чем чаще система торгует, тем надёжнее она убыточна. Из 300 самых активных связок прибыльны девять штук.
Причина не в качестве сигналов, а в комиссии. Вот разрыв между валовой и чистой доходностью по таймфреймам:
| ТФ | Медиана валовой | Медиана чистой | Разрыв |
|---|---|---|---|
| 4h | +1.7% | −5.6% | 5.5 п.п. |
| 1h | −3.9% | −10.7% | 7.4 п.п. |
| 5m | −14.2% | −29.0% | 10.5 п.п. |
| 1m | −7.7% | −45.2% | 32.9 п.п. |
На минутках комиссия съедает 33 процентных пункта — больше, чем большинство систем вообще способны заработать. Для примера из живого прогона: 0019 CCI Breakout на SBER 1h даёт валовую доходность 48.1%, чистую — 1.8%.
Теперь главноеСмотрим на топ связок по доходности:
| Стратегия | Инстр. | Сделок | PF | Чистая дох. | CAGR | MaxDD | Sharpe |
|---|---|---|---|---|---|---|---|
| 0001 MA CrossOver | GAZP | 293 | 1.77 | +278.1% | 93.6% | −16.5% | 2.75 |
| 0005 Donchian Channel | SV | 57 | 3.39 | +270.5% | 70.5% | −13.5% | 3.67 |
| 0001 MA CrossOver | NVTK | 293 | 1.64 | +260.4% | 89.1% | −16.7% | 2.84 |
| 0006 Tripple MA | GAZP_FUT | 134 | 2.12 | +235.0% | 67.0% | −28.9% | 3.48 |
| 0068 CCI Divergence | NG | 63 | 2.07 | +234.1% | 64.0% | −34.1% | 4.20 |
| 0019 CCI Breakout | NVTK_FUT | 341 | 1.45 | +191.0% | 64.3% | −17.5% | 2.11 |
CAGR под 90%, Sharpe выше 2.7, просадка 16%. Портфель по такой таблице собирается за пять минут.
А теперь тест. Берём ряд и циклически сдвигаем его по приращениям: распределение доходностей сохраняется, волатильность и её кластеризация сохраняются, а связь сигнала с будущим движением разрушается. Прогоняем ту же стратегию 200 раз на таких перемешанных рядах. То, что она «зарабатывает» там, и есть шум.
Пересортируем ту же таблицу по перевесу факта над медианой шума:
| Связка | Факт | Шум | Перевес | p |
|---|---|---|---|---|
| 0068 CCI Divergence × NG | +234.1% | +2.5% | +231.6 п.п. | 0.010 |
| 0022 ADX DI × NG | +157.1% | −62.7% | +219.7 п.п. | 0.050 |
| 0019 CCI Breakout × NVTK_FUT | +191.0% | +39.6% | +151.3 п.п. | 0.000 |
| 0019 CCI Breakout × GAZP_FUT | +168.1% | +57.7% | +110.3 п.п. | 0.000 |
| 0432 MACD DMI × NVTK_FUT | +145.9% | +68.5% | +77.3 п.п. | 0.015 |
| 0006 Tripple MA × GAZP | +226.4% | +218.4% | +8.0 п.п. | 0.230 |
| 0001 MA CrossOver × GAZP | +278.1% | +275.6% | +2.5 п.п. | 0.415 |
| 0001 MA CrossOver × ROSN_FUT | +150.5% | +149.5% | +1.0 п.п. | 0.435 |
| 0005 Donchian × SV | +270.5% | +284.3% | −13.7 п.п. | 0.630 |
| 0001 MA CrossOver × SV | +138.7% | +152.8% | −14.1 п.п. | 0.900 |
Две таблицы отсортированы практически наоборот.
Самая доходная связка всего исследования эджа не имеет. MA CrossOver на Газпроме даёт +278%, перемешанный ряд — +276%. Перевес 2.5 процентных пункта, p = 0.42. Стратегия зарабатывала не тем, что угадывала направление, а тем, что просто находилась в рынке на инструменте с большими движениями. То же самое у неё на GAZP_FUT и ROSN_FUT.
Вторая по доходности связка хуже собственного шума. Donchian на серебре: +270%, Sharpe 3.67, просадка всего 13.5% — и проигрывает перемешанному ряду 13.7 п.п.
А лучший эдж сидит там, где доходность лишь пятая по величине.
Портфель, собранный по верхним строкам таблицы доходности, состоял бы ровно из MA CrossOver и Donchian — то есть из двух систем, статистически неотличимых от случайности. Отсюда практический вывод, ради которого всё и затевалось: сортировка стратегий по доходности как инструмент отбора бесполезна.
Почему я не взял в портфель даже прошедших тестДальше начинается самое неприятное.
Вся прибыль живёт в верхних 5% сделок. Убираем их и пересчитываем:
| Связка | Как есть | Без верхних 5% | Медиана сделки |
|---|---|---|---|
| 0001 MA CrossOver × GAZP | +278.1% | −29.2% | −0.48% |
| 0019 CCI Breakout × NVTK_FUT | +191.0% | −36.0% | −0.52% |
| 0019 CCI Breakout × GAZP_FUT | +168.1% | −45.9% | −0.38% |
| 0019 CCI Breakout × SV | +130.8% | −64.6% | −0.47% |
| 0432 MACD DMI × NVTK_FUT | +145.9% | −15.7% | −0.62% |
| 0006 Tripple MA × GAZP_FUT | +235.0% | +15.9% | −0.46% |
Семь связок из восьми проверенных уходят в минус, медиана сделки отрицательна у всех восьми.
Эдж не переносится на другие инструменты. Вот главный отрезвляющий срез:
| Стратегия | Связок | Медиана | Прибыльных | Лучшая | Вторая |
|---|---|---|---|---|---|
| 0019 CCI Breakout | 28 | +24.5% | 64.3% | +191.0% | +168.1% |
| 0432 MACD DMI | 28 | +16.1% | 57.1% | +145.9% | +130.4% |
| 0068 CCI Divergence | 34 | −11.1% | 38.2% | +234.1% | +56.3% |
| 0022 ADX DI | 28 | −86.5% | 7.1% | +157.1% | +35.7% |
ADX DI на газе дал +157% и второй по величине перевес над шумом во всём исследовании. На остальных 27 инструментах его медиана — минус 86.5%, прибыльны 7% связок. Одиночный выброс, а не закономерность.
CCI Divergence — та же история. Лучший перевес над шумом во всём прогоне, а медиана по пулу −11.1%. Разрыв между газом (+234%) и следующим инструментом (+56%) — вчетверо. На акциях стабильно убыточна.
Результат затухает. У обеих лучших связок 2026 год уже в минусе:
| Связка | 2024 | 2025 | 2026 |
|---|---|---|---|
| 0019 CCI Breakout × NVTK_FUT | +80.3% | +67.4% | −3.6% |
| 0019 CCI Breakout × GAZP_FUT | +83.7% | +56.1% | −6.5% |
| 0432 MACD DMI × GAZP_FUT | +58.3% | +39.2% | +4.5% |
2026 год неполный, до 25 июня, но направление видно.
ИтогДо статуса «заслуживает дальнейшей проверки» из 3811 стратегий дошли две — CCI Breakout и MACD DMI, обе на часовом таймфрейме. Не «работают». Именно заслуживают проверки: нужен более длинный ряд с полным циклом роста и падения, сужение круга проверяемых связок и пересчёт с проскальзыванием.
Дальше планирую разобраться с каждой стратегий и попробую оптимизировать параметры.
Полный отчет pdf опубликовал в телеграмм канале.
MR Trade | Трейдинг на MOEX — пишу про бэктестинг торговых стратегий на Мосбирже.
Если кому-то интересно, могу создать общий репозиторий на гитхабе для совместной работы.
Конечно, вы все правильно говорите насчет инструментов и таймфреймов. Я сам тестировал различные стратегии в рамках другого исследования и видел, какие есть зависимости.
Этот материал в первую очередь дает возможность сузить или распланировать пайплайн по тестированию на будущее.
Очень сильно сомневаюсь, что все 4К стратегий заточены под ваш набор инструментов,
а без учета этого ваша огромная работа просто ни о чём.
Ещё и конкретный набор параметров у каждой ТС. ТФ, например, «чисто конкретный», а не любой, какой вы установили для всех (даже теоретически это глупо), а если в ТС используются фиксированные ТП и СЛ, тогда не тот инструмент или ТФ гарантированно убивают результат.
Нужно УТП.
@Роман Миронов MR Trade Респект большой за труды! Пишите еще про бэктесты, всегда интересная ниша
Были примеры успешного их тестирования?
Примеры были, да.
хорошая работа, но результаты выглядят пессимистичными… ((
там их, случайно, в формате ТС Лаба нет? чтобы не переделывать/не_переписывать всё для проверки?
Из кнопки Code выбираешь Download ZIP. Потом выбирай C# или Python.
Я всегда играл не по системе, а по наитию. На поиски системы убил не один год и с 2018 переключился на игру по тренду длиной в 5000 лет.
2. Предположение, что одна и та же система будет вывозить акции, валюты и товары почти наверное неверно.
3. Что за циклический сдвиг, я не понял.
3. Идея. Нужно понять: стратегия зарабатывает потому, что угадывает движение, или просто потому, что находится в волатильном растущем/падающем ряду?
Проверка: разрушить связь сигнала с будущим, сохранив всё остальное.
Как устроен сдвиг
Берутся приращения цены (close[i]/close[i−1]), их порядок циклически сдвигается на случайное число баров, и ряд собирается заново от исходной стартовой цены. Метки времени остаются на месте — стратегия видит тот же календарь, но другую последовательность движений.
Такая проверка не говорит, что стратегия плохая. Она говорит, что если результат не зависит от реальной последовательности событий, то нет основания ожидать его в будущем именно от этой стратегии.
Эдж вычленяется эксплуатацией каких-то стилизованных эмпирических фактов (stylized empirical facts).
Стилизованные факты служат ориентиром при построении моделей. Хорошая модель должна воспроизводить эти свойства, поскольку они отражают действительную реальность.
У вас есть примеры?
Разделение входа покажет отклонение «сигнала» от средней по времени с момента отсчета. Если по какому-то условию отклонения нет — то оно не обладает предсказательной силой.
Так что работы с анализом много, но делаете Вы ее не в том направлении
Формализовать ВА Эллиота можно.Степан Демура использует 3 новых максимума подряд= сделка. Это примитивно наивно. Но танец цены это 3-2 три шага вперед и 2 назад .
1 свеча день = РУ равен 12% от счета.СЛ= 1\2 от размаха фрактала. Защищаем минимум прибыли. Индикаторы и системы не нужны. Просто жарим в ПП правое плечо в ГиП. Смотрим мои комменты, графики с сигналами в форумах акций и др.
«Не все грибочки одинаково полезны»
Прикольное тестирование из серии:
Штирлиц напоил собаку бензином,
собака пробежала 5метров и упала,
Бензин закончился, подумал Штирлиц!