Стратегии
Предоставление ликвидности пробными заявками для покупки по выгодной цене после шоков вынужденных продаж: ступенчатые заявки мейкера ниже цены закрытия часа снижения с высоким объёмом, падение за который составляет не менее 3 сигма, выход через 12 ч (OKX USDT бессрочных контрактов ADA/DOGE/AVAX/DOT, 1H, только длинные позиции)
Итог: Отменено
OkxForcedSellingSteppedMakerBids
Сводка по итогам
Стратегия выставляла ступенчатые лимитные заявки маркет-мейкера после необычно сильных падений с высоким объёмом. В ходе теста в среде закрылось 294 позиций со средней доходностью -0.378% на позицию. QA выявил два несоответствия, связанных со стопом, поэтому проверка не пройдена, а запуск остановлен до полного бэктеста и оптимизации.
Гипотеза
verification_loop: проверка не пройдена (слой 4 — проверка QA) [класс=hypothesis_mismatch]: - [edge_concern] В среде было зарегистрировано 294 закрытых позиций со средней доходностью -0.378% на позицию. Полный бэктест должен оценить, покрывают ли отскоки торговые издержки; этот результат не определяет вердикт о корректности. - [критично] В гипотезе задан стоп на уровне 3 сигм, но в фиксированной конфигурации используется 4.0. Это меняет и порог выхода, и размер позиции, рассчитанный исходя из риска. (строка 123) — исправление: задать фиксированный параметр stop_sigma равным 3.0 и последовательно использовать его при расчёте размера позиции и выходах. - [критично] Код проверяет, пробил ли часовой минимум уровень стопа, только после закрытия бара, а затем отправляет рыночную заявку на выход. Следовательно, заявленный стоп не срабатывает на уровне пробоя. (строка 124) — исправление: при исполнении заявки на покупку выставлять стоп-рыночный ордер только на сокращение позиции и отменять его перед выходом по времени.
Реализация
Длинные позиции с предоставлением ликвидности по OKX USDT бессрочным контрактам (ADA — основной, DOGE/AVAX/DOT — дополнительные инструменты, 1H). По каждому инструменту сигнал срабатывает отдельно, когда часовая логарифмическая доходность <= -shock_k, умноженного на сигму за последние 720 часов, а объём >= 3x, умноженного на медиану объёма за последние 168 часов. Затем в течение 3 баров выставляется ступенчатая лестница лимитных заявок маркет-мейкера post-only: цена закрытия триггерного бара x exp(-1.0*сигма*depth_scale), затем x exp(-0.5*сигма*depth_scale), затем цена закрытия триггерного бара. Каждая неисполненная заявка отменяется и повышается; после шага 3 событие пропускается, за ценой не гонятся. Выход — рыночной заявкой через hold_bars часов или по стопу в 4 сигм. Риск — 1% на событие, лимит номинала — 25% на инструмент и 60% суммарно; период ожидания — 24ч на инструмент.
Результаты верификации
Проверка не пройдена (слой 4 — проверка QA) [класс=hypothesis_mismatch]: - [edge_concern] В среде было зарегистрировано 294 закрытых позиций со средней доходностью -0.378% на позицию. Полный бэктест должен оценить, покрывают ли отскоки торговые издержки; этот результат не определяет вердикт о корректности. - [критично] В гипотезе задан стоп на уровне 3 сигм, но в фиксированной конфигурации используется 4.0. Это меняет и порог выхода, и размер позиции, рассчитанный исходя из риска. (строка 123) — исправление: задать фиксированный параметр stop_sigma равным 3.0 и последовательно использовать его при расчёте размера позиции и выходах. - [критично] Код проверяет, пробил ли часовой минимум уровень стопа, только после закрытия бара, а затем отправляет рыночную заявку на выход. Следовательно, заявленный стоп не срабатывает на уровне пробоя. (строка 124) — исправление: при исполнении заявки на покупку выставлять стоп-рыночный ордер только на сокращение позиции и отменять его перед выходом по времени.
История итераций
sandbox_timeout: проверка не пройдена (слой 3 — бэктест в среде): проверка работоспособности превысила лимит в 300с по настенным часам на окне примерно в 20000 баров (833 дней по ADAUSDT.OKX-1-HOUR-LAST-EXTERNAL). Обычно это означает, что работа на каждом баре растёт вместе с длиной истории: например, полный повторный просмотр ряда ставок финансирования/дополнительных данных или создание списка и вызов min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Предварительно вычислите отсортированные массивы временных меток ONCE в __init__ и используйте bisect либо кэшируйте поисковые результаты по временной метке, чтобы затраты на бар составляли O(log n), а не O(n).
Сводка по итогам
Привести стоп в соответствие с гипотезой и выставлять ордер при исполнении заявки на покупку.
После двух итераций проверка слоя 4 QA провалена: настроенный стоп составлял 4 сигмы вместо предложенных 3 сигм, а код отправлял рыночную заявку на выход только после того, как бар пересекал стоп. До следующих этапов дело не дошло.
Стратегия пыталась покупать на шоках принудительных продаж по четырём бессрочным контрактам OKX USDT, используя ступенчатые лимитные заявки маркет-мейкера.
В среде было зарегистрировано 294 закрытых позиций со средней доходностью -0.378% на позицию. Полного бэктеста или отчёта об оптимизации нет.
Причина отказа
verification_loop: проверка не пройдена (слой 4 — проверка QA) [класс=hypothesis_mismatch]: - [edge_concern] В среде было зарегистрировано 294 закрытых позиций со средней доходностью -0.378% на позицию. Полный бэктест должен оценить, покрывают ли отскоки торговые издержки; этот результат не определяет вердикт о корректности. - [критично] В гипотезе задан стоп на уровне 3 сигм, но в фиксированной конфигурации используется 4.0. Это меняет и порог выхода, и размер позиции, рассчитанный исходя из риска. (строка 123) — исправление: задать фиксированный параметр stop_sigma равным 3.0 и последовательно использовать его при расчёте размера позиции и выходах. - [критично] Код проверяет, пробил ли часовой минимум уровень стопа, только после закрытия бара, а затем отправляет рыночную заявку на выход. Следовательно, заявленный стоп не срабатывает на уровне пробоя. (строка 124) — исправление: при исполнении заявки на покупку выставлять стоп-рыночный ордер только на сокращение позиции и отменять его перед выходом по времени.
Анализ
Высокочастотная торговая стратегия: охота за выгодной ценой
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.