Temporal Fusion Transformer для многогоризонтного прогнозирования портфеля
Самая большая боль при применении глубокого обучения к управлению портфелем — проблема черного ящика. Вы обучаете нейросеть, которая показывает впечатляющие коэффициенты Шарпа на бэктестах, но когда стратегия начинает терять деньги в продакшене, вы не понимаете, почему. Какие входные признаки определили прогноз? Какие временные горизонты важны? Реагировала ли модель на макросигналы или на шум микроструктуры?
Google Research решил эту проблему напрямую с помощью Temporal Fusion Transformer (TFT) — архитектуры на основе механизма внимания, которая обеспечивает сильное многогоризонтное прогнозирование и при этом дает встроенную интерпретируемость через веса внимания и оценки важности переменных. В исходных бенчмарках TFT в среднем снизил квантильную ошибку на 7% (P50) и на 9% (P90) по сравнению со следующей по качеству моделью и превзошел сильнейший конкурирующий бейзлайн на 3-26% на тестовых наборах данных. Для количественных управляющих портфелями TFT дает редкое сочетание: модель одновременно мощную и прозрачную.
Эта статья разбирает архитектуру TFT, показывает, как применить ее к многогоризонтному прогнозированию портфеля, проходит через реализацию на Python с pytorch-forecasting и сравнивает ее с бейзлайнами на LSTM и обычном трансформере.
Почему многогоризонтное прогнозирование важно для портфелей
Традиционное одношаговое прогнозирование предсказывает одно значение в момент . Но решения об аллокации портфеля принимаются сразу на нескольких горизонтах. Управляющему портфелем нужно знать:
- Горизонт 1 день: для внутридневной ребалансировки и управления риском
- Горизонт 1 неделя: для тактических сдвигов аллокации
- Горизонт 1 месяц: для стратегической аллокации и ротации секторов
- Горизонт 1 квартал: для позиционирования под макротренды
У каждого горизонта свои характеристики отношения сигнал/шум. Краткосрочную доходность определяют микроструктура и поток ордеров. Среднесрочная доходность реагирует на моментум и возврат к среднему. Долгосрочная доходность определяется фундаментальными факторами и макрорежимами.
Модель, которая выдает прогнозы по всем этим горизонтам одновременно — с квантильными оценками неопределенности прогноза на каждом из них — принципиально полезнее, чем отдельные модели для каждого горизонта. Именно это дает TFT: получив окно энкодера с прошлыми наблюдениями, он выдает набор квантильных прогнозов на шагов вперед.
Формально, для многомерного временного ряда с наблюдениями для сущности в момент , где — целевая переменная, — изменяющиеся во времени признаки, а — статические метаданные, TFT обучает:
где — квантиль (что дает вероятностные прогнозы), — окно ретроспективы, а — горизонт прогноза.
Архитектура TFT: полный стек

TFT — это не обычный трансформер, наспех приделанный к временным рядам. Это специально спроектированная архитектура из пяти специализированных компонентов, каждый из которых решает конкретную задачу временного прогнозирования.
1. Гейтированные остаточные сети (GRN)
GRN — фундаментальный строительный блок TFT, используемый по всей архитектуре везде, где нужна нелинейная обработка. В отличие от обычного полносвязного слоя, GRN включает skip-соединения и механизмы гейтирования, которые позволяют сети адаптивно управлять потоком информации.
Получив основной вход и необязательный вектор контекста , GRN вычисляет:
где:
Гейтированный линейный блок (GLU) — ключевой механизм гейтирования:
где — сигмоидная функция, а обозначает поэлементное умножение. Сигмоидный гейт обучается тому, какие измерения входа подавить, что позволяет модели полностью пропускать ненужную нелинейную обработку, когда данные ее не требуют. Это критично для финансовых данных, где некоторые признаки информативны только в определенных режимах.
2. Сети отбора переменных (VSN)
Это, пожалуй, самый ценный компонент для портфельных приложений. Финансовые наборы данных печально известны своей зашумленностью: десятки потенциальных признаков — технические индикаторы, фундаментальные коэффициенты, макропеременные, оценки настроений — многие из которых избыточны или нерелевантны в любой конкретный момент.
VSN вычисляет мягкие веса отбора по всем входным признакам:
где — развернутый вектор всех преобразованных входных признаков в момент , а — вектор контекста, полученный из статических метаданных. Каждый отдельный признак также проходит через собственную GRN:
Итоговое отобранное представление — взвешенная сумма:
В портфельном контексте напрямую говорит вам: в момент модель взвесила признак вот настолько. Вы можете обнаружить, что RSI доминирует на боковых рынках, тогда как макропризнаки кривой доходности доминируют при сменах режима. Это не апостериорное объяснение — оно зашито в архитектуру.
Для статических ковариат, прошлых наблюдаемых входов и известных будущих входов существуют отдельные VSN. Это разделение уважает причинно-следственную структуру задачи прогнозирования: вы не можете использовать будущие наблюдения, но можете использовать известные будущие события (даты отчетности, заседания FOMC, экспирации опционов, эффекты дня недели).
3. Энкодеры статических ковариат
В портфельном прогнозировании статические ковариаты представляют метаданные уровня сущности, которые не меняются во времени: класс актива, сектор, биржа, корзина по капитализации или географический регион. TFT обрабатывает их через выделенные GRN, чтобы получить четыре различных вектора контекста:
- — контекст для временного отбора переменных
- — контекст для статического обогащения временных признаков (применяется после LSTM)
- — инициализация состояния ячейки для LSTM
- — инициализация скрытого состояния для LSTM
Именно так TFT обрабатывает кросс-секционную информацию. При прогнозировании портфеля из 500 акций статические энкодеры позволяют модели усвоить, что у технологических акций и акций коммунальных компаний принципиально разная временная динамика, без необходимости в отдельных моделях.
4. Временная обработка: LSTM + интерпретируемое многоголовое внимание
TFT использует двухэтапный пайплайн временной обработки, который объединяет сильные стороны рекуррентных архитектур и архитектур на основе внимания.
Этап 1: локальная обработка с помощью LSTM
Энкодер-декодер LSTM типа sequence-to-sequence обрабатывает временной ряд, чтобы уловить локальные временные паттерны — краткосрочный моментум, возврат к среднему и авторегрессионную структуру. Энкодер обрабатывает окно ретроспективы; декодер обрабатывает известные будущие входы. Оба инициализируются векторами статического контекста (состояние ячейки) и (скрытое состояние).
Этап 2: дальние зависимости с помощью интерпретируемого многоголового внимания
После локальной обработки TFT применяет модифицированный механизм self-attention для обучения дальним зависимостям. Ключевая модификация — в том, как агрегируются головы внимания. Стандартное многоголовое внимание конкатенирует выходы голов:
TFT вместо этого разделяет значения между головами и усредняет веса внимания:
Обратите внимание: у нет верхнего индекса головы — все головы разделяют одну и ту же проекцию значений. Это означает, что веса внимания каждой головы можно осмысленно усреднить и интерпретировать как оценки временной важности. Для конкретного прогноза можно визуализировать, на какие именно прошлые шаги по времени модель обращает внимание и чем паттерны внимания различаются между головами.
Для портфельного прогнозирования это показывает, обращает ли модель внимание на недавнее движение цены (моментум), на отдаленные исторические паттерны (сезонность) или на конкретные календарные события. Каждая голова может специализироваться на своем временном паттерне.
5. Слой квантильного выхода
Финальный слой выдает прогнозы на нескольких квантилях, оптимизируясь по квантильной ошибке:
где — набор целевых квантилей (например, ). Это дает вам не просто точечный прогноз, а квантильную оценку предсказательного интервала на каждом горизонте. Для управления риском портфеля прогнозы 10-го и 90-го перцентилей определяют размер позиций и уровни стоп-лоссов.
Одна оговорка, которую стоит проговорить сразу: минимизация pinball loss дает оценки условных квантилей, но не гарантирует калиброванное покрытие вне выборки. На нестационарных рынках со сменой режимов эти интервалы часто плохо откалиброваны — номинальный 80%-й интервал может покрывать гораздо меньше (или больше) чем 80% реализаций. Относитесь к квантилям как к оценкам, которые нужно проверять эмпирически тестами покрытия/надежности, и сужайте их с помощью conformal prediction, если вам нужны гарантии покрытия. Мы вернемся к этому в разделе про продакшен.
TFT против LSTM против обычного трансформера

Понимание того, где TFT находится относительно других архитектур, помогает решить, когда его использовать.
| Свойство | LSTM | Обычный трансформер | TFT |
|---|---|---|---|
| Дальние зависимости | Ограниченные (затухающие градиенты) | Сильные (self-attention) | Сильные (LSTM + внимание) |
| Отбор переменных | Отсутствует (ручной feature engineering) | Отсутствует | Встроенный VSN |
| Интерпретируемость | Непрозрачная | Веса внимания (зашумленные) | Структурированное внимание + важность переменных |
| Статические ковариаты | Произвольная конкатенация | Произвольная конкатенация | Выделенный пайплайн кодирования |
| Многогоризонтный выход | Авторегрессионный (накопление ошибки) | Прямой или авторегрессионный (зависит от декодирования) | Прямой (параллельный) |
| Известные будущие входы | Неуклюжая обработка | Нет встроенного различия | Явное разделение входов |
| Вероятностный выход | Требует модификации | Требует модификации | Встроенная квантильная регрессия |
| Стабильность обучения | Умеренная | Часто нестабильно на малых данных | Стабильная (помогает гейтирование) |
Когда LSTM все еще выигрывает
LSTM остаются конкурентоспособными для очень краткосрочного прогнозирования (тиковый уровень, субминутный), где окно ретроспективы короткое и доминирует локальная авторегрессионная структура. Их также проще развертывать, с меньшей задержкой на инференсе. Для маркет-мейкинг-бота, которому нужны субмиллисекундные прогнозы, LSTM по-прежнему практичный выбор.
Когда обычные трансформеры не справляются
Стандартные трансформеры, наивно применяемые к финансовым временным рядам, часто переобучаются. У них нет индуктивных смещений, необходимых для временных данных, — нет понятия статических против изменяющихся во времени признаков, нет отбора переменных, а стандартное конкатенированное многоголовое внимание дает карты внимания, которые трудно осмысленно интерпретировать.
Когда TFT превосходит
TFT оптимален, когда у вас есть: (1) несколько разнородных типов входов, (2) кросс-секционные данные (много активов), (3) потребность в многогоризонтных вероятностных прогнозах и (4) требование интерпретируемости модели. Это описывает по сути любую институциональную задачу прогнозирования портфеля.
Реализация на Python с PyTorch Forecasting
Вот практическая реализация TFT для прогнозирования доходности мультиактивного портфеля с использованием библиотеки pytorch-forecasting.
Подготовка данных
Обратите внимание на намеренное использование настоящих известных будущих входов — day_of_week, days_to_earnings, is_fomc, days_to_expiry. Это значения, которые мы знаем заранее для окна прогноза, и подача их как известных вещественных/категориальных — именно та возможность TFT, вокруг которой построена архитектура. Мы убираем сырой time_idx из известных вещественных: add_relative_time_idx=True уже добавляет индекс относительной позиции, а сырой монотонный счетчик в основном протекает трендом.
import pandas as pd
import numpy as np
import lightning.pytorch as pl
from lightning.pytorch.callbacks import EarlyStopping, LearningRateMonitor
from lightning.pytorch.loggers import TensorBoardLogger
from pytorch_forecasting import (
TimeSeriesDataSet,
TemporalFusionTransformer,
QuantileLoss,
GroupNormalizer,
)
max_encoder_length = 60 # ретроспектива 60 торговых дней (~3 месяца)
max_prediction_length = 20 # 20 торговых дней вперед (~1 месяц)
training_cutoff = df["time_idx"].max() - max_prediction_length
training = TimeSeriesDataSet(
df[lambda x: x.time_idx <= training_cutoff],
time_idx="time_idx",
target="log_return",
group_ids=["asset_id"],
min_encoder_length=max_encoder_length // 2,
max_encoder_length=max_encoder_length,
min_prediction_length=1,
max_prediction_length=max_prediction_length,
static_categoricals=["sector", "market_cap_bucket"],
time_varying_known_categoricals=["day_of_week", "is_fomc"],
time_varying_known_reals=["days_to_earnings", "days_to_expiry"],
time_varying_unknown_reals=[
"log_return",
"rsi_14",
"macd",
"bb_width",
"pe_ratio",
"earnings_yield",
"vix",
"yield_spread",
"dxy",
],
target_normalizer=GroupNormalizer(
groups=["asset_id"],
transformation="softplus",
),
add_relative_time_idx=True,
add_target_scales=True,
add_encoder_length=True,
)
validation = TimeSeriesDataSet.from_dataset(
training, df, predict=True, stop_randomization=True
)
batch_size = 64
train_dataloader = training.to_dataloader(
train=True, batch_size=batch_size, num_workers=4
)
val_dataloader = validation.to_dataloader(
train=False, batch_size=batch_size * 4, num_workers=4
)
Определение модели и обучение
tft = TemporalFusionTransformer.from_dataset(
training,
learning_rate=1e-3,
hidden_size=64,
attention_head_size=4,
dropout=0.1,
hidden_continuous_size=32,
output_size=7, # 7 квантилей
loss=QuantileLoss(quantiles=[0.02, 0.1, 0.25, 0.5, 0.75, 0.9, 0.98]),
log_interval=10,
optimizer="Ranger",
reduce_on_plateau_patience=4,
)
print(f"Number of parameters: {tft.size() / 1e3:.1f}k")
early_stop_callback = EarlyStopping(
monitor="val_loss",
min_delta=1e-4,
patience=10,
verbose=False,
mode="min",
)
lr_logger = LearningRateMonitor()
logger = TensorBoardLogger("lightning_logs")
trainer = pl.Trainer(
max_epochs=100,
accelerator="auto",
enable_model_summary=True,
gradient_clip_val=0.1,
callbacks=[lr_logger, early_stop_callback],
logger=logger,
)
trainer.fit(
tft,
train_dataloaders=train_dataloader,
val_dataloaders=val_dataloader,
)
Извлечение интерпретируемых выходов
У вызова интерпретации есть одно неочевидное требование: interpret_output() потребляет сырой выходной словарь (с ключами вроде encoder_variables, decoder_variables, static_variables, encoder_attention, ...), который predict() выдает только при mode="raw". Вычислите его один раз, затем переиспользуйте один и тот же объект и для важности переменных, и для внимания.
best_model_path = trainer.checkpoint_callback.best_model_path
best_tft = TemporalFusionTransformer.load_from_checkpoint(best_model_path)
raw_predictions, x = best_tft.predict(val_dataloader, mode="raw", return_x=True)
interpretation = best_tft.interpret_output(raw_predictions, reduction="sum")
best_tft.plot_interpretation(interpretation)
preds = raw_predictions.output["prediction"]
От прогнозов к весам портфеля
def forecasts_to_portfolio_weights(
predictions: dict,
index: pd.DataFrame,
risk_aversion: float = 2.0,
) -> pd.DataFrame:
"""
Преобразует многогоризонтные квантильные прогнозы TFT в веса long-only
портфеля, используя оценку, ВДОХНОВЛЕННУЮ mean-variance (не полную
оптимизацию: матрицы ковариаций здесь нет, только риск-скорректированная
оценка по каждому активу).
Использует медианный прогноз как ожидаемую доходность и (q90 - q10) как
прокси неопределенности прогноза.
"""
preds = predictions["prediction"]
median_return = preds[:, :, 3].mean(dim=1).numpy() # среднее по горизонтам
q90 = preds[:, :, 5].mean(dim=1).numpy()
q10 = preds[:, :, 1].mean(dim=1).numpy()
forecast_uncertainty = q90 - q10 # ширина 80%-го PI
scores = median_return / (risk_aversion * forecast_uncertainty + 1e-8)
result = index[["asset_id"]].copy()
result["score"] = scores
result["raw_weight"] = np.maximum(scores, 0) # long-only
total = result["raw_weight"].sum()
result["weight"] = result["raw_weight"] / (total + 1e-8)
return result[["asset_id", "weight", "score"]]
Интерпретируемость на практике: что TFT раскрывает о рынках

Интерпретируемые выходы TFT — не академические курьезы, они дают применимую на практике аналитику для управляющих портфелями.
Важность переменных в разных режимах
Когда вы изучаете веса отбора переменных во времени, проступают паттерны, которые согласуются с рыночной интуицией:
- В цикле повышения ставок 2022 года: признаки кривой доходности (yield_spread, fed_funds_rate) доминировали в важности переменных, набирая 35-40% веса отбора. Технические индикаторы упали ниже 10%.
- В ралли 2024 года, движимом ИИ: моментум-признаки (rsi_14, macd) резко выросли в важности. Статические ковариаты уровня сектора также стали значимыми, поскольку ралли было сильно сконцентрировано в технологиях.
- В периоды бокового движения: индикаторы возврата к среднему (bb_width, relative_value) получали наибольшие веса, тогда как трендследящие признаки подавлялись механизмом гейтирования.
Это гейтирование GRN в действии. Когда моментум-признаки не несут сигнала, гейты GLU гонят их вклад к нулю, и модель автоматически переключается на альтернативные признаки. (Это иллюстративные паттерны из исследовательских прогонов, а не результаты на бенчмарках, — проверяйте их на своих данных.)
Паттерны временного внимания
Визуализация весов внимания раскрывает эффективную структуру памяти модели:
- Пики краткосрочного внимания: сильное внимание на лагах 1-5 отражает автокорреляцию и краткосрочные эффекты моментума/разворота.
- Недельные паттерны: всплески внимания на лагах 5, 10, 15 соответствуют недельным календарным эффектам.
- Месячные паттерны: устойчивый пик внимания около лага 21 (один торговый месяц) улавливает потоки месячной ребалансировки и эффекты экспирации опционов.
- Цикл отчетности: для отдельных акций внимание показывает резкие всплески на лагах ~63 и ~126 дней, соответствующих датам квартальной отчетности.
Эти паттерны дают независимое подтверждение того, что модель усвоила осмысленную временную структуру, а не подогналась под шум.
Производительность и применения в реальном мире
Результаты на бенчмарках
Из исходной статьи и последующих исследований TFT демонстрирует сильную, хорошо задокументированную производительность:
- В среднем на 7% ниже квантильная ошибка P50 и на 9% ниже P90 по сравнению со следующей по качеству моделью на бенчмарк-наборах данных статьи (электроэнергия, трафик, ритейл, волатильность) и на 3-26% лучше сильнейшего конкурирующего бейзлайна в зависимости от набора данных. Конкретный конкурент зависит от набора данных — например, DeepAR относится к более слабым бейзлайнам на электроэнергии и трафике, но более конкурентоспособен на ритейле и волатильности, — так что заголовочное число это выигрыш над следующей по качеству моделью, а не над каким-то одним фиксированным бейзлайном.
- Стабильно превосходит классические бейзлайны ARIMA, ETS и Prophet по многогоризонтным метрикам.
Направления исследований в финансах
TFT породил активное направление финансово-специфичных исследований. Несколько репрезентативных линий с их фактически заявленными метриками (цитируйте и воспроизводите, прежде чем полагаться на любую из них):
- Адаптивный / многомасштабный TFT для крипты. Работы вроде Adaptive Temporal Fusion Transformers for Cryptocurrency Price Prediction (arXiv:2509.10542) сообщают об улучшениях над TFT с фиксированной длиной и бейзлайнами на LSTM в прогнозировании цены крипты. Относитесь к числам торговой прибыльности как к специфичным для статьи и зависящим от режима, а не универсальным — мы намеренно не приводим здесь абсолютную дельту Шарпа, потому что цифры, гуляющие по литературе, часто смешивают точность прогноза с реализованным Шарпом.
- Цели, учитывающие Шарп. Линия работ MDPI Sensors про мультисенсорный TFT / адаптивный коэффициент Шарпа оптимизирует напрямую цель в стиле Шарпа; обратите внимание, что ее заголовочный результат — примерно 18% улучшение точности прогнозирования коэффициента Шарпа, а это иная величина, чем абсолютный прирост Шарпа.
- Гибридные модели TFT-GNN. Сочетание TFT с графовыми нейросетями для улавливания межактивных зависимостей; сообщается, что гибриды превосходят отдельный TFT в кросс-секционном прогнозировании акций.
- Кросс-модальное временное слияние. Интеграция структурированных ценовых данных с неструктурированными (новости, транскрипты конференц-звонков по отчетности) через слои слияния трансформера, расширяющая парадигму TFT на мультимодальные финансовые данные.
Эти направления реальны, но ни одно из них не является готовым преимуществом под ключ. Воспроизведите метрики на своей вселенной активов и издержках, прежде чем разворачивать.
Практические соображения для продакшена
Требования к данным: TFT нужно существенное количество обучающих данных. Закладывайте как минимум 2-3 года дневных данных на актив или 6-12 месяцев часовых данных. Кросс-секционные данные (много активов) значительно помогают — обучение на 500 акциях одновременно эффективнее, чем обучение 500 отдельных моделей.
Feature engineering: хотя TFT выполняет отбор переменных автоматически, качество кандидатных признаков по-прежнему важно. Включите разнообразный набор признаков, охватывающий технические, фундаментальные, макро- и альтернативные данные. Пусть VSN определит, что полезно.
Вычислительная стоимость: TFT дороже в обучении, чем LSTM, но сопоставим с обычными трансформерами. На одном GPU A100 обучение на 500 акциях с 3 годами дневных данных занимает порядка нескольких часов для 100 эпох. Инференс быстрый — генерация прогнозов для всей вселенной активов занимает заметно меньше секунды.
Проверяйте калибровку, не предполагайте ее. Прежде чем любой квантиль начнет определять размер позиций, проверьте эмпирическое покрытие на данных вне выборки: действительно ли номинальный 80%-й интервал содержит ~80% реализованных доходностей? На нестационарных рынках часто нет. Стройте диаграммы надежности по каждому горизонту и подумайте о том, чтобы обернуть модель в conformal prediction для восстановления гарантий покрытия.
Адаптация к режимам: TFT не моделирует смены режимов явно (в отличие от HMM). Однако механизм гейтирования обеспечивает неявную адаптацию к режимам. На практике ежемесячное переобучение с расширяющимся окном эффективно улавливает структурные изменения.
Снижение переобучения: финансовые данные зашумлены и нестационарны. Используйте агрессивную регуляризацию: dropout 0.1-0.3, обрезку градиентов на 0.1, раннюю остановку с терпением 10-15 эпох. Walk-forward валидация обязательна — никогда не используйте случайные train/test разбиения на временных рядах.
Собираем все вместе: портфельный пайплайн на основе TFT

Продакшен-пайплайн для управления портфелем на основе TFT выглядит так:
- Прием данных: ежедневно собирайте OHLCV, фундаментальные, макро- и альтернативные данные. Вычисляйте признаки (200+ кандидатов), включая настоящий известный будущий календарь (отчетность, FOMC, экспирации, день недели).
- Feature store: поддерживайте нормированный, проиндексированный по времени feature store. Обрабатывайте пропущенные данные, корпоративные действия и survivorship bias.
- Обучение модели: переобучайте TFT ежемесячно по walk-forward методологии. Используйте последние 3-5 лет данных с расширяющимся окном.
- Генерация прогнозов: ежедневный инференс, выдающий квантильные прогнозы на горизонтах 1, 5, 10 и 20 дней для всей вселенной активов.
- Проверка калибровки: отслеживайте покрытие каждого квантильного интервала по горизонтам. Перекалибровывайте (или применяйте conformal-коррекцию), когда покрытие дрейфует.
- Дашборд интерпретируемости: визуализируйте важность переменных и веса внимания. Помечайте аномалии (например, внезапные сдвиги важности признаков).
- Оптимизация портфеля: преобразуйте прогнозы в веса с помощью mean-variance, Black-Litterman или risk parity, где квантили TFT дают входы доходности и неопределенности.
- Риск-оверлей: используйте прогнозы 2-го и 98-го перцентилей для оценки хвостового риска. Сокращайте размеры позиций, когда предсказательные интервалы расширяются.
- Исполнение: передавайте целевые веса в движок исполнения. Мониторьте ошибку отслеживания между целевым и реализованным портфелем.
Заключение
Temporal Fusion Transformer представляет собой настоящий шаг вперед для количественного управления портфелем. Это не просто очередная модель глубокого обучения, наброшенная на финансовые данные, — это архитектура, спроектированная с нуля под конкретные вызовы многогоризонтного временного прогнозирования: разнородные входы, кросс-секционная структура, вероятностные выходы и критическая потребность в интерпретируемости.
Сети отбора переменных говорят вам, на что модель обращает внимание. Веса внимания говорят, когда она смотрит. Механизмы гейтирования обеспечивают, что она изящно обрабатывает нерелевантные признаки и смены режима. А квантильные выходы дают вам оценки неопределенности для управления риском — при условии, что вы проверяете их калибровку, а не принимаете на веру.
TFT — не серебряная пуля. Финансовые рынки остаются состязательной средой, где любое предсказательное преимущество временно и зависит от режима. Но TFT дает принципиальный каркас для построения систем прогнозирования, которые одновременно мощны и понятны, — а в продакшен-трейдинге понимание того, почему ваша модель делает ставку, не менее важно, чем сама ставка.
Ссылки
- Lim, B., Arik, S.O., Loeff, N., & Pfister, T. (2021). "Temporal Fusion Transformers for Interpretable Multi-horizon Time Series Forecasting." International Journal of Forecasting, 37(4), 1748-1764. arXiv:1912.09363
- Oreshkin, B.N., Carpov, D., Chapados, N., & Bengio, Y. (2020). "N-BEATS: Neural basis expansion analysis for interpretable time series forecasting." ICLR 2020.
- Salinas, D., Flunkert, V., Gasthaus, J., & Januschowski, T. (2020). "DeepAR: Probabilistic forecasting with autoregressive recurrent networks." International Journal of Forecasting, 36(3), 1181-1191.
- pytorch-forecasting documentation — реализация TFT с PyTorch Lightning.
- google-research/tft — исходная референсная реализация TFT.
Авторы
Инженер торговых систем
Разработка торговых ботов с 2017 года: межбиржевой арбитраж (подключал до 30 бирж), парный арбитраж на коинтеграции между спотом и фьючерсами, скальпинг, фронтраннинг, торговля по новостям, сентиментный анализ, трендовые алгоритмы, а также алгоритмы управления и балансировки портфелей. Делает выставление ордеров до 1 мс, warehouse для big data, бэктестинг-движки, AI-агентов и интерфейсы для ботов (в т.ч. open-source profitmaker.cc). Стек: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, архитектура.