Розробка AI-моделі на базі Temporal Fusion Transformer для ринків

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Розробка AI-моделі на базі Temporal Fusion Transformer для ринків
Складний
~5 днів
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1288
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1123
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    590
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    860

Розробка AI-моделі на базі Temporal Fusion Transformer для ринків

Temporal Fusion Transformer (TFT) — архітектура, розроблена в Google Brain спеціально для завдань прогнозування часових рядів з гетерогенними вхідними даними. На відміну від vanilla Transformer, TFT явно обробляє три типи змінних: статичні (не змінюються в часі), відомі майбутні (відомі заздалегідь) та невідомі (спостережувані лише до моменту прогнозу).

Що робить TFT особливим для фінансів

Три категорії вхідних змінних:

Тип Приклади для ринку Обробка
Статичні коваріати Тікер, сектор, капіталізація ринку Статичні вбудовування
Відомі майбутні Дати прибутків, дати FOMC, свята Енкодер майбутнього
Спостережуване минуле Прибутки, обсяг, VIX, RSI Енкодер минулого

Це принципово важливо: знаючи, що засідання Федеральної резервної системи відбудеться за 5 днів, модель повинна це враховувати при прогнозуванні прямо зараз. TFT робить це явно.

Variable Selection Network (VSN): Навчальні ваги для кожної вхідної змінної. Дозволяє автоматично відфільтрувати нерелевантні ознаки та отримати інтерпретованість — які змінні дійсно важливі для прогнозу.

Gated Residual Network (GRN): Нелінійна обробка з gate-механізмом, який контролює, наскільки застосовується нелінійне перетворення (gate = 0: pass-through, gate = 1: повна нелінійність).

Повна архітектура TFT

Статичні коваріати → Енкодери статичних коваріатів
                         ↓
Спостережуване минуле → LSTM енкодер ─────────────┐
                                           ├→ Мультиголова увага → GRN → Вихід квантиля
Відомі майбутні → LSTM декодер ──────────────┘

Всередині уваги: часова self-attention, де кожен крок прогнозу може "дивитися" на релевантну історію.

Реалізація для ринкових даних

from pytorch_forecasting import TemporalFusionTransformer, TimeSeriesDataSet
from pytorch_forecasting.metrics import QuantileLoss

data = prepare_market_dataframe(
    tickers=['AAPL', 'MSFT', ...],  # 100+ інструментів
    start='2015-01-01'
)

training = TimeSeriesDataSet(
    data[data.date < '2022-01-01'],
    time_idx="time_idx",
    target="forward_5d_return",
    group_ids=["ticker"],
    max_encoder_length=126,     # 6 місяців історії
    max_prediction_length=5,    # 5 днів прогнозу
    static_categoricals=["sector", "country"],
    static_reals=["log_market_cap", "beta"],
    time_varying_known_reals=["days_to_earnings", "fomc_flag", "vix"],
    time_varying_unknown_reals=[
        "return", "volume_ratio", "rsi", "atr_normalized",
        "momentum_12_1", "short_interest_ratio"
    ],
)

tft = TemporalFusionTransformer.from_dataset(
    training,
    learning_rate=0.001,
    hidden_size=160,
    attention_head_size=4,
    dropout=0.1,
    hidden_continuous_size=64,
    loss=QuantileLoss(quantiles=[0.1, 0.25, 0.5, 0.75, 0.9])
)

Навчання та гіперпараметри

Ключові гіперпараметри:

  • hidden_size: 64-256 (основна ємність моделі)
  • attention_head_size: 1-4
  • max_encoder_length: 60-252 (1 квартал — 1 рік)
  • dropout: 0.05-0.3

Пошук швидкості навчання:

res = trainer.tuner.lr_find(
    tft, train_dataloaders=train_dataloader,
    val_dataloaders=val_dataloader,
    max_lr=0.1
)
optimal_lr = res.suggestion()

Рання зупинка:

from pytorch_lightning.callbacks import EarlyStopping
early_stop_callback = EarlyStopping(
    monitor="val_loss", patience=10, mode="min"
)

Прогнози квантилів та їх застосування

TFT нативно видає прогнози квантилів (p10, p25, p50, p75, p90). Це цінно для:

Позиціонування розміру позиції на основі ризику:

point_forecast = forecasts['p50']
uncertainty = forecasts['p90'] - forecasts['p10']
position_size = base_size × (1 / (uncertainty / expected_return))

Асиметричні профілі повернення: Якщо p90 − p50 >> p50 − p10 → праворуч розподілене розподіл → потенціал зростання перевищує ризик.

Інтерпретованість: важливість змінної

raw_predictions, x = tft.predict(val_dataloader, mode="raw", return_x=True)
interpretation = tft.interpret_output(raw_predictions, reduction="sum")
fig = tft.plot_interpretation(interpretation)

Приклад результату: Важливість змінної показує, що momentum_12_1 (0.22), vix (0.18) та days_to_earnings (0.15) — головні предиктори. short_interest_ratio (0.04) — незначущий.

Візуалізація паттерну уваги: модель звертає максимальну увагу на точки за 5 і 20 днів до прогнозу — відповідає тижневому та місячному ефекту моменту.

Порівняння з іншими методами

На змаганні M5 (прогнозування попиту Walmart, 2020):

  • TFT: RMSSE 0.1127 (топ-10%)
  • LightGBM: 0.1152
  • DeepAR: 0.1189
  • Prophet: 0.1402

Переваги TFT особливо виражені при наявності відомих майбутніх коваріатів та статичних ознак.

Часовая шкала: TFT базовий для 50+ інструментів — 4-5 тижнів. Повна система з календарем прибутків, макроекономічними коваріатами та побудовою портфеля — 3-4 місяці.