Предыдущее: От эвристики к трансформеру
Всего 2 лайка за прошлый пост. Но с учётом того, что один от А.Г., можно продолжить ). Ключевые понятия в предыдущей статье. Там же результаты моей эвристики на VWAP-индикаторе. Сегодня о провале, которым закончился мой эксперимент с обучением трансформера, написанного на языке Python (Пайсон если по английски). Поясню. Трансформер — это архитектура (класс моделей) глубоких нейронных сетей, предназначенный для обработки последовательностей данных (текста, звука, видео). Буквально это значит: «трансформер» — как «двигатель внутреннего сгорания», а «модель» — как «конкретный экземпляр ДВС с конкретными настройками». Обучаются веса конкретного экземпляра, а не «архитектура вообще».
2.1. Что трансформер НЕ умеет
❌ Не предсказывает цену. Рынок нестационарен: одни правила работают в 2020-м, другие в 2024-м.
❌ Не даёт гарантии прибыли. Ни одна архитектура не даёт. Кто обещает — продаёт :-).
❌ Не заменяет правила безопасности: стопы, размер позиции, лимиты риска.
2.2. Где трансформер реально полезен
Классификация направления — не «цена будет 105», а «в следующие 5 баров движение вверх/вниз/боком» с вероятностью. Это мягче, чем регрессия, и лучше калибруется.
Скоринг входов — модель считает вероятность, а торговую логику (когда входить, объём, стоп) делает обычный код (или трейдер). Сам трансформер, это — датчик сигнала, а не трейдер.
Поиск контекста — внимание умеет улавливать, что «свежий всплеск объёма после долгого затишья» значит больше, чем просто цена.
Детекция аномалий — учимся на «нормальном» рынке, ловим отклонения (сбои, выносы).
Извлечение фич — представления из трансформера можно подавать в классическую модель (градиентный бустинг) вместо ручных индикаторов. Градиентный бустинг — модель на деревьях решений
Зачем это вместо ручных индикаторов
Ручные индикаторы |
Представления трансформера |
Ограничены фантазией разработчика |
Ищутся автоматически из данных |
Ловят известные закономерности |
Могут поймать скрытые, неочевидные паттерны |
Просты и интерпретируемы (плюс) |
Чёрный ящик на первом этапе |
Быстро считаются |
Требуют обучения и данных |
2.3. Правильная схема применения
данные → фичи → трансформер (вероятность направления)
↓
торговое правило (порог, фильтр времени, объём)
↓
риск-менеджмент (стоп, размер позиции)
Модель трансформера не торгует сама — она подсказывает, а решение принимает простая прозрачная логика. Так её легче отлаживать и легче понять, где именно она ошибается.
Скрипт prototype_transformer.py, честный walk-forward: обучение на прошлых кварталах, калибровка порога на предыдущем квартале, тест на будущих кварталах (15 кварталов вне выборки).
Инструмент Si, M10, сумма P&L за 15 кварталов (1 лот, без комиссий):
Метод |
Сумма, ₽ |
Сделки |
Прибыльных кварталов |
Трансформер (A) |
−45 011 |
160 |
4/15 |
Эвристика P128R2 |
+46 059 |
1211 |
11/15 |
Эвристика P128R5 |
+55 531 |
487 |
13/15 |
На MX трансформер был в плюсе, но всё равно слабее эвристики: +170 тыс. против +257 тыс.
Урок №1: у простой эвристики меньше свободы — ей нечем переобучаться, ей не на чем «вырождаться». Это не слабость, это её сила.
Урок №2: перед любой сложной моделью обязательно нужен простой бейзлайн (примитивная модель-эвристика). Если трансформер не бьёт эвристику — он не готов в бой.
А что Вы конкретно подаете на вход трансформера? Числа какие-то, текст или крестики?