← Quay lại danh sách bài viết
June 22, 2026
5 phút đọc

Temporal Fusion Transformer cho dự báo danh mục đa tầm nhìn

Temporal Fusion Transformer cho dự báo danh mục đa tầm nhìn
#deep-learning
#transformer
#TFT
#forecasting
#portfolio
#quant
🧠
Part 1 of 4 · Collection
Deep Learning for Markets

Nỗi thất vọng lớn nhất khi áp dụng deep learning vào quản lý danh mục là vấn đề hộp đen. Bạn huấn luyện một mạng neural cho ra tỷ số Sharpe ấn tượng trong backtest, nhưng khi chiến lược bắt đầu thua lỗ trong môi trường thực tế, bạn không hề biết tại sao. Những đặc trưng đầu vào nào đã chi phối dự báo? Những tầm nhìn thời gian nào là quan trọng? Mô hình đang phản ứng với tín hiệu vĩ mô hay nhiễu vi cấu trúc?

Google Research đã giải quyết vấn đề này một cách trực diện với Temporal Fusion Transformer (TFT) -- một kiến trúc dựa trên attention mang lại khả năng dự báo đa tầm nhìn mạnh mẽ đồng thời cung cấp khả năng diễn giải tích hợp sẵn thông qua các trọng số attention và điểm số tầm quan trọng của biến. Trong các benchmark gốc, TFT giảm quantile loss trung bình 7% (P50) và 9% (P90) so với mô hình tốt thứ hai, và cải thiện 3-26% so với baseline cạnh tranh mạnh nhất trên các bộ dữ liệu kiểm thử. Đối với các nhà quản lý danh mục định lượng, TFT mang lại một điều hiếm có: một mô hình vừa mạnh mẽ vừa minh bạch.

Bài viết này phân tích kiến trúc TFT, chỉ ra cách áp dụng nó vào dự báo danh mục đa tầm nhìn, đi qua một phần triển khai bằng Python với pytorch-forecasting, và so sánh nó với các baseline LSTM và transformer thuần.

Tại sao dự báo đa tầm nhìn lại quan trọng với danh mục

Dự báo một bước truyền thống dự đoán một giá trị duy nhất tại thời điểm t+1t+1. Nhưng các quyết định phân bổ danh mục vận hành trên nhiều tầm nhìn cùng một lúc. Một nhà quản lý danh mục cần biết:

  • Tầm nhìn 1 ngày: Để tái cân bằng trong phiên và quản lý rủi ro
  • Tầm nhìn 1 tuần: Để dịch chuyển phân bổ chiến thuật
  • Tầm nhìn 1 tháng: Để phân bổ chiến lược và luân chuyển ngành
  • Tầm nhìn 1 quý: Để định vị theo yếu tố vĩ mô

Mỗi tầm nhìn có đặc tính tỷ lệ tín hiệu trên nhiễu khác nhau. Lợi suất ngắn hạn bị chi phối bởi vi cấu trúc và dòng lệnh. Lợi suất trung hạn phản ứng với momentum và hồi quy về trung bình. Lợi suất dài hạn bị chi phối bởi các yếu tố cơ bản và chế độ vĩ mô.

Một mô hình tạo ra dự báo trên tất cả các tầm nhìn này cùng một lúc -- với ước lượng phân vị về độ bất định của dự báo tại mỗi tầm nhìn -- về cơ bản hữu ích hơn nhiều so với các mô hình riêng biệt cho từng tầm nhìn. Đây chính xác là điều TFT cung cấp: cho trước một cửa sổ encoder gồm các quan sát quá khứ, nó xuất ra một tập các dự báo phân vị cho τ=1,2,,τmax\tau = 1, 2, \ldots, \tau_{max} bước phía trước.

Một cách hình thức, cho trước một chuỗi thời gian đa biến với các quan sát {yi,t,xi,t,si}\{y_{i,t}, \mathbf{x}_{i,t}, \mathbf{s}_i\} cho thực thể ii tại thời điểm tt, trong đó yy là mục tiêu, xt\mathbf{x}_t là các đặc trưng biến đổi theo thời gian, và si\mathbf{s}_i là metadata tĩnh, TFT học:

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)

trong đó qq là phân vị (cho phép dự báo theo xác suất), kk là cửa sổ nhìn lại, và τ\tau là tầm nhìn dự báo.

Kiến trúc TFT: Toàn bộ ngăn xếp

Ngăn xếp Temporal Fusion Transformer: mạng lựa chọn biến, mạng dư cổng, một encoder-decoder LSTM, và attention có thể diễn giải

TFT không phải là một transformer chung chung gắn đại lên chuỗi thời gian. Nó là một kiến trúc được xây dựng có mục đích với năm thành phần chuyên biệt, mỗi thành phần giải quyết một thách thức cụ thể trong dự báo thời gian.

1. Mạng dư cổng (GRN)

GRN là khối xây dựng nền tảng của TFT, được sử dụng xuyên suốt kiến trúc ở bất cứ nơi nào cần xử lý phi tuyến. Khác với một lớp feed-forward tiêu chuẩn, GRN tích hợp các kết nối tắt và cơ chế cổng cho phép mạng kiểm soát luồng thông tin một cách thích nghi.

Cho trước một đầu vào chính a\mathbf{a} và một vector ngữ cảnh tùy chọn c\mathbf{c}, GRN tính:

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)

trong đó:

η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)

Gated Linear Unit (GLU) là cơ chế cổng then chốt:

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)

trong đó σ\sigma là hàm sigmoid và \odot ký hiệu phép nhân theo từng phần tử. Cổng sigmoid học xem nên triệt tiêu những chiều nào của đầu vào, cho phép mô hình bỏ qua hoàn toàn phần xử lý phi tuyến không cần thiết khi dữ liệu không đòi hỏi. Điều này rất quan trọng với dữ liệu tài chính, nơi một số đặc trưng chỉ mang thông tin trong những chế độ nhất định.

2. Mạng lựa chọn biến (VSN)

Đây được cho là thành phần giá trị nhất cho các ứng dụng danh mục. Các bộ dữ liệu tài chính nổi tiếng là nhiễu, với hàng chục đặc trưng tiềm năng -- chỉ báo kỹ thuật, tỷ số cơ bản, biến vĩ mô, điểm số tâm lý -- nhiều trong số đó là dư thừa hoặc không liên quan tại bất kỳ thời điểm nào.

VSN tính các trọng số lựa chọn mềm trên tất cả các đặc trưng đầu vào:

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)

trong đó Ξt\boldsymbol{\Xi}_t là vector dàn phẳng của tất cả các đặc trưng đầu vào đã biến đổi tại thời điểm tt, và cs\mathbf{c}_s là một vector ngữ cảnh được suy ra từ metadata tĩnh. Mỗi đặc trưng riêng lẻ cũng được xử lý qua GRN riêng của nó:

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

Biểu diễn được chọn cuối cùng là tổng có trọng số:

ξ~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

Trong bối cảnh danh mục, vχt(j)v_{\chi_t}^{(j)} cho bạn biết trực tiếp: "tại thời điểm tt, mô hình đã gán trọng số cho đặc trưng jj bằng ngần này." Bạn có thể phát hiện rằng RSI chiếm ưu thế trong các thị trường đi ngang, trong khi các đặc trưng đường cong lợi suất vĩ mô chiếm ưu thế trong các giai đoạn chuyển đổi chế độ. Đây không phải là một lời giải thích sau khi đã xảy ra -- nó được tích hợp ngay trong kiến trúc.

Có các VSN riêng biệt cho các biến đồng hành tĩnh, các đầu vào quan sát trong quá khứ, và các đầu vào tương lai đã biết. Sự tách biệt này tôn trọng cấu trúc nhân quả của bài toán dự báo: bạn không thể dùng các quan sát tương lai, nhưng bạn có thể dùng các sự kiện tương lai đã biết (ngày công bố lợi nhuận, các cuộc họp FOMC, ngày đáo hạn quyền chọn, hiệu ứng theo ngày trong tuần).

3. Bộ mã hóa biến đồng hành tĩnh

Trong dự báo danh mục, các biến đồng hành tĩnh đại diện cho metadata cấp thực thể không thay đổi theo thời gian: loại tài sản, ngành, sàn giao dịch, nhóm vốn hóa thị trường, hoặc khu vực địa lý. TFT xử lý chúng qua các GRN chuyên dụng để tạo ra bốn vector ngữ cảnh riêng biệt:

  • cs\mathbf{c}_s -- ngữ cảnh cho lựa chọn biến theo thời gian
  • ce\mathbf{c}_e -- ngữ cảnh cho việc làm giàu tĩnh các đặc trưng thời gian (áp dụng sau LSTM)
  • cc\mathbf{c}_c -- khởi tạo cell state cho LSTM
  • ch\mathbf{c}_h -- khởi tạo hidden state cho LSTM

Đây là cách TFT xử lý thông tin theo lát cắt ngang. Khi dự báo một danh mục gồm 500 cổ phiếu, các bộ mã hóa tĩnh cho phép mô hình học rằng cổ phiếu công nghệ và cổ phiếu tiện ích có động lực thời gian về cơ bản khác nhau, mà không cần các mô hình riêng biệt.

4. Xử lý thời gian: LSTM + Attention đa đầu có thể diễn giải

TFT sử dụng một pipeline xử lý thời gian hai giai đoạn kết hợp các thế mạnh của kiến trúc hồi quy và kiến trúc dựa trên attention.

Giai đoạn 1: Xử lý cục bộ với LSTM

Một encoder-decoder LSTM kiểu sequence-to-sequence xử lý chuỗi thời gian để bắt các mẫu thời gian cục bộ -- momentum ngắn hạn, hồi quy về trung bình, và cấu trúc tự hồi quy. Encoder xử lý cửa sổ nhìn lại; decoder xử lý các đầu vào tương lai đã biết. Cả hai được khởi tạo bằng các vector ngữ cảnh tĩnh cc\mathbf{c}_c (cell state) và ch\mathbf{c}_h (hidden state).

Giai đoạn 2: Phụ thuộc tầm xa với Attention đa đầu có thể diễn giải

Sau xử lý cục bộ, TFT áp dụng một cơ chế self-attention được điều chỉnh để học các phụ thuộc tầm xa. Điều chỉnh then chốt nằm ở cách các attention head được tổng hợp. Attention đa đầu tiêu chuẩn nối các đầu ra của các head:

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

Thay vào đó, TFT chia sẻ values giữa các headlấy trung bình các trọng số attention:

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}

Lưu ý: WV\mathbf{W}_V không có chỉ số trên của head -- tất cả các head chia sẻ cùng một phép chiếu value. Điều này nghĩa là các trọng số attention từ mỗi head có thể được lấy trung bình một cách có ý nghĩa và được diễn giải như các điểm số tầm quan trọng theo thời gian. Với một dự đoán cho trước, bạn có thể trực quan hóa chính xác những bước thời gian quá khứ nào mà mô hình chú ý đến, và các mẫu attention khác nhau ra sao giữa các head.

Đối với dự báo danh mục, điều này cho thấy mô hình đang chú ý đến hành động giá gần đây (momentum), các mẫu lịch sử xa (tính mùa vụ), hay các sự kiện theo lịch cụ thể. Mỗi head có thể chuyên biệt hóa vào một mẫu thời gian khác nhau.

5. Lớp đầu ra phân vị

Lớp cuối cùng xuất ra các dự đoán tại nhiều phân vị, được tối ưu với quantile loss:

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)

trong đó Q\mathcal{Q} là tập các phân vị mục tiêu (ví dụ, {0.1,0.5,0.9}\{0.1, 0.5, 0.9\}). Điều này cho bạn không chỉ một dự báo điểm, mà còn một ước lượng phân vị về khoảng dự báo tại mỗi tầm nhìn. Đối với quản lý rủi ro danh mục, các dự báo phân vị thứ 10 và 90 cung cấp thông tin cho việc xác định cỡ vị thế và mức cắt lỗ.

Một điều cần nói trước: tối thiểu hóa pinball loss cho ra các ước lượng phân vị có điều kiện, nhưng nó không đảm bảo độ bao phủ ngoài mẫu đã được hiệu chỉnh. Trên các thị trường không dừng, chuyển đổi chế độ, các khoảng này thường bị hiệu chỉnh sai -- khoảng danh nghĩa 80% có thể bao phủ ít hơn (hoặc nhiều hơn) 80% các kết quả thực tế rất nhiều. Hãy coi các phân vị như các ước lượng cần được kiểm chứng theo thực nghiệm bằng các kiểm định độ bao phủ/độ tin cậy, và siết chặt chúng bằng conformal prediction nếu bạn cần đảm bảo độ bao phủ. Chúng tôi sẽ quay lại điều này trong phần triển khai môi trường thực tế.

TFT so với LSTM so với Transformer thuần

TFT so với LSTM so với một transformer thuần: ba kiến trúc dự báo tạo ra các dự báo với độ sắc nét khác nhau

Hiểu được vị trí của TFT so với các kiến trúc khác giúp quyết định khi nào nên dùng nó.

Đặc điểm LSTM Transformer thuần TFT
Phụ thuộc tầm xa Hạn chế (gradient tiêu biến) Mạnh (self-attention) Mạnh (LSTM + attention)
Lựa chọn biến Không có (kỹ thuật đặc trưng thủ công) Không có Tích hợp sẵn VSN
Khả năng diễn giải Mờ đục Trọng số attention (nhiễu) Attention có cấu trúc + tầm quan trọng của biến
Biến đồng hành tĩnh Nối kiểu chắp vá Nối kiểu chắp vá Pipeline mã hóa chuyên dụng
Đầu ra đa tầm nhìn Tự hồi quy (tích lũy sai số) Trực tiếp hoặc tự hồi quy (phụ thuộc cách giải mã) Trực tiếp (song song)
Đầu vào tương lai đã biết Xử lý vụng về Không phân biệt nguyên bản Tách biệt đầu vào tường minh
Đầu ra theo xác suất Cần chỉnh sửa Cần chỉnh sửa Hồi quy phân vị nguyên bản
Độ ổn định huấn luyện Trung bình Thường không ổn định trên dữ liệu nhỏ Ổn định (cổng giúp ích)

Khi LSTM vẫn thắng

LSTM vẫn cạnh tranh được cho dự báo cực ngắn hạn (cấp tick, dưới một phút) nơi cửa sổ nhìn lại ngắn và cấu trúc tự hồi quy cục bộ chiếm ưu thế. Chúng cũng đơn giản hơn để triển khai, với độ trễ thấp hơn khi suy luận. Với một bot tạo lập thị trường cần các dự đoán dưới một mili-giây, LSTM vẫn là lựa chọn thực dụng.

Khi Transformer thuần thất bại

Các transformer tiêu chuẩn áp dụng một cách ngây thơ vào chuỗi thời gian tài chính thường bị overfit. Chúng thiếu các thiên kiến quy nạp cần thiết cho dữ liệu thời gian -- không có khái niệm về đặc trưng tĩnh so với biến đổi theo thời gian, không có lựa chọn biến, và attention đa đầu nối ghép tiêu chuẩn tạo ra các bản đồ attention khó diễn giải một cách có ý nghĩa.

Khi TFT vượt trội

TFT là tối ưu khi bạn có: (1) nhiều loại đầu vào không đồng nhất, (2) dữ liệu theo lát cắt ngang (nhiều tài sản), (3) nhu cầu dự báo theo xác suất đa tầm nhìn, và (4) yêu cầu về khả năng diễn giải mô hình. Điều này về cơ bản mô tả mọi bài toán dự báo danh mục cấp tổ chức.

Triển khai bằng Python với PyTorch Forecasting

Đây là một phần triển khai thực tế của TFT cho dự báo lợi suất danh mục đa tài sản sử dụng thư viện pytorch-forecasting.

Chuẩn bị dữ liệu

Lưu ý việc chủ ý sử dụng các đầu vào tương lai đã biết thực sự -- day_of_week, days_to_earnings, is_fomc, days_to_expiry. Đây là các giá trị mà chúng ta biết trước cho cửa sổ dự báo, và đưa chúng vào dưới dạng known reals/categoricals chính là khả năng TFT mà kiến trúc được xây dựng xoay quanh. Chúng ta loại bỏ time_idx thô khỏi các known reals: add_relative_time_idx=True đã chèn sẵn một chỉ số vị trí tương đối, và một bộ đếm đơn điệu thô thì chủ yếu rò rỉ xu hướng.

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 trading days lookback (~3 months)
max_prediction_length = 20 # 20 trading days ahead (~1 month)

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
)

Định nghĩa mô hình và huấn luyện

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

Trích xuất các đầu ra có thể diễn giải

Lời gọi diễn giải có một yêu cầu không hiển nhiên: interpret_output() tiêu thụ dict đầu ra thô (với các khóa như encoder_variables, decoder_variables, static_variables, encoder_attention, ...), mà predict() chỉ tạo ra dưới mode="raw". Hãy tính nó một lần, rồi tái sử dụng cùng một đối tượng cho cả tầm quan trọng của biến lẫn attention.

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

Từ dự báo đến trọng số danh mục

def forecasts_to_portfolio_weights(
    predictions: dict,
    index: pd.DataFrame,
    risk_aversion: float = 2.0,
) -> pd.DataFrame:
    """
    Convert TFT multi-horizon quantile forecasts into long-only portfolio
    weights using a mean-variance-INSPIRED score (not a full optimization:
    there is no covariance matrix here, only a per-asset risk-adjusted score).

    Uses the median forecast as the expected return and (q90 - q10) as a
    proxy for forecast uncertainty.
    """
    preds = predictions["prediction"]

    median_return = preds[:, :, 3].mean(dim=1).numpy()  # avg across horizons
    q90 = preds[:, :, 5].mean(dim=1).numpy()
    q10 = preds[:, :, 1].mean(dim=1).numpy()
    forecast_uncertainty = q90 - q10  # width of 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"]]

Khả năng diễn giải trong thực tế: TFT tiết lộ gì về thị trường

Khả năng diễn giải của TFT: các trọng số attention và tầm quan trọng của biến tiết lộ những đầu vào và bước thời gian nào mà mô hình dựa vào

Các đầu ra về khả năng diễn giải từ TFT không phải là những thứ học thuật hiếu kỳ -- chúng cung cấp thông tin tình báo có thể hành động cho các nhà quản lý danh mục.

Tầm quan trọng của biến qua các chế độ

Khi bạn xem xét các trọng số lựa chọn biến theo thời gian, các mẫu hình hiện ra phù hợp với trực giác thị trường:

  • Trong chu kỳ tăng lãi suất năm 2022: các đặc trưng đường cong lợi suất (yield_spread, fed_funds_rate) chiếm ưu thế về tầm quan trọng của biến, chiếm 35-40% trọng số lựa chọn. Các chỉ báo kỹ thuật giảm xuống dưới 10%.
  • Trong đợt tăng giá do AI dẫn dắt năm 2024: các đặc trưng momentum (rsi_14, macd) tăng vọt về tầm quan trọng. Các biến đồng hành tĩnh cấp ngành cũng trở nên đáng kể khi đợt tăng giá tập trung cao độ vào công nghệ.
  • Trong các giai đoạn đi ngang: các chỉ báo hồi quy về trung bình (bb_width, relative_value) nhận trọng số cao nhất, trong khi các đặc trưng đi theo xu hướng bị cơ chế cổng triệt tiêu.

Đây là cơ chế cổng GRN đang hoạt động. Khi các đặc trưng momentum không mang tín hiệu, các cổng GLU đẩy đóng góp của chúng về không, và mô hình tự động chuyển sang các đặc trưng thay thế. (Đây là các mẫu hình minh họa từ các lần chạy thăm dò, không phải kết quả đã được benchmark -- hãy kiểm chứng chúng trên dữ liệu của riêng bạn.)

Các mẫu attention theo thời gian

Trực quan hóa trọng số attention tiết lộ cấu trúc bộ nhớ hiệu dụng của mô hình:

  • Đỉnh attention ngắn hạn: Attention mạnh tại các độ trễ 1-5 phản ánh tự tương quan và các hiệu ứng momentum/đảo chiều ngắn hạn.
  • Mẫu hình theo tuần: Các đột biến attention tại độ trễ 5, 10, 15 tương ứng với các hiệu ứng lịch theo tuần.
  • Mẫu hình theo tháng: Một đỉnh attention nhất quán quanh độ trễ 21 (một tháng giao dịch) bắt được các dòng tái cân bằng theo tháng và các hiệu ứng đáo hạn quyền chọn.
  • Chu kỳ lợi nhuận: Đối với từng cổ phiếu riêng lẻ, attention cho thấy các đột biến sắc nét tại độ trễ khoảng 63 và 126 ngày, tương ứng với các ngày công bố lợi nhuận theo quý.

Những mẫu hình này cung cấp một xác nhận độc lập rằng mô hình đã học được cấu trúc thời gian có ý nghĩa thay vì khớp với nhiễu.

Hiệu suất và ứng dụng trong thế giới thực

Kết quả benchmark

Từ bài báo gốc và nghiên cứu tiếp theo, TFT thể hiện hiệu suất mạnh mẽ, được ghi chép rõ ràng:

  • Quantile loss P50 thấp hơn 7% và P90 thấp hơn 9% trung bình so với mô hình tốt thứ hai trên các bộ dữ liệu benchmark của bài báo (điện, giao thông, bán lẻ, biến động), và cải thiện 3-26% so với baseline cạnh tranh mạnh nhất tùy theo bộ dữ liệu. Đối thủ cụ thể thay đổi theo từng bộ dữ liệu -- ví dụ, DeepAR nằm trong số các baseline yếu hơn trên điện và giao thông nhưng cạnh tranh hơn trên bán lẻ và biến động -- vì vậy con số tiêu đề là mức tăng so với mô hình tốt thứ hai, chứ không phải so với bất kỳ baseline cố định đơn lẻ nào.
  • Liên tục vượt trội so với các baseline ARIMA, ETS và Prophet cổ điển trên các chỉ số đa tầm nhìn.

Các hướng nghiên cứu trong tài chính

TFT đã khởi sinh một dòng nghiên cứu chuyên về tài chính đầy sôi động. Một vài luồng tiêu biểu, cùng các chỉ số thực tế được báo cáo của chúng (hãy trích dẫn và tái lập trước khi dựa vào bất kỳ chỉ số nào):

  • TFT thích nghi / đa tỷ lệ cho crypto. Các công trình như Adaptive Temporal Fusion Transformers for Cryptocurrency Price Prediction (arXiv:2509.10542) báo cáo cải thiện so với các baseline TFT độ dài cố định và LSTM trên dự đoán giá crypto. Hãy coi các con số về khả năng sinh lời giao dịch là đặc thù theo bài báo và phụ thuộc chế độ chứ không phổ quát -- chúng tôi cố ý không trích một mức chênh Sharpe tuyệt đối ở đây, bởi các con số lưu hành trong tài liệu thường nhập nhằng giữa độ chính xác dự đoánSharpe thực hiện.
  • Các hàm mục tiêu nhận biết Sharpe. Dòng công trình "multi-sensor TFT / adaptive Sharpe ratio" trên MDPI Sensors tối ưu trực tiếp hướng tới một mục tiêu kiểu Sharpe; lưu ý rằng kết quả tiêu đề của nó đại khái là cải thiện 18% về độ chính xác dự đoán tỷ số Sharpe, vốn là một đại lượng khác với mức tăng Sharpe tuyệt đối.
  • Các mô hình lai TFT-GNN. Kết hợp TFT với mạng neural đồ thị để bắt các phụ thuộc giữa các tài sản, với các mô hình lai được báo cáo là vượt trội hơn TFT độc lập trên dự đoán cổ phiếu theo lát cắt ngang.
  • Hợp nhất thời gian đa phương thức. Tích hợp dữ liệu giá có cấu trúc với dữ liệu không cấu trúc (tin tức, bản ghi cuộc họp công bố lợi nhuận) thông qua các lớp hợp nhất transformer, mở rộng mô thức TFT sang dữ liệu tài chính đa phương thức.

Những hướng này là có thật, nhưng không hướng nào trong số đó là một lợi thế dùng-ngay. Hãy tái lập các chỉ số trên vũ trụ tài sản và chi phí của riêng bạn trước khi triển khai.

Các cân nhắc thực tế cho môi trường sản xuất

Yêu cầu dữ liệu: TFT cần lượng dữ liệu huấn luyện đáng kể. Hãy lên kế hoạch cho ít nhất 2-3 năm dữ liệu hàng ngày cho mỗi tài sản, hoặc 6-12 tháng dữ liệu theo giờ. Dữ liệu theo lát cắt ngang (nhiều tài sản) giúp ích đáng kể -- huấn luyện trên 500 cổ phiếu cùng lúc hiệu quả hơn huấn luyện 500 mô hình riêng biệt.

Kỹ thuật đặc trưng: Mặc dù TFT thực hiện lựa chọn biến tự động, chất lượng của các đặc trưng ứng viên vẫn quan trọng. Hãy đưa vào một tập đặc trưng đa dạng trải rộng dữ liệu kỹ thuật, cơ bản, vĩ mô và dữ liệu thay thế. Để VSN xác định cái gì hữu ích.

Chi phí tính toán: TFT đắt hơn để huấn luyện so với LSTM nhưng tương đương với transformer thuần. Trên một GPU A100 đơn, huấn luyện trên 500 cổ phiếu với 3 năm dữ liệu hàng ngày mất cỡ vài giờ cho 100 epoch. Suy luận thì nhanh -- tạo ra dự báo cho toàn bộ vũ trụ tài sản mất dưới một giây rất nhiều.

Hãy kiểm chứng việc hiệu chỉnh, đừng giả định nó. Trước khi bất kỳ phân vị nào chi phối việc xác định cỡ vị thế, hãy kiểm tra độ bao phủ thực nghiệm trên dữ liệu ngoài mẫu: khoảng danh nghĩa 80% có thực sự chứa khoảng 80% lợi suất thực hiện không? Trên các thị trường không dừng, thường là không. Hãy chạy các biểu đồ độ tin cậy cho từng tầm nhìn, và cân nhắc bọc mô hình trong conformal prediction để khôi phục các đảm bảo về độ bao phủ.

Thích nghi chế độ: TFT không mô hình hóa tường minh các chuyển đổi chế độ (khác với HMM). Tuy nhiên, cơ chế cổng cung cấp khả năng thích nghi chế độ ngầm định. Trong thực tế, tái huấn luyện hàng tháng với cửa sổ mở rộng bắt được các thay đổi cấu trúc một cách hiệu quả.

Giảm thiểu overfitting: Dữ liệu tài chính nhiễu và không dừng. Hãy dùng điều chuẩn mạnh tay: dropout 0.1-0.3, cắt gradient tại 0.1, dừng sớm với độ kiên nhẫn 10-15 epoch. Kiểm chứng walk-forward là thiết yếu -- đừng bao giờ dùng phân chia train/test ngẫu nhiên trên chuỗi thời gian.

Ghép tất cả lại: Một pipeline danh mục dựa trên TFT

Một pipeline danh mục do TFT dẫn dắt: các dự báo theo xác suất đa tài sản cấp dữ liệu cho việc xác định cỡ vị thế và phân bổ ngân sách rủi ro

Một pipeline sản xuất cho quản lý danh mục dựa trên TFT trông như thế này:

  1. Nạp dữ liệu: Thu thập dữ liệu OHLCV, cơ bản, vĩ mô và thay thế hàng ngày. Tính các đặc trưng (hơn 200 ứng viên), bao gồm một lịch tương lai đã biết thực sự (lợi nhuận, FOMC, đáo hạn, ngày trong tuần).
  2. Kho đặc trưng: Duy trì một kho đặc trưng được chuẩn hóa, lập chỉ mục theo thời gian. Xử lý dữ liệu thiếu, các hành động doanh nghiệp, và thiên kiến sống sót.
  3. Huấn luyện mô hình: Tái huấn luyện TFT hàng tháng bằng phương pháp walk-forward. Dùng dữ liệu 3-5 năm gần nhất với một cửa sổ mở rộng.
  4. Tạo dự báo: Suy luận hàng ngày tạo ra các dự báo phân vị tại các tầm nhìn 1, 5, 10 và 20 ngày cho toàn bộ vũ trụ tài sản.
  5. Kiểm tra hiệu chỉnh: Theo dõi độ bao phủ của mỗi khoảng phân vị cho từng tầm nhìn. Hiệu chỉnh lại (hoặc áp dụng điều chỉnh conformal) khi độ bao phủ trôi dạt.
  6. Bảng điều khiển khả năng diễn giải: Trực quan hóa tầm quan trọng của biến và các trọng số attention. Gắn cờ các bất thường (ví dụ, các dịch chuyển đột ngột về tầm quan trọng của đặc trưng).
  7. Tối ưu danh mục: Chuyển dự báo thành trọng số bằng mean-variance, Black-Litterman, hoặc risk parity, với các phân vị TFT cung cấp đầu vào về lợi suất và độ bất định.
  8. Lớp phủ rủi ro: Dùng các dự báo phân vị thứ 2 và 98 để đánh giá rủi ro đuôi. Giảm cỡ vị thế khi các khoảng dự báo mở rộng.
  9. Thực thi: Chuyển các trọng số mục tiêu tới engine thực thi. Theo dõi sai số bám giữa danh mục mục tiêu và danh mục thực hiện.

Kết luận

Temporal Fusion Transformer đại diện cho một bước tiến thực sự trong quản lý danh mục định lượng. Nó không chỉ là một mô hình deep learning nữa được ném vào dữ liệu tài chính -- nó là một kiến trúc được thiết kế từ nền móng cho những thách thức cụ thể của dự báo thời gian đa tầm nhìn: đầu vào không đồng nhất, cấu trúc theo lát cắt ngang, đầu ra theo xác suất, và nhu cầu thiết yếu về khả năng diễn giải.

Các mạng lựa chọn biến cho bạn biết mô hình đang chú ý đến cái gì. Các trọng số attention cho bạn biết nó nhìn vào khi nào. Các cơ chế cổng đảm bảo nó xử lý một cách uyển chuyển các đặc trưng không liên quan và các thay đổi chế độ. Và các đầu ra phân vị cho bạn các ước lượng độ bất định cho quản lý rủi ro -- miễn là bạn kiểm chứng việc hiệu chỉnh của chúng thay vì tin tưởng một cách mù quáng.

TFT không phải là viên đạn bạc. Các thị trường tài chính vẫn là những môi trường đối kháng nơi mọi lợi thế dự đoán đều tạm thời và phụ thuộc chế độ. Nhưng TFT cung cấp một khuôn khổ có nguyên tắc để xây dựng các hệ thống dự báo vừa mạnh mẽ vừa dễ hiểu -- và trong giao dịch thực tế, hiểu tại sao mô hình của bạn đặt cược cũng quan trọng như chính vụ đặt cược đó.


Tài liệu tham khảo

  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 -- TFT implementation with PyTorch Lightning.
  5. google-research/tft -- Original TFT reference implementation.
Tuyên bố miễn trừ trách nhiệm: Thông tin được cung cấp trong bài viết này chỉ nhằm mục đích giáo dục và thông tin, không cấu thành lời khuyên về tài chính, đầu tư hoặc giao dịch. Giao dịch tiền mã hóa tiềm ẩn rủi ro thua lỗ đáng kể.

Tác Giả

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

Đi Trước Thị Trường

Đăng ký nhận bản tin của chúng tôi để có những thông tin chuyên sâu độc quyền về AI trading, phân tích thị trường và các cập nhật nền tảng.

Chúng tôi tôn trọng quyền riêng tư của bạn. Hủy đăng ký bất kỳ lúc nào.