Перейти к содержимому
Все стратегии

Стратегии

SOL USD-M Внутридневная стратегия возврата к среднему VWAP, длинные и короткие позиции (бессрочный контракт BINANCE на одном инструменте, свечи 15m, сделки против отклонений MODERATE от скользящего VWAP, фильтр режима тренда OFF, частые сигналы, мало параметров)

Итог: Отменено

SolIntradayVwapReversionLS

Фильтр бэктеста: - показатели ненадёжны: Несогласованность: знак коэффициента Шарпа 0.37 расходится со знаком total_return -88.82% — коэффициент Шарпа вычисляется по ряду mtm_equity_curve, а доходность берётся из…

Гипотеза

[RESTORED 2026-07-10] Исходный текст гипотезы утрачен из-за каскадного удаления при очистке тестовой среды (тестовая среда проверки исполнения HL использовала ту же гипотезу). Стратегия открывает сделки против умеренных отклонений z-показателя от скользящего VWAP на SOL USD-M 15m; полное обоснование стратегии см. в пояснении к конфигурации эксперимента.

Гипотеза реализована напрямую: сделки против отклонений MODERATE от скользящего внутридневного VWAP на SOL USD-M 15m, длинные и короткие позиции, фильтр режима тренда OFF, мало параметров. Итерация 4 — чистый перезапуск с исправлениями только для корректности; сигнал и логика входа, прошедшие предыдущие уровни, не менялись: (1) интервал ограничения по времени теперь измеряется по временным меткам последовательных свечей (начиная с bar_seconds), а не по жёстко заданной константе в наносекундах для 15-минутных……Показать большеСвернуть

Гипотеза реализована напрямую: сделки против отклонений MODERATE от скользящего внутридневного VWAP на SOL USD-M 15m, длинные и короткие позиции, фильтр режима тренда OFF, мало параметров. Итерация 4 — чистый перезапуск с исправлениями только для корректности; сигнал и логика входа, прошедшие предыдущие уровни, не менялись: (1) интервал ограничения по времени теперь измеряется по временным меткам последовательных свечей (начиная с bar_seconds), а не по жёстко заданной константе в наносекундах для 15-минутных свечей, поэтому max_hold_bars действительно означает число свечей для любого настроенного типа; (2) удалена широкая конструкция try/except вокруг ограничения по времени: bar.ts_event и position.ts_opened гарантированно являются целыми числами, поэтому обработчик мог лишь скрыть реальную ошибку; (3) для параметров теперь объявлен _param_bounds с диапазоном ограничения stop_rr, применяемым конструктором (min(stop_rr, 0.9)), а также для остальных активных параметров, поэтому оптимизатор не выдаст лучшее значение, которое код молча переписывает. Площадка остаётся BINANCE USD-M, поскольку стратегия открывает короткие позиции; плечо остаётся 1.0, размер позиции не зависит от плеча, кроме множителя, равного единице, поэтому риска leverage_set_but_unused нет.

Отрицательное математическое ожидание на надёжной и убедительной выборке из 3313 сделок за 6 год: avg_trade_return_pct -0.0798% (ниже ZERO), profit_factor 0.68, total_return -87.1%, коэффициент Шарпа -0.40, ожидание -$26.35/сделку. Стратегия на возврат к среднему VWAP убыточна в EVERY календарный год и в EVERY режиме волатильности (спокойный -100%, обычный -40.6%, стрессовый -42.9%), поэтому предпосылка возврата к среднему измеримо отсутствует — это вывод о входе и направлении, который IS гипотезу, а не о резком……Показать большеСвернуть

Отрицательное математическое ожидание на надёжной и убедительной выборке из 3313 сделок за 6 год: avg_trade_return_pct -0.0798% (ниже ZERO), profit_factor 0.68, total_return -87.1%, коэффициент Шарпа -0.40, ожидание -$26.35/сделку. Стратегия на возврат к среднему VWAP убыточна в EVERY календарный год и в EVERY режиме волатильности (спокойный -100%, обычный -40.6%, стрессовый -42.9%), поэтому предпосылка возврата к среднему измеримо отсутствует — это вывод о входе и направлении, который IS гипотезу, а не о резком пороге параметра. Заявленное соотношение доходности к риску ~1.43 не проявляется (avg_loss 179.97 > avg_win 103.57); выявлен классический признак превышения стопа при проверке на закрытии свечи QA, теперь подтверждённый на полной истории. Комиссия составляет лишь 15.5% от валового результата, поэтому проблема не в чувствительности к комиссиям: сигнал убыточен до их вычета, а 5 настраиваемых параметров не могут изменить результат стратегии PF-0.68. Соответствует L55 (стратегия возврата отдельного инструмента, PF < 1.15, отрицательная доходность → отказаться). Опасения QA насчёт преимущества подтвердились. Не стоит тратить 2 часов на оптимизацию.

Реализация

Внутридневная стратегия VWAP на возврат к среднему для бессрочного контракта SOL USD-M, свечи 15-минутные, длинные и короткие позиции. На каждой свече вычисляется непрерывный z-показатель отклонения цены закрытия от средневзвешенной по объёму цены 32 свечей (~8h), нормированный на разброс цен закрытия вокруг этого ориентира RMS. Стратегия открывает сделки против чрезмерных отклонений (|z| > 2.2) в направлении VWAP: короткую выше и длинную ниже, но лишь когда абсолютное отклонение также превышает нижний порог комиссий 1.2%, а свободный фильтр тренда за 24h (|изменение за 24h| < 6%) указывает на колебания рынка, а не тренд. Уровни выхода рассчитываются по тому же отклонению: цель прибыли = capture_frac * отклонение при входе (capture_frac = (entry_z - exit_z)/entry_z ~ 0.86), стоп = 0.7x от этой цели (не более 1.5%), а также выход при возвращении z внутрь полосы -0.3 и ограничение по времени в 24 свечей (~6h). Размер позиции составляет 15% от капитала счёта в номинальном выражении при кредитном плече 1.

Результаты верификации

Проверьте, что FactoryStrategy использует min_bars_required() подкласса для условия прогрева; если нет, явно защитите обращение -(trend_window+1).

min_bars_required() переопределяет метод фреймворка (предупреждение статического анализа base_shadow). Здесь это сделано намеренно: прогрев увеличен до max(vwap_window, trend_window)+2 = 98 свечей, чтобы индекс ретроспективного периода trend_window -(trend_window+1) всегда был в допустимом диапазоне. Однако убедитесь, что базовый шаблон использует это переопределение для условия прогрева, а не собственное значение, иначе входы могут появиться до накопления 98 свечей.

Если заявленное соотношение доходности к риску гипотезы зависит от того, что стоп действует внутри свечи, установите его как скобочный ордер/stop_market при входе, а не как условие на закрытии свечи; иначе укажите, что фактически стоп проверяется только при закрытии свечи.

Жёсткий стоп (pnl_pct <= -stop_pct, ~0.73% от номинала) проверяется в should_exit() только при закрытии свечи. На свечах 15m одна свеча может внутри интервала пройти далеко за уровень стопа; этим объясняются largest_loss -527 против largest_win 284 и avg_loss > avg_win, несмотря на заданное соотношение доходности к риску 1.43. Для бэктеста это реалистичное поведение, а не ошибка, однако заявленная структура риска фактически не обеспечивается внутри свечи.

Результат симуляции резко отрицательный на надёжной выборке из 227 сделок за 205 дней: total_return -8.34%, коэффициент Шарпа -5.07 (CI [-7.56,-2.81]), profit_factor 0.61, avg_trade_return_pct -0.104% (ниже нуля, примерно равен комиссии за полный цикл), комиссия составляет 25.4% от валового результата, убыточны все терцили волатильности (спокойный, обычный и стрессовый режимы). Важно, что заявленная структура выплат (доходность к риску ~1.43) не проявляется: NOT avg_loss 179.9 > avg_win 118.2, то есть убытки……Показать большеСвернуть

Результат симуляции резко отрицательный на надёжной выборке из 227 сделок за 205 дней: total_return -8.34%, коэффициент Шарпа -5.07 (CI [-7.56,-2.81]), profit_factor 0.61, avg_trade_return_pct -0.104% (ниже нуля, примерно равен комиссии за полный цикл), комиссия составляет 25.4% от валового результата, убыточны все терцили волатильности (спокойный, обычный и стрессовый режимы). Важно, что заявленная структура выплат (доходность к риску ~1.43) не проявляется: NOT avg_loss 179.9 > avg_win 118.2, то есть убытки больше прибыли. Это согласуется с тем, что (а) стоп проверяется только при закрытии свечи, поэтому свечи длительностью 15m превышают рассчитанный стоп ~0.73% до его срабатывания; (б) выход при возвращении z внутрь полосы и ограничение по времени в 24 свечей закрывают большинство сделок до достижения цели ~1.04%. Поэтому стратегия на возврат к среднему VWAP не покрывает издержки на SOL 15m. Это не вывод о корректности (тестировался один неоптимизированный вариант), однако аналитику следует проверить на полной истории, превышает ли зафиксированное отклонение затраты на полный цикл ~0.10% и нужен ли внутрисвечной стоп или скобочный ордер, чтобы реализовать заявленное соотношение доходности к риску, прежде чем тратить время на оптимизацию.

Обзор бэктеста

Шарп
-0,40
Общая доходность
-87,10%
Максимальная просадка
87,17%
Всего сделок
3313
Доля прибыльных
54,2%
Профит-фактор
0,68

Корректно устроенная стратегия с частыми сигналами и большой статистически убедительной выборкой (3313 сделок за ~6 лет)

Сделки корректно реализуют гипотезу (отклонения от скользящего VWAP, сбалансированные 1638 длинных и 1675 коротких позиций), поэтому это честная проверка предпосылки возврата к среднему VWAP

Отрицательное ожидание: avg_trade_return_pct -0.0798% (BELOW ZERO, примерно равно комиссии за полный цикл ~0.10%), profit_factor 0.68, ожидание -$26.35/сделку, total_return -87.1%

Коэффициент Шарпа -0.40 (CI [-1.30, +0.45]), коэффициент Сортино -0.45, information_ratio -1.33 относительно стратегии «купи и держи»

Предпосылка опровергнута по всем пунктам: убыток в каждом календарном году (2020–2026) и при каждом режиме волатильности (все три — спокойный, обычный и стрессовый — убыточны), значит, проблема не в выборе режима или резком пороге

Перевёрнутая структура выплат: заявленное соотношение доходности к риску ~1.43 не проявляется (avg_loss 179.97 > avg_win 103.57) — убытки больше прибыли, что согласуется с превышением стопа при закрытии свечи на свечах 15m

Комиссия составляет лишь 15.48% от валового результата, поэтому дело NOT в чувствительности к комиссиям: исходный сигнал возврата убыточен до их вычета; корректировка комиссии или порога не спасёт отсутствующее преимущество

Анализ

Фильтр бэктеста: - показатели ненадёжны: Несогласованность: знак коэффициента Шарпа 0.37 расходится со знаком total_return -88.82% — коэффициент Шарпа вычисляется по ряду mtm_equity_curve, а доходность берётся из кривой капитала. Оценивайте результат по кривой капитала.

История итераций

Проверка не пройдена (уровень 4 — проверка QA): - FEE-VIABILITY FAILURE (пункт списка проверки №7): механизм возврата к среднему VWAP не покрывает затраты на полный цикл сделки. На убедительной выборке из 1660 сделок за 363 дней реализованный показатель avg_trade_return_pct составляет -0.016% — результат отрицательный после издержек и на порядок ниже затрат тейкера за полный цикл ~0.10% BINANCE USD-M и минимального уровня комиссий фьючерсов 0.15%. Оборот 297x, avg_holding 2h22m. Полоса возврата exit_z=0.3……Показать большеСвернуть

Проверка не пройдена (уровень 4 — проверка QA): - FEE-VIABILITY FAILURE (пункт списка проверки №7): механизм возврата к среднему VWAP не покрывает затраты на полный цикл сделки. На убедительной выборке из 1660 сделок за 363 дней реализованный показатель avg_trade_return_pct составляет -0.016% — результат отрицательный после издержек и на порядок ниже затрат тейкера за полный цикл ~0.10% BINANCE USD-M и минимального уровня комиссий фьючерсов 0.15%. Оборот 297x, avg_holding 2h22m. Полоса возврата exit_z=0.3 фиксирует крошечные развороты, не покрывающие комиссию, а стоп 1.5% позволяет убыткам расти, создавая соотношение доходности к риску INVERTED при доле прибыльных сделок 58%: avg_win $75.81 против avg_loss $156.52 (~2x). Результат: total_return -36.1%, PF 0.67, коэффициент Шарпа -2.19 (CI [-4.07, -0.64] полностью ниже нуля). Утверждение в обосновании, что «~0.4-0.6% разворотов покрывают полный цикл сделки», противоречит данным: быстрый выход exit_z срабатывает намного раньше. Переполненный класс стратегий возврата VWAP по отдельному инструменту (выживших нет; ср. стратегию возврата 9158 на SOL сделках VWAP с результатом -88%). - Полярность и логика сигнала CORRECT и точно реализуют гипотезу (z>entry_z → SELL; z<-entry_z → BUY; фильтр отключения тренда; выходы по стопу/TP/exit_z/ограничению времени; размер позиции относительно капитала). Указано, чтобы разработчик не искал несуществующую ошибку в коде: причина в экономике стратегии, а не в программной ошибке.

Проверка не пройдена (уровень 4 — проверка QA): - FEE/EDGE FAILURE PERSISTS (пункт списка проверки №7, L6) — исправления жизнеспособности по комиссиям в итерации -2 не NOT создали преимущество. На выборке из DECISIVE 755 сделок за 363 дней реализованный показатель avg_trade_return_pct составляет -0.064% (по-прежнему отрицательный после издержек и ниже минимального уровня фьючерсов 0.15%), total_return -21.9%, profit_factor 0.61, коэффициент Шарпа -2.45 с интервалом CI [-4.14, -0.85] ENTIRELY ниже нуля……Показать большеСвернуть

Проверка не пройдена (уровень 4 — проверка QA): - FEE/EDGE FAILURE PERSISTS (пункт списка проверки №7, L6) — исправления жизнеспособности по комиссиям в итерации -2 не NOT создали преимущество. На выборке из DECISIVE 755 сделок за 363 дней реализованный показатель avg_trade_return_pct составляет -0.064% (по-прежнему отрицательный после издержек и ниже минимального уровня фьючерсов 0.15%), total_return -21.9%, profit_factor 0.61, коэффициент Шарпа -2.45 с интервалом CI [-4.14, -0.85] ENTIRELY ниже нуля (probabilistic_sharpe 0.001). Порог min_dev_pct=0.6% снизил оборот (297x → 143x) и вдвое сократил число сделок (1660 → 755), но у стратегии возврата VWAP по одному инструменту нет направленного преимущества после издержек — это переполненный класс без единого выжившего, который, как признаёт оговорка самого разработчика, «может просто не существовать». - INVERTED REWARD:RISK IS BUILT INTO THE PARAMETERS. Цель возврата захватывает ~(entry_z-exit_z)/entry_z = (2.2-0.5)/2.2 = 0.77x начального отклонения (~0.46% при пороге 0.6%). Стоп = min(stop_mult*отклонение, stop_loss_pct) = 1.2*0.6% = 0.72%, что LARGER цели 0.46% → соотношение доходности к риску ~0.64 и доля прибыльных сделок для безубыточности ~61% против фактической 53%. Утверждение в обосновании «рискуем ~1.2x от стоимости возврата» содержит математическую ошибку: возврат стоит лишь 0.77x отклонения, поэтому stop_mult=1.2 означает риск ~1.56x от прибыли — поэтому avg_loss $159.66 всё ещё примерно 1.86x avg_win $85.70. Для выгодной структуры выплат нужно stop_mult BELOW доли захвата (~0.77), а не выше неё. - Полярность и механика сигнала CORRECT и точно реализуют гипотезу и изменения итерации -2 (z>entry_z → SELL, z<-entry_z → BUY; фильтр на min_dev_pct процентов; стоп с фиксацией отклонения; фильтр отключения тренда; последовательность выходов; размер позиции относительно капитала). Признаков ошибки в коде NO L17 (показатель win_rate 0.53, |коэффициент Шарпа| 2.45 < 5, PF 0.61). Указано, чтобы разработчик не искал несуществующую программную ошибку: причина в экономике стратегии, а не в коде.

Проверка не пройдена (уровень 4 — проверка QA): - MECHANISM HAS NO EDGE — теперь DECISIVELY с исправленной структурой выплат. В итерации 3 правильно внедрено необходимое исправление (расчёт _capture_frac, цель = capture_frac x entry_deviation, stop_rr=0.7 ограничено значением <1, min_dev_pct повышено с 0.6 до 1.2%); реализованное соотношение доходности к риску улучшилось (avg_win $121 против avg_loss $167, соотношение 1.38, выросло с 0.54 в итерации -2). Однако на выборке из DECISIVE 499 сделок стратегия всё ещё……Показать большеСвернуть

Проверка не пройдена (уровень 4 — проверка QA): - MECHANISM HAS NO EDGE — теперь DECISIVELY с исправленной структурой выплат. В итерации 3 правильно внедрено необходимое исправление (расчёт _capture_frac, цель = capture_frac x entry_deviation, stop_rr=0.7 ограничено значением <1, min_dev_pct повышено с 0.6 до 1.2%); реализованное соотношение доходности к риску улучшилось (avg_win $121 против avg_loss $167, соотношение 1.38, выросло с 0.54 в итерации -2). Однако на выборке из DECISIVE 499 сделок стратегия всё ещё явно убыточна: avg_trade_return_pct -0.089% (ниже минимального уровня 0.15%), total_return -16.2%, PF 0.63, win_rate 0.467, коэффициент Шарпа -2.69 с интервалом CI [-4.54, -1.01] ENTIRELY ниже нуля (probabilistic_sharpe 0.0011). Порог отклонения 1.2% отбирает более экстремальные движения, которые продолжаются, а не разворачиваются; доля прибыльных сделок падает до 46.7% — ниже безубыточного уровня ~58%, заданного реализованной структурой выплат. Исправление структуры выплат не создало преимущества: сигнал возврата к среднему не имеет его после вычета издержек. - Выполнено заранее зарегистрированное условие отказа OWN, заданное разработчиком. В обосновании прямо сказано: «если следующий бэктест всё ещё покажет отрицательное ожидание на сделку при выгодном соотношении доходности к риску и выборке около 150-300 сделок, это свидетельствует о самом механизме, и от стратегии следует отказаться, а не перенастраивать её». Бэктест показывает именно это: выгодное проектное соотношение доходности к риску, выборка из 499 сделок и отрицательное ожидание (-0.089%). - Код CORRECT и точно реализует исправления итерации -3 (capture_frac из entry_z/exit_z; target_pct = capture_frac * зафиксированное отклонение; stop_pct = min(stop_rr*target_pct, stop_loss_pct), stop_rr ограничено значением <=0.9; фиксация прибыли на цели; полярность, фильтр тренда, фиксация отклонения и размер позиции сохранены). Признаков ошибки в коде NO L17 (прибыльность 0.467, |коэффициент Шарпа| 2.69 < 5, PF 0.63). Указано, чтобы разработчик не искал несуществующую программную ошибку: исправление структуры выплат сработало, у механизма нет преимущества.

Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.