Найти тему
Практика

Трейдинг бот. Спустя год. Неоднозначность при выборе модели

Оглавление

В этой статье я опишу свой шаблон исследования для селекции моделей, а также подниму вопрос неоднозначности замеров, ответа у меня на него нет, пока....

Экспериментирую с набором данных добавляю убираю разные атрибуты. В моём случае это разные индикаторы, тайм фичи или дополнительные инструмент например индекс RTSI. А получаю сильно хуже точность на валидационной выборке в сравнении с тестовой.

Пару слов о модели

Регрессия по дневным свечам прогнозирую рост на неделю вперёд. Меня интересует рост от 2%

Как выстроен пайплайн для подбора и оценки модели.

  • Грузим данные (с мосбиржи)
  • считаем фичи(индикаторы)
  • готовим обучающую выборку, тестовую выборку и валидационную

Валидационная - данные за 2 последних месяца модель при обучении их не видит.

Трейн и тест выборки - классическая sklearn train_test_split

  • Обучаем модель
  • Замеры на тестовых данных
  • Замеряем точность (я использую встроенный Score + mse)
score: 0.5616976879261406 mse: 0.024174698
  • Далее строю график где по одной оси прогноз а по другой факт. Визуализация невязок. Тут можно почитать И вот тут хорошо описано про метрики регрессии.
-2

  • Подбираю границу срабатывания (тк у меня регрессия и есть целевой показатель) при каком пороговом значении доход максимальный. У меня примерно в районе 0.02
  • Считаю экономику примерные показатели выгоды если все сигналы модели отработать. Точнее баланс сумма дохода на вложенную 1000р - сумма убытка с той-же вложенной суммы (без вычета комиссии брокера за транзакцию)
-3
  • Замеры на валидационной выборке
  • Также график, назову график невязки (но я не уверен что его так правильно называть)
-4
  • Подбор границы
-5
  • Экономика
-6
-7
  • Также, строю прогнозные точки входа на реальных данных (валидационных)
-8

Итак проблема

На тестовых данных всё очень хорошо, но на валидации сильно хуже. Я понимаю что на валидации - должно быть хуже по точности. Но получается сильно хуже.

Ну и график невязки на валидации совершенно не той формы. Он вытянут вдоль оси x=0 а должен быть вдоль y=x.

Слева тестовая выборка, справа валидационная
Слева тестовая выборка, справа валидационная

Здесь у меня пока ответа на вопрос нет. Есть гипотеза. Рынок сильно изменился за 2 последних месяца. (Косвенное подтверждение - если обучать на интервале 4 года в прошлое и на 1 год, во 2м случае точность выше )

Проблема выбора #2

С одной стороны модель хорошая (score ~0.6) на тестовых данных, но плохая на валидации финмодели (баланс маленький), с другой - модель с более низкой точностью на тесте но на валидации финмодели в плюс. Моё решение Тут я выбираю модель где фин модель на валидации лучше.

PS

Если вы знаете что не так или подходы как улучшить показатели - велком в комменты буду очень благодарен. Ну или у Вас есть что добавить. Или разнести в щепки мой подход - прочитаю внимательно. Если понравились материалы помните про лайки, они помогают продвигать канал, а также мотивируют автора на новые исследования и публикации.