← Makalelere geri dön
June 22, 2026
5 dakikalık okuma

Çok Ufuklu Portföy Tahmini için Temporal Fusion Transformer

Çok Ufuklu Portföy Tahmini için Temporal Fusion Transformer
#deep-learning
#transformer
#TFT
#forecasting
#portfolio
#quant
🧠
Part 1 of 4 · Collection
Deep Learning for Markets

Derin öğrenmeyi portföy yönetimine uygularken yaşanan en büyük sıkıntı, kara kutu problemidir. Backtest'lerde etkileyici Sharpe oranları üreten bir sinir ağı eğitirsiniz, ama strateji canlıda para kaybetmeye başladığında neden kaybettiğini bilemezsiniz. Tahmini hangi girdi öznitelikleri yönlendirdi? Hangi zaman ufukları önemli? Model makro sinyallere mi yoksa mikro yapı gürültüsüne mi tepki veriyordu?

Google Research bu probleme doğrudan Temporal Fusion Transformer (TFT) ile cevap verdi -- güçlü çok ufuklu tahmin sunarken, dikkat ağırlıkları ve değişken önemi skorları sayesinde yerleşik yorumlanabilirlik sağlayan, dikkat tabanlı bir mimari. Orijinal kıyaslamalarda TFT, bir sonraki en iyi modele kıyasla kuantil kaybını ortalama %7 (P50) ve %9 (P90) düşürdü ve test veri kümeleri genelinde en güçlü rakip referans modeli %3-26 oranında geride bıraktı. Kantitatif portföy yöneticileri için TFT nadir bir şey sunar: hem güçlü hem de şeffaf bir model.

Bu yazı, TFT mimarisini parçalarına ayırıyor, bunun çok ufuklu portföy tahminine nasıl uygulanacağını gösteriyor, pytorch-forecasting ile bir Python uygulamasını adım adım anlatıyor ve onu LSTM ile sade transformer referans modelleriyle karşılaştırıyor.

Çok Ufuklu Tahmin Portföyler için Neden Önemli

Geleneksel tek adımlı tahmin, t+1t+1 zamanında tek bir değer öngörür. Ancak portföy tahsis kararları aynı anda birden fazla ufukta işler. Bir portföy yöneticisinin şunları bilmesi gerekir:

  • 1 günlük ufuk: Gün içi yeniden dengeleme ve risk yönetimi için
  • 1 haftalık ufuk: Taktiksel tahsis kaymaları için
  • 1 aylık ufuk: Stratejik tahsis ve sektör rotasyonu için
  • 1 çeyreklik ufuk: Makro odaklı konumlandırma için

Her ufkun farklı sinyal-gürültü özellikleri vardır. Kısa vadeli getiriler mikro yapı ve emir akışı tarafından domine edilir. Orta vadeli getiriler momentum ve ortalamaya dönüşe tepki verir. Uzun vadeli getiriler ise temel veriler ve makro rejimler tarafından yönlendirilir.

Tüm bu ufuklar genelinde aynı anda tahmin üreten -- her birinde tahmin belirsizliğinin kuantil tahminleriyle birlikte -- bir model, her ufuk için ayrı modellerden temelde çok daha kullanışlıdır. TFT'nin sağladığı tam olarak budur: geçmiş gözlemlerden oluşan bir kodlayıcı penceresi verildiğinde, τ=1,2,,τmax\tau = 1, 2, \ldots, \tau_{max} adım ilerisi için bir dizi kuantil tahmini üretir.

Biçimsel olarak, ii varlığı için tt zamanında {yi,t,xi,t,si}\{y_{i,t}, \mathbf{x}_{i,t}, \mathbf{s}_i\} gözlemlerine sahip çok değişkenli bir zaman serisi verildiğinde -- ki burada yy hedef, xt\mathbf{x}_t zamanla değişen öznitelikler ve si\mathbf{s}_i statik üst veridir -- TFT şunu öğrenir:

y^i(q,t,τ)=fq(yi,tk:t,xi,tk:t+τ,si)\hat{y}_{i}(q, t, \tau) = f_q\left(y_{i,t-k:t}, \mathbf{x}_{i,t-k:t+\tau}, \mathbf{s}_i\right)

burada qq kuantildir (olasılıksal tahminleri mümkün kılar), kk geriye bakış penceresi ve τ\tau tahmin ufkudur.

TFT Mimarisi: Tam Yığın

Temporal Fusion Transformer yığını: değişken seçim ağları, kapılı artık ağlar, bir LSTM kodlayıcı-kod çözücü ve yorumlanabilir dikkat

TFT, zaman serisine gelişigüzel yapıştırılmış genel amaçlı bir transformer değildir. Beş özelleşmiş bileşenden oluşan, her biri zamansal tahminde belirli bir zorluğa yönelen, amaca özel inşa edilmiş bir mimaridir.

1. Kapılı Artık Ağlar (GRN)

GRN, TFT'nin temel yapı taşıdır ve doğrusal olmayan işlemenin gerektiği her yerde mimari boyunca kullanılır. Standart bir ileri beslemeli katmanın aksine, GRN, ağın bilgi akışını uyarlamalı olarak kontrol etmesine olanak tanıyan atlama bağlantıları ve kapılama mekanizmaları içerir.

Birincil girdi a\mathbf{a} ve isteğe bağlı bir bağlam vektörü c\mathbf{c} verildiğinde, GRN şunu hesaplar:

GRNω(a,c)=LayerNorm(a+GLUω(η1))\text{GRN}_\omega(\mathbf{a}, \mathbf{c}) = \text{LayerNorm}\left(\mathbf{a} + \text{GLU}_\omega(\boldsymbol{\eta}_1)\right)

burada:

η1=W1,ωη2+b1,ω\boldsymbol{\eta}_1 = \mathbf{W}_{1,\omega} \boldsymbol{\eta}_2 + \mathbf{b}_{1,\omega}

η2=ELU(W2,ωa+W3,ωc+b2,ω)\boldsymbol{\eta}_2 = \text{ELU}\left(\mathbf{W}_{2,\omega} \mathbf{a} + \mathbf{W}_{3,\omega} \mathbf{c} + \mathbf{b}_{2,\omega}\right)

Kapılı Doğrusal Birim (GLU) temel kapılama mekanizmasıdır:

GLU(γ)=σ(W4γ+b4)(W5γ+b5)\text{GLU}(\boldsymbol{\gamma}) = \sigma(\mathbf{W}_{4} \boldsymbol{\gamma} + \mathbf{b}_4) \odot (\mathbf{W}_{5} \boldsymbol{\gamma} + \mathbf{b}_5)

burada σ\sigma sigmoid fonksiyonudur ve \odot eleman bazında çarpımı gösterir. Sigmoid kapısı, girdinin hangi boyutlarının bastırılacağını öğrenir ve böylece verinin gerektirmediği durumlarda modelin gereksiz doğrusal olmayan işlemeyi tamamen atlamasına olanak tanır. Bu, bazı özniteliklerin yalnızca belirli rejimlerde bilgilendirici olduğu finansal veriler için kritik öneme sahiptir.

2. Değişken Seçim Ağları (VSN)

Bu, portföy uygulamaları için muhtemelen en değerli bileşendir. Finansal veri kümeleri kötü bir şekilde gürültülüdür; teknik göstergeler, temel oranlar, makro değişkenler, duyarlılık skorları gibi düzinelerce olası öznitelik içerir ve bunların çoğu herhangi bir anda gereksiz ya da alakasızdır.

VSN, tüm girdi öznitelikleri üzerinde yumuşak seçim ağırlıkları hesaplar:

vχt=Softmax(GRNvχ(Ξt,cs))\mathbf{v}_{\chi_t} = \text{Softmax}\left(\text{GRN}_{v_\chi}\left(\boldsymbol{\Xi}_t, \mathbf{c}_s\right)\right)

burada Ξt\boldsymbol{\Xi}_t, tt zamanındaki tüm dönüştürülmüş girdi özniteliklerinin düzleştirilmiş vektörüdür ve cs\mathbf{c}_s, statik üst veriden türetilen bir bağlam vektörüdür. Her bir öznitelik ayrıca kendi GRN'si üzerinden işlenir:

ξ~t(j)=GRNξ~(j)(ξt(j))\tilde{\boldsymbol{\xi}}^{(j)}_t = \text{GRN}_{\tilde{\xi}^{(j)}}\left(\boldsymbol{\xi}^{(j)}_t\right)

Nihai seçilen temsil, ağırlıklı toplamdır:

ξ~t=j=1mχvχt(j)ξ~t(j)\tilde{\boldsymbol{\xi}}_t = \sum_{j=1}^{m_\chi} v_{\chi_t}^{(j)} \tilde{\boldsymbol{\xi}}^{(j)}_t

Portföy bağlamında vχt(j)v_{\chi_t}^{(j)} size doğrudan şunu söyler: "tt zamanında model, jj özniteliğini bu kadar ağırlıklandırdı." RSI'ın yatay seyreden piyasalarda baskın olduğunu, makro getiri eğrisi özniteliklerinin ise rejim geçişlerinde baskın olduğunu keşfedebilirsiniz. Bu sonradan eklenen bir açıklama değildir -- mimariye gömülüdür.

Statik ortak değişkenler, geçmiş gözlemlenen girdiler ve bilinen gelecekteki girdiler için ayrı VSN'ler vardır. Bu ayrım, tahmin probleminin nedensel yapısına saygı gösterir: gelecekteki gözlemleri kullanamazsınız, ancak bilinen gelecekteki olayları (kazanç tarihleri, FOMC toplantıları, opsiyon vadeleri, haftanın günü etkileri) kullanabilirsiniz.

3. Statik Ortak Değişken Kodlayıcıları

Portföy tahmininde statik ortak değişkenler, zaman içinde değişmeyen varlık düzeyindeki üst veriyi temsil eder: varlık sınıfı, sektör, borsa, piyasa değeri dilimi ya da coğrafi bölge. TFT bunları özel GRN'ler aracılığıyla işleyerek dört farklı bağlam vektörü üretir:

  • cs\mathbf{c}_s -- zamansal değişken seçimi için bağlam
  • ce\mathbf{c}_e -- zamansal özniteliklerin statik zenginleştirilmesi için bağlam (LSTM'den sonra uygulanır)
  • cc\mathbf{c}_c -- LSTM için hücre durumu başlatma
  • ch\mathbf{c}_h -- LSTM için gizli durum başlatma

TFT'nin kesitsel bilgiyi ele alış biçimi budur. 500 hisseden oluşan bir portföyü tahmin ederken, statik kodlayıcılar modelin, ayrı modellere ihtiyaç duymadan, teknoloji hisseleri ile kamu hizmeti hisselerinin temelde farklı zamansal dinamiklere sahip olduğunu öğrenmesine olanak tanır.

4. Zamansal İşleme: LSTM + Yorumlanabilir Çok Başlı Dikkat

TFT, tekrarlayan ve dikkat tabanlı mimarilerin güçlü yanlarını birleştiren iki aşamalı bir zamansal işleme boru hattı kullanır.

1. Aşama: LSTM ile Yerel İşleme

Diziden diziye bir LSTM kodlayıcı-kod çözücü, yerel zamansal kalıpları -- kısa vadeli momentum, ortalamaya dönüş ve otoregresif yapı -- yakalamak için zaman serisini işler. Kodlayıcı geriye bakış penceresini işler; kod çözücü bilinen gelecekteki girdileri işler. Her ikisi de statik bağlam vektörleri cc\mathbf{c}_c (hücre durumu) ve ch\mathbf{c}_h (gizli durum) ile başlatılır.

2. Aşama: Yorumlanabilir Çok Başlı Dikkat ile Uzun Menzilli Bağımlılıklar

Yerel işlemeden sonra TFT, uzun menzilli bağımlılıkları öğrenmek için değiştirilmiş bir öz-dikkat mekanizması uygular. Temel değişiklik, dikkat başlıklarının nasıl bir araya getirildiğindedir. Standart çok başlı dikkat, başlık çıktılarını birleştirir:

MultiHead(Q,K,V)=[head1;;headH]WO\text{MultiHead}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) = [\text{head}_1; \ldots; \text{head}_H] \mathbf{W}_O

TFT ise bunun yerine değerleri başlıklar arasında paylaşır ve dikkat ağırlıklarını ortalar:

InterpretableMultiHead(Q,K,V)=H~WH\text{InterpretableMultiHead}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) = \tilde{\mathbf{H}} \mathbf{W}_H

H~=1Hh=1HAttention(QWQ(h),KWK(h),VWV)\tilde{\mathbf{H}} = \frac{1}{H} \sum_{h=1}^{H} \text{Attention}\left(\mathbf{Q} \mathbf{W}_Q^{(h)}, \mathbf{K} \mathbf{W}_K^{(h)}, \mathbf{V} \mathbf{W}_V\right)

Attention(Q,K,V)=Softmax(QKdattn)V\text{Attention}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) = \text{Softmax}\left(\frac{\mathbf{Q} \mathbf{K}^\top}{\sqrt{d_{\text{attn}}}}\right) \mathbf{V}

Dikkat edin: WV\mathbf{W}_V başlık üst simgesine sahip değildir -- tüm başlıklar aynı değer izdüşümünü paylaşır. Bu, her başlığın dikkat ağırlıklarının anlamlı bir şekilde ortalanabileceği ve zamansal önem skorları olarak yorumlanabileceği anlamına gelir. Belirli bir tahmin için, modelin tam olarak hangi geçmiş zaman adımlarına dikkat ettiğini ve dikkat kalıplarının başlıklar arasında nasıl farklılaştığını görselleştirebilirsiniz.

Portföy tahmini için bu, modelin son fiyat hareketine (momentum), uzak tarihsel kalıplara (mevsimsellik) ya da belirli takvim olaylarına mı dikkat ettiğini ortaya koyar. Her başlık farklı bir zamansal kalıpta uzmanlaşabilir.

5. Kuantil Çıktı Katmanı

Son katman, kuantil kaybıyla optimize edilen birden çok kuantilde tahminler üretir:

L(Ω)=ytΩqQτ=1τmaxQL(yt,y^(q,tτ,τ),q)Ωτmax\mathcal{L}(\Omega) = \sum_{y_t \in \Omega} \sum_{q \in \mathcal{Q}} \sum_{\tau=1}^{\tau_{\max}} \frac{QL(y_t, \hat{y}(q, t-\tau, \tau), q)}{|\Omega| \cdot \tau_{\max}}

QL(y,y^,q)=qmax(0,yy^)+(1q)max(0,y^y)QL(y, \hat{y}, q) = q \max(0, y - \hat{y}) + (1 - q) \max(0, \hat{y} - y)

burada Q\mathcal{Q} hedef kuantillerin kümesidir (ör. {0.1,0.5,0.9}\{0.1, 0.5, 0.9\}). Bu size yalnızca bir nokta tahmini değil, her ufukta tahmin aralığının bir kuantil tahminini verir. Portföy risk yönetimi için 10. ve 90. yüzdelik tahminler, pozisyon büyüklüğü belirlemeyi ve stop-loss seviyelerini bilgilendirir.

Baştan belirtmeye değer bir uyarı: pinball kaybını en aza indirmek koşullu kuantil tahminleri verir, ancak örneklem dışı kapsamanın kalibre edilmiş olmasını garanti etmez. Durağan olmayan, rejim değiştiren piyasalarda bu aralıklar sıklıkla yanlış kalibre edilir -- nominal %80'lik aralık, gerçekleşmelerin %80'inden çok daha azını (ya da daha fazlasını) kapsayabilir. Kuantilleri, kapsama/güvenilirlik testleriyle ampirik olarak doğrulanması gereken tahminler olarak ele alın ve kapsama garantilerine ihtiyacınız varsa bunları konformal tahmin ile sıkılaştırın. Bu konuya canlı dağıtım bölümünde geri döneceğiz.

TFT vs LSTM vs Sade Transformer

TFT'ye karşı LSTM'e karşı sade bir transformer: farklı keskinlikte tahminler üreten üç tahmin mimarisi

TFT'nin diğer mimarilere göre nerede durduğunu anlamak, onu ne zaman kullanacağınıza karar vermeye yardımcı olur.

Özellik LSTM Sade Transformer TFT
Uzun menzilli bağımlılıklar Sınırlı (yok olan gradyanlar) Güçlü (öz-dikkat) Güçlü (LSTM + dikkat)
Değişken seçimi Yok (manuel öznitelik mühendisliği) Yok Yerleşik VSN
Yorumlanabilirlik Opak Dikkat ağırlıkları (gürültülü) Yapılandırılmış dikkat + değişken önemi
Statik ortak değişkenler Gelişigüzel birleştirme Gelişigüzel birleştirme Özel kodlama boru hattı
Çok ufuklu çıktı Otoregresif (hata birikimi) Doğrudan ya da otoregresif (kod çözmeye bağlı) Doğrudan (paralel)
Bilinen gelecekteki girdiler Hantal işleme Yerel ayrım yok Açık girdi ayrımı
Olasılıksal çıktı Değişiklik gerektirir Değişiklik gerektirir Yerel kuantil regresyonu
Eğitim kararlılığı Orta Küçük veride sıklıkla kararsız Kararlı (kapılama yardımcı olur)

LSTM'in Hâlâ Kazandığı Yerler

LSTM'ler, geriye bakış penceresinin kısa olduğu ve yerel otoregresif yapının baskın olduğu çok kısa vadeli tahminlerde (tick düzeyi, dakika altı) rekabetçi olmaya devam ediyor. Ayrıca dağıtımı daha basittir ve çıkarımda daha düşük gecikmeye sahiptir. Milisaniye altı tahminlere ihtiyaç duyan bir market-making botu için LSTM hâlâ pratik tercihtir.

Sade Transformer'ların Yetersiz Kaldığı Yerler

Finansal zaman serisine naif bir şekilde uygulanan standart transformer'lar çoğu zaman aşırı uyum gösterir. Zamansal veri için gereken endüktif önyargılardan yoksundurlar -- statik ve zamanla değişen öznitelikler kavramı yoktur, değişken seçimi yoktur ve standart birleştirilmiş çok başlı dikkat, anlamlı bir şekilde yorumlanması zor dikkat haritaları üretir.

TFT'nin Üstün Olduğu Yerler

TFT, şunlara sahip olduğunuzda en uygunudur: (1) birden çok heterojen girdi türü, (2) kesitsel veri (çok sayıda varlık), (3) çok ufuklu olasılıksal tahminlere ihtiyaç ve (4) model yorumlanabilirliği gereksinimi. Bu, esasen her kurumsal portföy tahmin problemini tanımlar.

PyTorch Forecasting ile Python Uygulaması

İşte pytorch-forecasting kütüphanesini kullanarak çok varlıklı portföy getiri tahmini için TFT'nin pratik bir uygulaması.

Veri Hazırlama

Gerçek bilinen-gelecek girdilerinin -- day_of_week, days_to_earnings, is_fomc, days_to_expiry -- kasıtlı kullanımına dikkat edin. Bunlar, tahmin penceresi için önceden bildiğimiz değerlerdir ve bunları bilinen gerçek sayılar/kategorikler olarak beslemek, tam olarak mimarinin etrafında inşa edildiği TFT yeteneğidir. Ham time_idx'i bilinen gerçek sayılardan çıkarıyoruz: add_relative_time_idx=True zaten göreli bir konum indeksi enjekte eder ve ham monoton bir sayaç çoğunlukla trend sızdırır.

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 işlem günü geriye bakış (~3 ay)
max_prediction_length = 20 # 20 işlem günü ilerisi (~1 ay)

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
)

Model Tanımı ve Eğitim

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 kuantil
    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,
)

Yorumlanabilir Çıktıları Çıkarma

Yorumlanabilirlik çağrısının belirgin olmayan bir gereksinimi vardır: interpret_output(), predict()'in yalnızca mode="raw" altında ürettiği ham çıktı sözlüğünü (encoder_variables, decoder_variables, static_variables, encoder_attention, ... gibi anahtarlarla) tüketir. Bunu bir kez hesaplayın, ardından aynı nesneyi hem değişken önemi hem de dikkat için yeniden kullanın.

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"]

Tahminlerden Portföy Ağırlıklarına

def forecasts_to_portfolio_weights(
    predictions: dict,
    index: pd.DataFrame,
    risk_aversion: float = 2.0,
) -> pd.DataFrame:
    """
    TFT çok ufuklu kuantil tahminlerini, ortalama-varyans-ESİNLİ bir skor
    kullanarak yalnızca-uzun portföy ağırlıklarına dönüştürür (tam bir
    optimizasyon değil: burada kovaryans matrisi yoktur, yalnızca varlık başına
    riske göre düzeltilmiş bir skor vardır).

    Medyan tahmini beklenen getiri olarak ve (q90 - q10)'u tahmin belirsizliği
    için bir vekil olarak kullanır.
    """
    preds = predictions["prediction"]

    median_return = preds[:, :, 3].mean(dim=1).numpy()  # ufuklar genelinde ort.
    q90 = preds[:, :, 5].mean(dim=1).numpy()
    q10 = preds[:, :, 1].mean(dim=1).numpy()
    forecast_uncertainty = q90 - q10  # %80 PA'nın genişliği

    scores = median_return / (risk_aversion * forecast_uncertainty + 1e-8)

    result = index[["asset_id"]].copy()
    result["score"] = scores
    result["raw_weight"] = np.maximum(scores, 0)  # yalnızca-uzun

    total = result["raw_weight"].sum()
    result["weight"] = result["raw_weight"] / (total + 1e-8)

    return result[["asset_id", "weight", "score"]]

Pratikte Yorumlanabilirlik: TFT Piyasalar Hakkında Neyi Ortaya Koyuyor

TFT yorumlanabilirliği: modelin hangi girdilere ve zaman adımlarına dayandığını ortaya koyan dikkat ve değişken önemi ağırlıkları

TFT'nin yorumlanabilirlik çıktıları akademik meraklar değildir -- portföy yöneticileri için eyleme dönüştürülebilir istihbarat sağlarlar.

Rejimler Genelinde Değişken Önemi

Değişken seçim ağırlıklarını zaman içinde incelediğinizde, piyasa sezgisiyle örtüşen kalıplar ortaya çıkar:

  • 2022 faiz artırım döngüsü sırasında: getiri eğrisi öznitelikleri (yield_spread, fed_funds_rate) değişken öneminde baskın hâle geldi ve seçim ağırlığının %35-40'ını oluşturdu. Teknik göstergeler %10'un altına düştü.
  • 2024 yapay zeka odaklı yükseliş sırasında: momentum öznitelikleri (rsi_14, macd) önemde büyük artış gösterdi. Yükseliş büyük ölçüde teknolojide yoğunlaştığı için sektör düzeyindeki statik ortak değişkenler de anlamlı hâle geldi.
  • Yatay seyreden dönemlerde: ortalamaya dönüş göstergeleri (bb_width, relative_value) en yüksek ağırlıkları aldı, trend takip eden öznitelikler ise kapılama mekanizması tarafından bastırıldı.

İşte bu, GRN kapılamasının iş başında olduğu durumdur. Momentum öznitelikleri hiçbir sinyal taşımadığında, GLU kapıları onların katkısını sıfıra doğru sürer ve model otomatik olarak alternatif özniteliklere kayar. (Bunlar keşif amaçlı çalıştırmalardan alınan örnekleyici kalıplardır, kıyaslanmış sonuçlar değildir -- bunları kendi verinizde doğrulayın.)

Zamansal Dikkat Kalıpları

Dikkat ağırlığı görselleştirmesi, modelin etkin bellek yapısını ortaya koyar:

  • Kısa vadeli dikkat zirveleri: 1-5 gecikmelerindeki güçlü dikkat, otokorelasyonu ve kısa vadeli momentum/dönüş etkilerini yansıtır.
  • Haftalık kalıplar: 5, 10, 15 gecikmelerindeki dikkat sıçramaları haftalık takvim etkilerine karşılık gelir.
  • Aylık kalıplar: 21 gecikme (bir işlem ayı) civarındaki tutarlı bir dikkat zirvesi, aylık yeniden dengeleme akışlarını ve opsiyon vadesi etkilerini yakalar.
  • Kazanç döngüsü: Bireysel hisseler için dikkat, üç aylık kazanç tarihlerine karşılık gelen ~63 ve ~126 gün gecikmelerinde keskin sıçramalar gösterir.

Bu kalıplar, modelin gürültüye uyum sağlamak yerine anlamlı zamansal yapı öğrendiğine dair bağımsız bir doğrulama sağlar.

Gerçek Dünya Performansı ve Uygulamaları

Kıyaslama Sonuçları

Orijinal makaleden ve sonraki araştırmalardan, TFT güçlü ve iyi belgelenmiş performans sergiler:

  • Makalenin kıyaslama veri kümeleri (elektrik, trafik, perakende, oynaklık) genelinde bir sonraki en iyi modele kıyasla ortalama %7 daha düşük P50 ve %9 daha düşük P90 kuantil kaybı ve veri kümesine bağlı olarak en güçlü rakip referans modele göre %3-26 iyileşme. Belirli rakip veri kümesine göre değişir -- örneğin DeepAR, elektrik ve trafikte daha zayıf referans modeller arasındadır ancak perakende ve oynaklıkta daha rekabetçidir -- bu nedenle başlıktaki sayı, herhangi bir sabit referans modele göre değil, bir sonraki en iyi modele göre kazançtır.
  • Çok ufuklu metriklerde klasik ARIMA, ETS ve Prophet referans modellerini tutarlı bir şekilde geride bırakır.

Finansta Araştırma Yönelimleri

TFT, finansa özgü aktif bir araştırma çizgisi doğurdu. Birkaç temsili konu, gerçek raporlanan metrikleriyle birlikte (bunların herhangi birine güvenmeden önce kaynak gösterin ve yeniden üretin):

  • Kripto için uyarlamalı / çok ölçekli TFT. Adaptive Temporal Fusion Transformers for Cryptocurrency Price Prediction (arXiv:2509.10542) gibi çalışmalar, kripto fiyat tahmininde sabit uzunluklu TFT ve LSTM referans modellerine göre iyileşmeler bildiriyor. İşlem kârlılığı sayılarını evrensel değil, makaleye özgü ve rejime bağlı olarak ele alın -- burada kasıtlı olarak mutlak bir Sharpe farkı belirtmiyoruz, çünkü literatürde dolaşan rakamlar çoğu zaman tahmin doğruluğunu gerçekleşen Sharpe ile birbirine karıştırır.
  • Sharpe farkındalıklı amaçlar. MDPI Sensors "çok sensörlü TFT / uyarlamalı Sharpe oranı" çalışma çizgisi, doğrudan Sharpe tarzı bir amaca doğru optimize eder; başlıktaki sonucunun, mutlak bir Sharpe artışından farklı bir nicelik olan Sharpe oranı tahmin doğruluğunda kabaca %18'lik bir iyileşme olduğuna dikkat edin.
  • Hibrit TFT-GNN modelleri. Varlıklar arası bağımlılıkları yakalamak için TFT'yi graf sinir ağlarıyla birleştirir; hibritlerin kesitsel hisse tahmininde bağımsız TFT'yi geride bıraktığı bildirilmiştir.
  • Çapraz modal zamansal füzyon. Yapılandırılmış fiyat verisini, yapılandırılmamış veriyle (haberler, kazanç çağrısı transkriptleri) transformer füzyon katmanları aracılığıyla bütünleştirir ve TFT paradigmasını çok modlu finansal veriye genişletir.

Bu yönelimler gerçektir, ancak hiçbiri kullanıma hazır bir avantaj değildir. Dağıtmadan önce metrikleri kendi evreniniz ve maliyetleriniz üzerinde yeniden üretin.

Canlı Dağıtım için Pratik Değerlendirmeler

Veri gereksinimleri: TFT, önemli miktarda eğitim verisine ihtiyaç duyar. Varlık başına en az 2-3 yıllık günlük veri ya da 6-12 aylık saatlik veri planlayın. Kesitsel veri (çok sayıda varlık) önemli ölçüde yardımcı olur -- 500 hisse üzerinde aynı anda eğitmek, 500 ayrı model eğitmekten daha etkilidir.

Öznitelik mühendisliği: TFT değişken seçimini otomatik olarak yapsa da, aday özniteliklerin kalitesi hâlâ önemlidir. Teknik, temel, makro ve alternatif veriyi kapsayan çeşitli bir öznitelik kümesi dahil edin. Neyin yararlı olduğunu VSN belirlesin.

Hesaplama maliyeti: TFT'nin eğitimi LSTM'den daha pahalıdır ancak sade transformer'larla karşılaştırılabilir. Tek bir A100 GPU'da, 3 yıllık günlük veriyle 500 hisse üzerinde eğitim, 100 epoch için birkaç saat mertebesinde sürer. Çıkarım hızlıdır -- tüm evren için tahmin üretmek bir saniyenin epey altında sürer.

Kalibrasyonu doğrulayın, varsaymayın. Herhangi bir kuantil pozisyon büyüklüğünü yönlendirmeden önce, örneklem dışı veride ampirik kapsamayı kontrol edin: nominal %80'lik aralık gerçekten gerçekleşen getirilerin ~%80'ini içeriyor mu? Durağan olmayan piyasalarda çoğu zaman içermeyecektir. Ufuk başına güvenilirlik diyagramları çalıştırın ve kapsama garantilerini geri kazanmak için modeli konformal tahminle sarmayı düşünün.

Rejim uyarlaması: TFT, rejim değişimlerini açıkça modellemez (HMM'lerin aksine). Ancak kapılama mekanizması örtük rejim uyarlaması sağlar. Pratikte, genişleyen bir pencereyle aylık olarak yeniden eğitmek yapısal değişiklikleri etkili bir şekilde yakalar.

Aşırı uyumu azaltma: Finansal veri gürültülü ve durağan değildir. Agresif düzenlileştirme kullanın: 0.1-0.3 dropout, 0.1'de gradyan kırpma, 10-15 epoch sabırla erken durdurma. İleri yürüyüş doğrulaması şarttır -- zaman serisinde asla rastgele eğitim/test bölmeleri kullanmayın.

Hepsini Bir Araya Getirmek: TFT Tabanlı Bir Portföy Boru Hattı

TFT odaklı bir portföy boru hattı: pozisyon büyüklüğü belirleme ve risk bütçelemeyi besleyen çok varlıklı olasılıksal tahminler

TFT tabanlı portföy yönetimi için canlı bir boru hattı şöyle görünür:

  1. Veri alımı: OHLCV, temel, makro ve alternatif veriyi günlük olarak toplayın. Gerçek bir bilinen-gelecek takvimi (kazanç, FOMC, vadeler, haftanın günü) dahil olmak üzere öznitelikleri (200+ aday) hesaplayın.
  2. Öznitelik deposu: Normalleştirilmiş, zaman indeksli bir öznitelik deposu tutun. Eksik veriyi, kurumsal işlemleri ve hayatta kalma yanlılığını ele alın.
  3. Model eğitimi: TFT'yi ileri yürüyüş metodolojisi kullanarak aylık olarak yeniden eğitin. Genişleyen bir pencereyle en son 3-5 yıllık veriyi kullanın.
  4. Tahmin üretimi: Tüm varlık evreni için 1, 5, 10 ve 20 günlük ufuklarda kuantil tahminleri üreten günlük çıkarım.
  5. Kalibrasyon kontrolü: Her kuantil aralığının kapsamını ufuk başına izleyin. Kapsama kaydığında yeniden kalibre edin (ya da konformal ayarlama uygulayın).
  6. Yorumlanabilirlik panosu: Değişken önemini ve dikkat ağırlıklarını görselleştirin. Anomalileri işaretleyin (ör. öznitelik öneminde ani kaymalar).
  7. Portföy optimizasyonu: Getiri ve belirsizlik girdilerini sağlayan TFT kuantilleriyle, ortalama-varyans, Black-Litterman ya da risk paritesi kullanarak tahminleri ağırlıklara dönüştürün.
  8. Risk katmanı: Kuyruk riski değerlendirmesi için 2. ve 98. yüzdelik tahminleri kullanın. Tahmin aralıkları genişlediğinde pozisyon büyüklüklerini azaltın.
  9. Yürütme: Hedef ağırlıkları yürütme motoruna iletin. Hedef ile gerçekleşen portföy arasındaki izleme hatasını izleyin.

Sonuç

Temporal Fusion Transformer, kantitatif portföy yönetimi için gerçek bir ilerlemeyi temsil eder. Finansal veriye fırlatılmış sıradan bir derin öğrenme modeli değildir -- çok ufuklu zamansal tahminin özgül zorlukları için sıfırdan tasarlanmış bir mimaridir: heterojen girdiler, kesitsel yapı, olasılıksal çıktılar ve yorumlanabilirliğe duyulan kritik ihtiyaç.

Değişken seçim ağları, modelin neye dikkat ettiğini söyler. Dikkat ağırlıkları, ne zaman baktığını söyler. Kapılama mekanizmaları, alakasız öznitelikleri ve rejim değişikliklerini zarif bir şekilde ele almasını sağlar. Ve kuantil çıktıları, risk yönetimi için belirsizlik tahminleri verir -- yeter ki kalibrasyonunu körü körüne kabul etmek yerine doğrulayın.

TFT bir sihirli değnek değildir. Finansal piyasalar, herhangi bir öngörü avantajının geçici ve rejime bağlı olduğu çekişmeli ortamlar olmaya devam eder. Ancak TFT, hem güçlü hem de anlaşılır tahmin sistemleri kurmak için ilkesel bir çerçeve sağlar -- ve canlı işlemde, modelinizin neden bir bahse girdiğini anlamak, en az bahsin kendisi kadar önemlidir.


Kaynaklar

  1. 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
  2. Oreshkin, B.N., Carpov, D., Chapados, N., & Bengio, Y. (2020). "N-BEATS: Neural basis expansion analysis for interpretable time series forecasting." ICLR 2020.
  3. Salinas, D., Flunkert, V., Gasthaus, J., & Januschowski, T. (2020). "DeepAR: Probabilistic forecasting with autoregressive recurrent networks." International Journal of Forecasting, 36(3), 1181-1191.
  4. pytorch-forecasting documentation -- PyTorch Lightning ile TFT uygulaması.
  5. google-research/tft -- Orijinal TFT referans uygulaması.
Sorumluluk Reddi: Bu makalede sağlanan bilgiler yalnızca eğitim ve bilgilendirme amaçlıdır ve finansal, yatırım veya ticaret tavsiyesi niteliği taşımaz. Kripto para ticareti önemli bir kayıp riski içerir.

Yazarlar

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

Piyasanın Önünde Olun

Özel yapay zeka ticaret içgörüleri, piyasa analizi ve platform güncellemeleri için bültenimize abone olun.

Gizliliğinize saygı duyuyoruz. İstediğiniz zaman abonelikten çıkabilirsiniz.