Я потратил 3 месяца на использование стратегии RSI/MACD с фиксированным весом на Binance. Проведено отличное тестирование, потеряны деньги в производстве. Причина: рынки меняют режимы, а статичные правила — нет. Это история о том, как я построил самонастраивающийся генератор сигналов с...
Я потратил 3 месяца на использование стратегии RSI/MACD с фиксированным весом на Binance. Проведено отличное тестирование, потеряны деньги в производстве. Причина: рынки меняют режимы, а статичные правила — нет.
Это история о том, как я создал самонастраивающийся генератор сигналов с XGBoost и байесовской оптимизацией — и почему он на самом деле работал.
Проблема с фиксированными правилами
Моя оригинальная стратегия:
Покупайте, когда RSI(14) 70.
Добавьте MACD в качестве подтверждения
Проведено бэк-тестирование 5-минутных данных BTCUSDT за 18 месяцев: коэффициент Шарпа 1,42. Выглядело великолепно. Затем я запускал его вживую в течение 3 месяцев: 0,61 Шарпа. Почему?
Потому что в некоторые месяцы RSI был правильным сигналом. В других доминировал MACD. На трендовых рынках тоже нет – тренд был сигналом. Индикатор, который «работал», менялся каждый месяц, и у меня не было возможности узнать об этом заранее.
Исправление: позвольте модели разобраться во всем
Вместо жестких правил я:
Вычисление 13 индикаторов на каждом временном шаге
Подайте их всех в классификатор XGBoost.
Используйте байесовскую оптимизацию для настройки гиперпараметров.
Переподготовка еженедельно в скользящем окне
Результат: коэффициент Шарпа 1,85, что на 30 % выше базового уровня с фиксированным весом.
Конвейер данных
импортировать ccxt
импортировать панд как pd
импортировать numpy как np
обмен = ccxt.binan