Как я построил гибрид Transformer + BiLSTM для предсказания Bitcoin, исправил три критических бага и получил 54.9% точности. Читайте инженерную историю.
В январе 2026 года я задался простым вопросом: сможет ли Transformer, обученный на технических индикаторах, предсказывать направление Bitcoin лучше, чем подбрасывание монетки? К июню система обработала более 87 000 поколений обучения, пережила три серьёзных архитектурных бага и научила меня машинному обучению больше, чем любой курс. Это не пост «как разбогатеть с помощью AI». Это инженерная история.
Система использует гибридную архитектуру Transformer + BiLSTM.
6 блоков, 8 голов внимания. Та же архитектура, что лежит в основе GPT и BERT, адаптированная для финансовых временных рядов. Механизм самовнимания захватывает краткосрочные паттерны между различными техническими индикаторами.
Двунаправленный LSTM с двумя слоями. Обрабатывает долгосрочные зависимости, которые Transformer может упустить — например, смену режима рынка, разворачивающуюся часами или днями.
Объединяет представления обеих ветвей перед передачей в головы предсказания.
По одной на каждый временной горизонт — от 5 секунд до 1 дня. Каждая голова имеет разную глубину и регуляризацию, отражающую уровень шума на своём горизонте.
Вся сеть написана вручную на PyTorch. Никакого AutoML. Никаких сторонних торговых библиотек. Каждый тензор, каждый градиент, каждая функция потерь — реализованы с нуля.
Большинство систем предсказания криптовалют показывают результаты бэктестов. Бэктесты лгут. Я построил конвейер верификации, который штампует временем каждое предсказание. Когда целевой горизонт истекает, система сравнивает предсказание с реальной ценой Binance и записывает результат. Никакого выбора удачных сделок. Никаких удалённых трейдов. Панель аудита публична.
Эта приверженность прозрачности стала ключевой ценностью проекта. Но она же выявила баг, который чуть не заставил меня бросить всё.
Я получал 96% точности на 5-минутных предсказаниях. Я праздновал. Затем я посмотрел на сырые данные:
[0, 0, 0, 0, 0, 0, 0, 0, ... 300 нулей подряд ...]
[1, 1, 1, 1, 1, 1, 1, 1, ... 200 единиц подряд ...]
Ни одна модель не даёт таких результатов. Проблема была во временной зависимости: я записывал «сделку» каждые 2 секунды, а затем проверял все ~900 снимков на одно и то же рыночное событие. Модель не предсказывала направление цены — она просто отражала, вырос рынок или упал в этом окне.
Я исправил это статистической подвыборкой:
_FATOR_SUBSAMPLE = {
5: 1, # 5с: запись каждого тика
60: 5, # 1мин: запись каждого 5-го тика
300: 25, # 5мин: запись каждого 25-го тика
1800: 150, # 30мин: запись каждого 150-го тика (5 мин)
3600: 300, # 1ч: запись каждого 300-го тика (10 мин)
}
Точность упала с 96% до ~52%. Было больно. Но теперь каждая сделка в истории представляет собой независимое решение модели.
Если вы предсказываете горизонт в 1 час, вы должны получить награду только через 1 час — не секундой раньше. Но моя ранняя реализация позволяла информации о будущей цене просачиваться в обучающий сигнал.
Исправлением стал буфер отложенной награды. Каждое предсказание сохраняется с меткой времени. Награда вычисляется и применяется только тогда, когда целевой горизонт действительно истекает. Модель никогда не видит будущего во время обучения.
Несколько недель мой Transformer и LSTM на самом деле не обучались. Градиент от функции потерь останавливался на головах предсказания — он никогда не доходил до основной сети. Мне пришлось пересчитывать полный прямой проход во время вычисления градиента, чтобы сигнал ошибки распространялся через всю сеть. Вентиляторы моего компьютера сразу зашумели громче. Основная сеть наконец начала учиться.
После исправления этих багов и обучения на 365 днях данных Binance с GPU T4:
Эти цифры никого не сделают богатым за одну ночь. Но они реальны. И на рынке, перенасыщенном ложными заявлениями о производительности, реальные метрики — это преимущество.
Создание этой системы научило меня трём вещам, которым не учат на курсах:
Если вы строите собственную торговую систему: начните с конвейера верификации. Не верьте бэктестам. Добавьте отложенные награды. Проверьте, доходят ли градиенты до всех слоёв. И помните: 55% реальной точности стоят больше, чем 96% на подтасованных данных.
Ссылки:
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →