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

Стратегии

BTC Пассивное предоставление ликвидности при микродислокациях, рыночно-нейтральный возврат к среднему (один инструмент, бессрочный контракт BTCUSDT.BINANCE, сигнал от QUOTE-TICK, лимитные ордера MAKER — играть на небольших отклонениях от краткосрочной справедливой стоимости, предоставляя ликвидность PROVIDING, получать спред и прибыль от возврата к среднему, жёсткий стоп тейкера при продолжении движения, 3 параметров)

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

BtcMakerMicroDislocationLiquidityProvisionLS

BTC Пассивное предоставление ликвидности при микродислокациях, рыночно-нейтральный возврат к среднему (один инструмент, бессрочный контракт BTCUSDT.BINANCE, сигнал от QUOTE-TICK, лимитные ордера MAKER — играть на…

Гипотеза

Стратегия микроструктуры с возвратом к среднему, рыночно-нейтральная, на одном инструменте и тиках котировок MARKET-NEUTRAL — бессрочном контракте BTCUSDT.BINANCE USD-M, которая предоставляет ликвидность с помощью PASSIVE MAKER LIMIT ORDERS. Модель исполнения принципиально отличается от всех стратегий этой сессии: они используют ордера тейкера / рыночные ордера и все погибают (195x) либо находятся под структурной угрозой из-за fee_edge. Это прямой ответ на самый устойчивый режим отказа. Направленные FADING на……Показать большеСвернуть

Стратегия микроструктуры с возвратом к среднему, рыночно-нейтральная, на одном инструменте и тиках котировок MARKET-NEUTRAL — бессрочном контракте BTCUSDT.BINANCE USD-M, которая предоставляет ликвидность с помощью PASSIVE MAKER LIMIT ORDERS. Модель исполнения принципиально отличается от всех стратегий этой сессии: они используют ордера тейкера / рыночные ордера и все погибают (195x) либо находятся под структурной угрозой из-за fee_edge. Это прямой ответ на самый устойчивый режим отказа. Направленные FADING на масштабе баров в этой сессии были решительно опровергнуты (поперечный разворот −48%; VWAP/тени не работают), но это DIFFERENT, отличное от того, чем занимаются маркет-мейкеры: ММ получают прибыль от возврата к среднему при MICRO-дислокациях, потому что (а) EARN спред между ценами покупки и продажи, а не платят его и (б) платят комиссию MAKER (USD-M Binance 0.02%), а не комиссию тейкера (0.05%); поэтому пассивная сделка туда и обратно обходится примерно в 0.04% против примерно 0.10%, что губит стратегии тейкера. Это более низкий примерно на 2.5x минимальный уровень издержек — структурное преимущество, которого не было ни у одной направленной стратегии здесь. Механизм: отслеживать краткосрочную справедливую стоимость (микроцена / EMA средней цены) по тикам котировок; когда средняя цена немного отклоняется от справедливой стоимости (временная шумовая дислокация, NOT тренд), выставлять MAKER ордер LIMIT на выгодной стороне, чтобы предоставлять ликвидность по лучшей цене; если ордер исполнен, пассивно выходить по справедливой стоимости или около неё, получая прибыль от возврата к среднему PLUS спред; если цена продолжает идти против исполненной позиции дальше жёсткого порога (неблагоприятный отбор / реальное движение), немедленно закрыть её стопом тейкера. Стратегия действительно отличается от трёх уже рассматриваемых зондов микроструктуры тейкера (BTC захват ликвидности, SOL поток CVD, ETH глубина книги ордеров — все AGGRESSIVE/направленные): эта стратегия PASSIVE/с возвратом к среднему и получает преимущество за счёт комиссии. Она заполняет недостаточно представленный горизонт SHORT (9.2%), пустую рыночно-нейтральную категорию и добавляет отсутствующие в портфеле примитив quote_ticks и исполнение ордерами мейкера. Один инструмент, одна биржа (без инфраструктурной ловушки межбиржевой торговли). У BTC самый узкий спред и самая глубокая лента котировок на Binance с историей за несколько лет → очень большое измеримое число исполнений. Всего 3 параметров — попытка обойти главный риск переобучения. Добавляет стратегию к уже избыточно представленной категории BINANCE — это приемлемо, поскольку причина в глубине и узости котировок. Заранее указываю центральную оговорку (реалистичность пассивного исполнения) в факторах риска, чтобы QA мог её тщательно оценить.

Устраняет сбой Layer-3 с нулём сделок в его реальной первопричине — дело было в данных, а не в порогах: справедливая стоимость инициализировалась на ONLY внутри on_trade_tick, а аудит каталога показывает, что окно песочницы (последние ~30 дней баров длительностью 1 минут) содержит NO субсекундных данных по любому символу: trade_tick/BTCUSDT.BINANCE — это 4 файлов, все на 2026-05-06; в quote_tick/BTCUSDT.BINANCE — 2 записей (12 KB), а самый глубокий поток в каталоге (SOLUSDT.BINANCE) заканчивается 2026-07-17.……Показать большеСвернуть

Устраняет сбой Layer-3 с нулём сделок в его реальной первопричине — дело было в данных, а не в порогах: справедливая стоимость инициализировалась на ONLY внутри on_trade_tick, а аудит каталога показывает, что окно песочницы (последние ~30 дней баров длительностью 1 минут) содержит NO субсекундных данных по любому символу: trade_tick/BTCUSDT.BINANCE — это 4 файлов, все на 2026-05-06; в quote_tick/BTCUSDT.BINANCE — 2 записей (12 KB), а самый глубокий поток в каталоге (SOLUSDT.BINANCE) заканчивается 2026-07-17. Поэтому _fv оставалась None на всех 40,572 оцениваемых барах, _manage() завершалась на первой проверке, и ни одного ордера не отправлялось; никакое изменение порога не привело бы к сделке. Минимальное исправление: обновление EWMA и стоп по риску вынесены в общие для двух путей наблюдения функции _update_fv/_check_stop, а _ingest_bar_price передаёт цену закрытия бара тогда и только тогда, когда в течение tape_gap_seconds не поступал тик — там, где поток данных есть, приоритет по-прежнему у тиков, поэтому для любого окна с таким потоком поведение кода не меняется. Стоп, ранее срабатывавший только по тикам (то есть отсутствовавший в окне без потока), теперь работает при любом наблюдении, которое обновляет состояние. Значение по умолчанию fv_span_seconds изменено с 30 на 300 с, чтобы интервал имел смысл при разрешении 1 минут (~5-барный EMA); параметр по-прежнему задаётся в секундах и не зависит от частоты поступления данных. Проверено офлайн на реальных барах BTC длительностью 1 минут за последние -30 дней: медианная сигма — 3.5 б.п., диапазон упирается в комиссионный минимум 10 б.п., около 5,257 касаний котировки — теперь сделки совершаются с запасом по марже. Всё, на чём основывались Layers 1-2, осталось без изменений: импорты, одностороннее выставление котировок и имя _cur_bar_ts (исправление затенения базового _bar_ts); сигнал по-прежнему непрерывный: (last_px - fv)/sigma. Честное уточнение о границах применимости для QA добавлено также в docstring модуля: гипотеза предполагает микросправедливую цену на тиках котировок, а в каталоге вообще нет потока котировок, поэтому измеряется та же среднереверсионная стратегия мейкера с преимуществом по комиссиям, но на минутном разрешении; модель исполнения по касанию без учёта позиции в очереди делает все показатели оптимистичной верхней оценкой.

verification_loop: sandbox_timeout: Проверка не пройдена (слой 3 — бэктест в песочнице): дымовой тест превысил лимит времени 300с на окне примерно в 20000 баров (30 дней по BTCUSDT.BINANCE-1-MINUTE-LAST-EXTERNAL). Почти всегда это означает, что объём работы на бар растёт вместе с историей — например, повторное сканирование всей серии финансирования / дополнительных данных или пересоздание списка с вызовом min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Предварительно вычислите отсортированные массивы временных меток ONCE в __init__ и используйте bisect либо кэшируйте результаты поиска по временной метке, чтобы затраты на бар составляли O(log n), а не O(n).

Реализация

Рыночно-нейтральное пассивное предоставление ликвидности на бессрочном контракте BTCUSDT.BINANCE USD-M, интервал 1 минут. Поддерживает справедливую цену с затуханием во времени EWMA (fv_span_seconds) и масштаб отклонения EWMA sigma по самому свежему доступному наблюдению цены (лента сделок с субсекундной точностью, если она есть для окна, иначе цена закрытия 1-минутного бара). Когда позиция отсутствует, выставляет ровно ONE post_only MAKER лимитный ордер на стороне, которая FADES текущее отклонение (цена выше справедливой стоимости → SELL на fv+band; ниже → BUY на fv-band), где band = max(band_k*sigma, 10 б.п. цены), поэтому исполненная сделка туда и обратно должна перекрыть примерно 4 б.п. комиссии мейкера. После исполнения выставляет лимитный ордер на выход по справедливой стоимости (цель возврата к среднему) и активирует стоп тейкера только для контроля риска на уровне stop_mult*sigma за точкой входа, а также временной стоп на 30 минут. Две противоположные котировки не могут существовать одновременно, поэтому двойное исполнение при резком развороте цены конструктивно исключено.

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

sandbox_timeout: Проверка не пройдена (слой 3 — бэктест в песочнице): дымовой тест превысил лимит времени 300с на окне примерно в 20000 баров (30 дней по BTCUSDT.BINANCE-1-MINUTE-LAST-EXTERNAL). Почти всегда это означает, что объём работы на бар растёт вместе с историей — например, повторное сканирование всей серии финансирования / дополнительных данных или пересоздание списка с вызовом min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Предварительно вычислите отсортированные массивы временных меток ONCE в __init__ и используйте bisect либо кэшируйте результаты поиска по временной метке, чтобы затраты на бар составляли O(log n), а не O(n).

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

Проверка не пройдена (слой 4 — проверка QA): - SIGNAL-PRIMITIVE / TIMEFRAME MISMATCH. Гипотеза явно опирается на QUOTE-TICK (справедливая стоимость по микроцене/EMA средней цены; «добавляет примитив quote_ticks» указан как новое преимущество), однако код не подписывается на тики котировок и рассчитывает справедливую стоимость по EMA цен закрытия баров 15-MINUTE. Это вынужденный обходной путь из-за данных (в каталоге quote_tick всего 2 записей), но он существенно влияет на результат: на барах 15м «микродислокация»……Показать большеСвернуть

Проверка не пройдена (слой 4 — проверка QA): - SIGNAL-PRIMITIVE / TIMEFRAME MISMATCH. Гипотеза явно опирается на QUOTE-TICK (справедливая стоимость по микроцене/EMA средней цены; «добавляет примитив quote_ticks» указан как новое преимущество), однако код не подписывается на тики котировок и рассчитывает справедливую стоимость по EMA цен закрытия баров 15-MINUTE. Это вынужденный обходной путь из-за данных (в каталоге quote_tick всего 2 записей), но он существенно влияет на результат: на барах 15м «микродислокация» превращается в обычный возврат к среднему на масштабе бара, который сама гипотеза объявляет опровергнутым в этой сессии и отличным от микровозврата MM. Поэтому код не проверяет заявленное преимущество. - DECISIVE FEE/EDGE FLOOR FAILURE. avg_trade_return_pct -0.0056% (отрицательное значение, ниже порога), total_return -88.8%, PF 0.617, max_drawdown 89.1% на убедительной выборке из 2438 сделок за 364 дней. Собственная сетка разработчика из 48 ячеек показала отрицательный чистый результат в каждой ячейке; лучший валовой перевес составил +0.023% против 0.040% комиссии мейкера — собирать нечего, поскольку преимущества возврата к среднему нет. Модель исполнения при касании приукрашивает пассивные исполнения, поэтому в реальности результат хуже. Это не характерный дефект L17 (частота выигрышей 68% при инвертированном RR — ожидаемая форма выплаты для возврата к среднему), а просто отсутствие преимущества. - Обе двусторонние котировки (BUY @ fv-band, SELL @ fv+band) могут исполниться на одном баре 15м до того, как on_order_filled отменит другую сторону, создав оплаченную сделку мейкера туда и обратно с нулевым итогом, расходами на комиссии и завышенным оборотом (1222). - Реалистичность пассивного исполнения: движок исполняет выставленные лимитные ордера при касании без учёта позиции в очереди или неблагоприятного отбора, поэтому результаты бэктеста для мейкера — оптимистичная верхняя граница. Результат уже неудовлетворителен даже при таком оптимизме.

Проверка не пройдена (слой 3 — бэктест в песочнице): объект 'int' не вызывается Использованный тип баров: SOLUSDT.BINANCE-1-MINUTE-LAST-EXTERNAL, обработано баров: 0 Убедитесь, что стратегия создаёт сделки с заданными данными и параметрами.

Проверка не пройдена (слой 3 — бэктест в песочнице): сделки не созданы Использованный тип баров: BTCUSDT.BINANCE-1-MINUTE-LAST-EXTERNAL, обработано баров: 40576 Диагностика: should_enter() возвращала сторону 0 раз на протяжении 40572 оцениваемых баров → ваш ENTRY CONDITION так и не сработал. Ослабьте логику входа / пороги. Убедитесь, что стратегия создаёт сделки с заданными данными и параметрами.

Проверка не пройдена (слой 1.5 — согласованность гипотезы и конфигурации) [class=hypothesis_mismatch]: - config.instrument_id — SOLUSDT.BINANCE, но в гипотезе указано BTCUSDT.BINANCE, то есть другой актив. Реализуйте гипотезу в том виде, как она сформулирована (либо руководитель исследования должен её пересмотреть).

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