Temporal Fusion Transformer для финансовых рынков

Ряды биржевых котировок рвутся на разрывах и аномалиях — привычные модели теряют точность там, где решение стоит дорого. Мы разрабатываем управляемые модели прогноза под ваш поток данных и доводим их до промышленной эксплуатации. На выходе — прогноз с интервалами и регламент, который сокращает время подготовки решений почти вдвое.
Часто задаваемые вопросы

Почему прогнозирование временных рядов ломается на реальных данных

Прогноз на исторических данных сходится почти идеально, а на живом потоке расходится в первые же недели. Причина обычно не в архитектуре модели, а в природе самих данных: нестационарность ряда означает, что распределение доходностей и связи между признаками дрейфуют. Модель, обученная на спокойном тренде, переносит свои допущения в период высокой волатильности и систематически ошибается именно на разворотах.

Вторая по частоте причина — утечка будущих данных в обучающую выборку. Нормировка по всей истории, лаги, посчитанные с заглядыванием вперёд, отбор признаков на полном наборе, склейка меток времени из разных часовых поясов — всё это даёт красивые метрики на отложенной выборке и полную бесполезность в работе. Ловится такая утечка только строгой временной разбивкой и проверкой, что на момент каждого прогноза признак был действительно доступен.

Качество признаков решает больше, чем выбор модели. Макропоказатели выходят с задержкой и пересматриваются задним числом, корпоративные события и новостной фон приходят нерегулярно, у источников своя частота и свои пропуски. Если ряды не выровнены по времени и не помечено, что было известно на момент прогноза, даже аккуратная архитектура вроде Temporal Fusion Transformer начинает подгоняться под шум вместо сигнала.

Смена рыночного режима, утечка и запаздывающие признаки дают один результат: правдоподобная проверка на истории и убыточный прогноз в реальности. Разбираем, как это закрывается — от разметки временных окон и отбора признаков до контроля дрейфа в эксплуатации.

Что даёт управляемая модель прогноза: точность и интервалы

Точность прогноза на длинном горизонте проседает не из-за нехватки данных, а потому что модель не разделяет краткосрочный шум и медленные режимы рынка. Temporal Fusion Transformer решает это явно: механизм внимания выбирает, на какие участки истории опираться для каждого шага горизонта, а гейты отсекают признаки, которые на этом шаге перестают работать. Ошибка прогноза на дальних точках горизонта снижается заметнее, чем на ближних, — именно там классические подходы разваливаются быстрее всего.

Вторая часть эффекта — интервальная оценка вместо одной цифры. Модель, обученная на квантильных потерях, отдаёт не точечное значение, а диапазон: осторожный сценарий, медиану и оптимистичный. Планирование начинает опираться на ширину интервала, а не на «магическое» число, и заказчик видит, где прогноз уверенный, а где модель честно говорит о неопределённости. Это напрямую меняет горизонт планирования: решения, которые раньше принимали на два шага вперёд, становятся обоснованными на шесть-восемь.

Устойчивость модели к аномальным дням — отдельная метрика. Праздники, технические сбои и выбросы на истории обычно раздувают ошибку, и прогноз приходится отбрасывать. Здесь квантильная функция потерь и разделение признаков на статические и динамические дают меньший разброс ошибки на «грязных» днях без ручной чистки каждого ряда.

Ручные пересчёты уходят вместе с этим. Раньше аналитик сверял прогноз с фактом и правил цифру вручную; теперь пересчёт идёт по расписанию, а вмешательство нужно только тогда, когда факт вышел за границы интервала. Ошибка прогноза, ширина интервала и доля выходов за его пределы попадают в отчёт как измеримые величины — по ним видно, деградирует модель или держит точность.

Временные ряды финансовых рынков: сравнение подходов к прогнозу

Выбор подхода определяется тремя свойствами ряда: горизонтом прогноза, объёмом доступной истории и тем, насколько часто меняется режим рынка. Устойчивая сезонность на коротком горизонте закрывается классической статистикой, а разнородные сигналы — цены, объёмы, макро-показатели, календарь событий — требуют модели, которая сама взвешивает их вклад.

Ключевая разница между семействами — как они работают с памятью. Статистические модели описывают ряд формулой: они надёжны на малых выборках и хорошо экстраполируют тренд, но не переносят смену режима. Модели с вниманием сами выбирают, на какие участки истории смотреть, поэтому тянут длинные зависимости и мультигоризонтный прогноз — но требуют на порядок больше данных и аккуратной регуляризации.

Подход Когда подходит Где упирается в ограничения
Статистические модели (ARIMA, ETS, GARCH) Короткий горизонт, стабильная сезонность, мало истории Не держат нелинейность и режимные сдвиги, внешние признаки подключаются слабо
Градиентный бустинг на лагах Много признаков, внутридневные сигналы, табличные данные Не видит длинных зависимостей и порядка во времени
Рекуррентные сети Последовательности средней длины, одна-две переменные Затухающая память, чувствительность к структурным сдвигам
Модели с вниманием Разнородные ряды, несколько горизонтов, кросс-активы Нужен большой объём истории, риск переобучения на шуме
Гибрид: статистика + внимание Ряд с трендом и редкими всплесками Сложнее поддерживать и воспроизводить базовую линию

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

Как строится внедрение: аудит, обучение, приёмка

Прогнозная модель — это не одно обучение на истории, а последовательность, где каждый шаг опирается на предыдущий. Если признак в реальном времени недоступен, точность на тесте окажется фикцией. Поэтому ведём работу в семь этапов.

  1. Аудит исторических данных: полнота, пропуски, смена режимов рынка, корпоративные события. Проверяем, что каждый признак был известен на момент прогноза, а не дописан задним числом.
  2. Схема признаков: какие ряды, лаги и календарные факторы входят в модель, для каких горизонтов и с какой гранулярностью считаем прогноз.
  3. Разделение выборки: обучающая часть — прошлое, проверочная — отложенный период, которого модель не видела. Перемешивание по времени не допускаем.
  4. Обучение модели: Temporal Fusion Transformer с квантильными потерями — на выходе не только точечный прогноз, но и интервал неопределённости.
  5. Проверка на отложенном периоде: метрики по каждому горизонту, сравнение с базовыми моделями и разбор случаев с максимальной ошибкой.
  6. Приёмка решения: фиксируем достигнутые метрики, пороги деградации, регламент переобучения и порядок действий при сбое.
  7. Передача в эксплуатацию: расчёт прогноза на новых данных, сверка прогноза с фактом, документация и обучение вашей команды.

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

Что передаём на руки: конфигурации, схемы, регламенты

Проект по прогнозированию временных рядов считаем сданным не тогда, когда модель показывает качество на отложенном периоде, а когда ваша команда может запустить её, обновить и объяснить её поведение без нас. Поэтому передача — это не отчёт, а пакет артефактов, каждый из которых закрывает конкретный риск эксплуатации.

  • Конфигурация модели — архитектура, гиперпараметры, окно обучения, фиксированные зёрна генератора: обучение воспроизводится на той же истории и даёт тот же результат.
  • Паспорт признаков — по каждому входу источник, окно, задержка появления, обработка пропусков и выбросов, допустимый сдвиг распределения.
  • Схема потоков данных — путь от источников до витрин, точки контроля качества, зоны ответственности и поведение при недоступности источника.
  • Правила доступа — роли, сервисные учётные записи, разделение сред; расчёт прогнозов не имеет прав менять обучающие данные.
  • Регламент мониторинга — метрики качества и стабильности, пороги срабатывания, порядок уведомлений и разбора отклонений.
  • Регламент переобучения — расписание и триггеры, порядок выбора версии, проверка на исторических периодах, откат на предыдущую версию.
  • Регламент действий при сбое — падение качества, сдвиг входных данных, пропажа источника: точки остановки расчёта и порядок восстановления.

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

Кейс: как выросла точность прогноза на биржевых данных

Команда заказчика собирала прогноз по биржевым данным из нескольких источников: котировки, объёмы торгов, макроэкономические публикации, календарь событий. Под каждый горизонт была своя модель, а разрывы и выбросы закрывались ручными допущениями аналитиков — при их пересмотре история прогнозов менялась задним числом, и сравнить две версии было нечем.

Мы свели это в единый контур: одна модель вместо набора точечных прогнозов, явное разделение признаков по группам и проверка качества входных данных до расчёта. Ядром стала Temporal Fusion Transformer: архитектура сама взвешивает вклад признаков и отдаёт не только точку, но и границы интервала — прогноз читается как диапазон с уровнем доверия, а не как число, которое нельзя проверить.

Метрики до и после

Что измеряли До После
Ошибка на дневном горизонте выше базовой на 12–18% ниже базовой на 9%
Покрытие интервала не считалось 90% интервалов накрывают факт
Подготовка прогноза 2 дня ручной сборки 40 минут по регламенту
Восстановление после сбоя данных до недели вручную за ночь автоматически

Не менее важная часть — регламент обновления. Переобучение идёт по расписанию на скользящем окне, дрейф признаков проверяется до выпуска, а версия модели связана с версией данных, поэтому любую выгрузку можно воспроизвести. Если новая версия на контрольном периоде проигрывает предыдущей, выпуск блокируется и остаётся рабочая сборка — прогноз не деградирует молча.

Чем Temporal Fusion Transformer отличается от классических моделей?

Классические модели — ARIMA, экспоненциальное сглаживание, бустинг на лагах — дают точечный прогноз и исходят из однородного ряда. Внешние факторы заводятся вручную сконструированными признаками, и на разнородных данных качество держится на подборе лагов, который трудно объяснить.

Модель с механизмом внимания устроена иначе: вход делится на три группы — статические характеристики объекта, признаки, известные заранее на всём горизонте, и наблюдаемые только в прошлом. Внимание само решает, на какие моменты времени и на какие признаки опираться в каждой точке, поэтому разнородные данные попадают в одну модель без сведения к общему виду.

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

Второе отличие — интервальный прогноз. На выходе не одно число, а набор квантилей, поэтому решение принимается по распределению: насколько широк разброс и как часто факт выходит за границы. Там, где нужен запас прочности, а не точное попадание, это меняет постановку задачи целиком.

Плата за это — сложность модели: обучение дольше, результат чувствителен к объёму истории и качеству разметки событий, а подбор параметров требует отдельной валидации по временным срезам. На коротких рядах или при двух-трёх признаках выигрыш не окупается — там остаётся бустинг на лагах.

Поэтому сравнивать подходы имеет смысл на конкретной структуре данных и требованиях к прогнозу, а не по названию архитектуры.

Ограничения и частые сомнения по модели прогноза

Прогнозирование временных рядов не заканчивается обучением модели: за пределами исторического участка результат зависит от подготовки данных и контроля. Ниже — сомнения, которые поднимают до старта, и как мы их закрываем.

Сколько истории нужно модели?

Нужен ряд, покрывающий полный рыночный цикл — рост, коррекцию и боковик. На однородном участке модель запоминает режим, а не зависимость, поэтому при короткой истории мы сужаем горизонт прогноза.

Что делать с пропусками?

Средним пропуски не заполняем — это искажает волатильность. Для каждого ряда выбираем правило: календарное выравнивание, интерполяция с ограничением по длине разрыва или признак «данных нет» как отдельный сигнал.

Как защищаются данные?

Обучение идёт на вашем контуре: выгрузки не покидают инфраструктуру, доступ разграничен по ролям. Внешние источники подключаем обезличенно — модель видит агрегаты и производные признаки, а не исходные записи.

Что при развороте рынка?

На смене режима деградирует любая модель — это ограничение подхода, а не дефект реализации. Следим за ошибкой и дрейфом распределений: при выходе за пороги прогноз переводится в осторожный режим и идёт переобучение.

Что входит в сопровождение?

Передаём воспроизводимый контур обучения, регламент переобучения и панель контроля качества. Дальше — плановое обновление модели, разбор сигналов и корректировка признаков при изменении данных.

Обсудим задачу: подберём конфигурацию под ваш поток данных

Для предметного разговора не нужно готовое ТЗ. Достаточно выгрузки ряда с фактическими значениями, календаря событий, влияющих на поведение, и описания частоты, горизонта прогноза и допустимой задержки реакции. Если сохранился журнал прошлых моделей с их ошибками — присылайте, он экономит нам круг гипотез.

Разбор данных идёт раньше любых обещаний по качеству. Смотрим распределение, пропуски, смену режимов и то, отделяется ли сигнал от шума на вашем горизонте. Подбор решения после этого — вопрос обоснования, а не вкуса.

По итогу разбора возвращаемся с конкретикой:

  • разбор данных: частота, пропуски, аномалии, смена режимов рынка;
  • подбор решения: от базовых моделей до ансамбля с Temporal Fusion Transformer — с обоснованием, почему именно этот класс;
  • схема валидации: скользящее окно, отложенный период, метрика под вашу задачу;
  • оценка и план работ: этапы, состав команды, точки контроля качества;
  • порядок сотрудничества: роли, доступы к данным, формат отчётности и приёмки;
  • границы применимости: на каком горизонте модель надёжна, а где нужен ручной контроль.

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

Направления AI-разработки

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139