Стратегии
BTC Разворот переполненности позиций: торговля против BTCUSDT.BINANCE на 1H при совместном Z-скоре открытого интереса и ставки финансирования выше ±2
Итог: Отменено
BtcPositioningCrowdednessReversalOiFundingJointZ
BTC Разворот переполненности позиций: торговля против BTCUSDT.BINANCE на 1H при совместном Z-скоре открытого интереса и ставки финансирования выше ±2
Гипотеза
verification_loop: sandbox_timeout: проверка не пройдена (уровень 3 — бэктест в песочнице): дымовой тест превысил лимит времени 300с на окне примерно в 20000 баров (833 дней по BTCUSDT.BINANCE-1-HOUR-LAST-EXTERNAL). Почти всегда это означает, что работа на каждом баре растёт вместе с историей, например повторное сканирование всего ряда ставок финансирования или дополнительных данных либо создание списка и вызов min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Заранее вычислите отсортированные массивы временных меток ONCE в __init__ и используйте bisect либо кэшируйте результаты поиска по временной метке, чтобы стоимость обработки бара была O(log n), а не O(n).
Реализация
Возврат к среднему лонг-шорт на перп-барах BTCUSDT.BINANCE USD-M с периодом 1H, основанный только на данных о позиционировании в деривативах. На каждом баре инкрементально рассчитываются скользящие z-оценки примерно за 30 дней для открытого интереса (sumOpenInterest) и ставки финансирования; если BOTH превышают +entry_z (перегруженный лонг), стратегия открывает шорт, а если BOTH ниже −entry_z (перегруженный шорт) — лонг. Выход по стопу 4%, тейк-профиту 5%, временному стопу в 48 баров или при снижении скученности до диапазона +/- exit_z. Номинальный размер позиции — 15% капитала, ограниченный так, чтобы риск по стоп-лоссу не превышал 1.5% капитала. Ни один паттерн OHLCV не определяет вход, а при отсутствии дополнительных данных нет запасного сигнала только по цене: стратегия просто остаётся вне рынка.
Результаты верификации
sandbox_timeout: проверка не пройдена (уровень 3 — бэктест в песочнице): дымовой тест превысил лимит времени 300с на окне примерно в 20000 баров (833 дней по BTCUSDT.BINANCE-1-HOUR-LAST-EXTERNAL). Почти всегда это означает, что работа на каждом баре растёт вместе с историей, например повторное сканирование всего ряда ставок финансирования или дополнительных данных либо создание списка и вызов min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Заранее вычислите отсортированные массивы временных меток ONCE в __init__ и используйте bisect либо кэшируйте результаты поиска по временной метке, чтобы стоимость обработки бара была O(log n), а не O(n).
История итераций
Проверка не пройдена (уровень 3 — бэктест в песочнице): сделок не совершено Тип использованных баров: BTCUSDT.BINANCE-1-HOUR-LAST-EXTERNAL, обработано баров: 56856 Диагностика: should_enter() возвращал сторону 0 раз на протяжении 56852 проверенных баров — ваш ENTRY CONDITION так и не сработал. Смягчите логику входа или пороги. Убедитесь, что стратегия совершает сделки на предоставленных данных и с заданными параметрами.
Проверка не пройдена (уровень 1 — статический анализ): - Заглядывание вперёд: дополнительное наблюдение выбирается по расстоянию ABSOLUTE до временной метки бара, что возвращает наблюдение NEXT, если оно ближе предыдущего. Используйте self.supp_as_of(key) (последнее наблюдение на момент бара или раньше) либо явный фильтр `ts <= bar.ts_init` — никогда не используйте abs(). (строка None)
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.