← العودة إلى قائمة المقالات
June 22, 2026
5 دقائق للقراءة

محولات الدمج الزمني للتنبؤ متعدد الآفاق بالمحافظ الاستثمارية

محولات الدمج الزمني للتنبؤ متعدد الآفاق بالمحافظ الاستثمارية
#deep-learning
#transformer
#TFT
#forecasting
#portfolio
#quant
🧠
Part 1 of 4 · Collection
Deep Learning for Markets

أكبر إحباط في تطبيق التعلم العميق على إدارة المحافظ هو مشكلة الصندوق الأسود. تدرب شبكة عصبية تنتج نسب شارب مبهرة في الاختبارات الرجعية، لكن عندما تبدأ الاستراتيجية بخسارة المال في بيئة الإنتاج، لا تملك أي فكرة عن السبب. أي من ميزات الإدخال هو الذي قاد التنبؤ؟ أي الآفاق الزمنية مهم؟ هل كان النموذج يستجيب لإشارات الاقتصاد الكلي أم لضجيج البنية الدقيقة؟

عالجت Google Research هذه المشكلة بشكل مباشر عبر محول الدمج الزمني (Temporal Fusion Transformer، أو TFT) -- وهو بنية معتمدة على الانتباه تقدم تنبؤا قويا متعدد الآفاق مع توفير قابلية تفسير مدمجة عبر أوزان الانتباه ودرجات أهمية المتغيرات. في المعايير القياسية الأصلية، خفض TFT خسارة الكميات بنسبة 7% (P50) و9% (P90) في المتوسط مقارنة بالنموذج الأفضل التالي، وتفوق على أقوى خط أساس منافس بنسبة 3-26% عبر مجموعات بيانات الاختبار. بالنسبة لمديري المحافظ الكميين، يقدم TFT شيئا نادرا: نموذجا قويا وشفافا في آن واحد.

تشرّح هذه المقالة بنية TFT، وتبين كيفية تطبيقها على التنبؤ متعدد الآفاق بالمحافظ، وتمر عبر تنفيذ بلغة Python باستخدام pytorch-forecasting، وتقارنها بخطوط الأساس المبنية على LSTM والمحول التقليدي.

لماذا يهم التنبؤ متعدد الآفاق للمحافظ

يتنبأ التنبؤ التقليدي أحادي الخطوة بقيمة واحدة في الزمن t+1t+1. لكن قرارات تخصيص المحافظ تعمل عبر آفاق متعددة في آن واحد. يحتاج مدير المحفظة إلى معرفة:

  • أفق يوم واحد: لإعادة التوازن خلال اليوم وإدارة المخاطر
  • أفق أسبوع واحد: لتحولات التخصيص التكتيكي
  • أفق شهر واحد: للتخصيص الاستراتيجي ودوران القطاعات
  • أفق ربع سنوي: للتموضع المدفوع بالاقتصاد الكلي

لكل أفق خصائص مختلفة من نسبة الإشارة إلى الضجيج. تهيمن البنية الدقيقة وتدفق الأوامر على العوائد قصيرة الأجل. وتستجيب العوائد متوسطة الأجل للزخم والارتداد إلى المتوسط. أما العوائد طويلة الأجل فتقودها الأساسيات وأنظمة الاقتصاد الكلي.

النموذج الذي ينتج تنبؤات عبر كل هذه الآفاق في آن واحد -- مع تقديرات كميّة لعدم اليقين في التنبؤ عند كل أفق -- هو أكثر فائدة جوهريا من نماذج منفصلة لكل أفق. وهذا بالضبط ما يوفره TFT: بمعطى نافذة ترميز من الملاحظات الماضية، يخرج مجموعة من التنبؤات الكميّة للخطوات τ=1,2,,τmax\tau = 1, 2, \ldots, \tau_{max} المستقبلية.

رسميا، بمعطى سلسلة زمنية متعددة المتغيرات بملاحظات {yi,t,xi,t,si}\{y_{i,t}, \mathbf{x}_{i,t}, \mathbf{s}_i\} للكيان ii في الزمن tt، حيث yy هو الهدف، وxt\mathbf{x}_t هي الميزات المتغيرة زمنيا، وsi\mathbf{s}_i هي البيانات الوصفية الثابتة، يتعلم TFT:

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)

حيث qq هي الكمية (ما يتيح التنبؤات الاحتمالية)، وkk هي نافذة الاسترجاع، وτ\tau هو أفق التنبؤ.

بنية TFT: المكدس الكامل

مكدس محول الدمج الزمني: شبكات اختيار المتغيرات، الشبكات المتبقية المبوبة، مرمّز-مفكّك LSTM، والانتباه القابل للتفسير

TFT ليس محولا عاما ملصقا على السلاسل الزمنية. إنه بنية مصممة لغرض محدد بخمسة مكونات متخصصة، يعالج كل منها تحديا محددا في التنبؤ الزمني.

1. الشبكات المتبقية المبوبة (GRN)

GRN هي اللبنة الأساسية لبناء TFT، وتستخدم في جميع أنحاء البنية حيثما تطلب الأمر معالجة غير خطية. على عكس الطبقة التغذوية الأمامية القياسية، تدمج GRN وصلات التخطي وآليات التبويب التي تتيح للشبكة التحكم التكيفي في تدفق المعلومات.

بمعطى إدخال أساسي a\mathbf{a} وشعاع سياق اختياري c\mathbf{c}، تحسب GRN:

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)

حيث:

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

الوحدة الخطية المبوبة (GLU) هي آلية التبويب الأساسية:

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)

حيث σ\sigma هي الدالة السينية و\odot يدل على الضرب عنصرا بعنصر. تتعلم البوابة السينية أي أبعاد الإدخال يجب كبتها، ما يتيح للنموذج تخطي المعالجة غير الخطية غير الضرورية كليا عندما لا تتطلبها البيانات. هذا حاسم بالنسبة للبيانات المالية حيث تكون بعض الميزات معلوماتية فقط في أنظمة معينة.

2. شبكات اختيار المتغيرات (VSN)

يمكن القول إن هذا أكثر المكونات قيمة لتطبيقات المحافظ. مجموعات البيانات المالية معروفة بكونها مليئة بالضجيج، مع عشرات الميزات المحتملة -- المؤشرات الفنية، والنسب الأساسية، ومتغيرات الاقتصاد الكلي، ودرجات المعنويات -- وكثير منها زائد عن الحاجة أو غير ذي صلة في أي لحظة معينة.

تحسب VSN أوزان اختيار ناعمة على جميع ميزات الإدخال:

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)

حيث Ξt\boldsymbol{\Xi}_t هو الشعاع المسطح لجميع ميزات الإدخال المحوّلة في الزمن tt، وcs\mathbf{c}_s هو شعاع سياق مشتق من البيانات الوصفية الثابتة. كما تتم معالجة كل ميزة فردية عبر GRN خاصة بها:

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

التمثيل النهائي المختار هو المجموع الموزون:

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

في سياق المحفظة، يخبرك vχt(j)v_{\chi_t}^{(j)} مباشرة: "في الزمن tt، وزن النموذج الميزة jj بهذا القدر." قد تكتشف أن RSI يهيمن خلال الأسواق المتذبذبة، بينما تهيمن ميزات منحنى عائد الاقتصاد الكلي خلال انتقالات الأنظمة. هذا ليس تفسيرا لاحقا -- إنه مدمج في البنية ذاتها.

هناك شبكات VSN منفصلة للمتغيرات المشتركة الثابتة، والمدخلات المرصودة الماضية، والمدخلات المستقبلية المعروفة. يحترم هذا الفصل البنية السببية لمشكلة التنبؤ: لا يمكنك استخدام الملاحظات المستقبلية، لكن يمكنك استخدام الأحداث المستقبلية المعروفة (تواريخ الأرباح، اجتماعات اللجنة الفيدرالية للسوق المفتوحة، انتهاءات الخيارات، تأثيرات يوم الأسبوع).

3. مرمّزات المتغيرات المشتركة الثابتة

في التنبؤ بالمحافظ، تمثل المتغيرات المشتركة الثابتة بيانات وصفية على مستوى الكيان لا تتغير بمرور الزمن: فئة الأصل، أو القطاع، أو البورصة، أو شريحة القيمة السوقية، أو المنطقة الجغرافية. يعالج TFT هذه عبر شبكات GRN مخصصة لإنتاج أربعة أشعة سياق متميزة:

  • cs\mathbf{c}_s -- سياق لاختيار المتغيرات الزمنية
  • ce\mathbf{c}_e -- سياق للإثراء الثابت للميزات الزمنية (يطبق بعد LSTM)
  • cc\mathbf{c}_c -- تهيئة حالة الخلية لـ LSTM
  • ch\mathbf{c}_h -- تهيئة الحالة المخفية لـ LSTM

هكذا يتعامل TFT مع المعلومات المقطعية. عند التنبؤ بمحفظة من 500 سهم، تتيح المرمّزات الثابتة للنموذج أن يتعلم أن أسهم التقنية وأسهم المرافق لها ديناميكيات زمنية مختلفة جوهريا، دون الحاجة إلى نماذج منفصلة.

4. المعالجة الزمنية: LSTM + انتباه متعدد الرؤوس قابل للتفسير

يستخدم TFT خط أنابيب للمعالجة الزمنية من مرحلتين يجمع بين نقاط قوة البنى التكرارية والبنى المعتمدة على الانتباه.

المرحلة 1: المعالجة المحلية باستخدام LSTM

يعالج مرمّز-مفكّك LSTM من تسلسل إلى تسلسل السلسلة الزمنية لالتقاط الأنماط الزمنية المحلية -- الزخم قصير الأجل، والارتداد إلى المتوسط، والبنية الانحدارية الذاتية. يعالج المرمّز نافذة الاسترجاع؛ ويعالج المفكّك المدخلات المستقبلية المعروفة. ويتم تهيئة كليهما بأشعة السياق الثابتة cc\mathbf{c}_c (حالة الخلية) وch\mathbf{c}_h (الحالة المخفية).

المرحلة 2: الاعتماديات بعيدة المدى مع الانتباه متعدد الرؤوس القابل للتفسير

بعد المعالجة المحلية، يطبق TFT آلية انتباه ذاتي معدلة لتعلم الاعتماديات بعيدة المدى. التعديل الأساسي يكمن في كيفية تجميع رؤوس الانتباه. يجمع الانتباه متعدد الرؤوس القياسي مخرجات الرؤوس عبر السلسلة:

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 القيم عبر الرؤوس ويحسب متوسط أوزان الانتباه:

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}

لاحظ: WV\mathbf{W}_V ليس لها رمز علوي للرأس -- جميع الرؤوس تشارك إسقاط القيمة نفسه. هذا يعني أن أوزان الانتباه من كل رأس يمكن حساب متوسطها بشكل ذي معنى وتفسيرها كدرجات أهمية زمنية. لتنبؤ معين، يمكنك تصوير أي خطوات زمنية ماضية يلتفت إليها النموذج بالضبط، وكيف تختلف أنماط الانتباه عبر الرؤوس.

بالنسبة للتنبؤ بالمحافظ، يكشف هذا ما إذا كان النموذج يلتفت إلى حركة السعر الأخيرة (الزخم)، أو الأنماط التاريخية البعيدة (الموسمية)، أو أحداث تقويمية محددة. يمكن لكل رأس أن يتخصص في نمط زمني مختلف.

5. طبقة مخرجات الكميات

تخرج الطبقة النهائية تنبؤات عند كميات متعددة، محسّنة باستخدام خسارة الكميات:

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)

حيث Q\mathcal{Q} هي مجموعة الكميات الهدف (مثلا {0.1,0.5,0.9}\{0.1, 0.5, 0.9\}). يمنحك هذا ليس مجرد تنبؤ نقطي، بل تقديرا كميا لفترة التنبؤ عند كل أفق. بالنسبة لإدارة مخاطر المحفظة، تفيد تنبؤات المئين العاشر والتسعين في تحديد حجم المراكز ومستويات وقف الخسارة.

ثمة تحذير يستحق الذكر مقدما: تقليل خسارة pinball يعطي تقديرات للكميات الشرطية، لكنه لا يضمن تغطية معايرة خارج العينة. في الأسواق غير المستقرة المتبدلة الأنظمة، تكون هذه الفترات في الغالب سيئة المعايرة -- قد تغطي فترة الـ 80% الاسمية أقل (أو أكثر) بكثير من 80% من التحققات. تعامل مع الكميات كتقديرات يجب التحقق منها تجريبيا عبر اختبارات التغطية/الموثوقية، وشدّدها باستخدام التنبؤ المطابق (conformal prediction) إن احتجت إلى ضمانات تغطية. سنعود إلى هذا في قسم الإنتاج.

TFT مقابل LSTM مقابل المحول التقليدي

TFT مقابل LSTM مقابل المحول التقليدي: ثلاث بنى تنبؤية تنتج تنبؤات بدرجات حدة مختلفة

فهم موضع TFT بالنسبة للبنى الأخرى يساعد في تقرير متى تستخدمه.

الميزة LSTM المحول التقليدي TFT
الاعتماديات بعيدة المدى محدودة (تلاشي التدرجات) قوية (الانتباه الذاتي) قوية (LSTM + الانتباه)
اختيار المتغيرات لا يوجد (هندسة ميزات يدوية) لا يوجد 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 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
)

تعريف النموذج وتدريبه

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

استخراج المخرجات القابلة للتفسير

لاستدعاء قابلية التفسير متطلب واحد غير بديهي: تستهلك 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:
    """
    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"]]

قابلية التفسير في الممارسة: ما يكشفه TFT عن الأسواق

قابلية تفسير 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 نموذج منفصل.

هندسة الميزات: في حين يقوم TFT باختيار المتغيرات تلقائيا، لا تزال جودة الميزات المرشحة مهمة. ضمّن مجموعة ميزات متنوعة تشمل البيانات الفنية والأساسية والاقتصادية الكلية والبديلة. دع VSN تحدد ما هو مفيد.

التكلفة الحسابية: تدريب TFT أكثر كلفة من LSTM لكنه مماثل للمحولات التقليدية. على وحدة معالجة رسوميات A100 واحدة، يستغرق التدريب على 500 سهم مع 3 سنوات من البيانات اليومية بضع ساعات من رتبة قدرها لـ 100 حقبة. الاستدلال سريع -- توليد تنبؤات للعالم الاستثماري الكامل يستغرق أقل بكثير من ثانية.

تحقق من المعايرة، لا تفترضها. قبل أن تقود أي كمية تحديد حجم المراكز، تحقق من التغطية التجريبية على بيانات خارج العينة: هل تحتوي فترة الـ 80% الاسمية فعلا على نحو 80% من العوائد المحققة؟ في الأسواق غير المستقرة لن تفعل في الغالب. شغّل مخططات الموثوقية لكل أفق، وفكر في تغليف النموذج بالتنبؤ المطابق لاستعادة ضمانات التغطية.

التكيف مع الأنظمة: لا يصمم TFT تبدلات الأنظمة بشكل صريح (على عكس نماذج HMM). ومع ذلك، توفر آلية التبويب تكيفا ضمنيا مع الأنظمة. عمليا، تلتقط إعادة التدريب شهريا بنافذة متوسعة التغيرات الهيكلية بفعالية.

التخفيف من فرط التكييف: البيانات المالية مليئة بالضجيج وغير مستقرة. استخدم التنظيم العدواني: إسقاط بنسبة 0.1-0.3، وقص التدرج عند 0.1، والتوقف المبكر بصبر يتراوح بين 10-15 حقبة. التحقق التقدمي (walk-forward) ضروري -- لا تستخدم أبدا تقسيمات تدريب/اختبار عشوائية على السلاسل الزمنية.

جمع كل شيء معا: خط أنابيب محفظة قائم على TFT

خط أنابيب محفظة مدفوع بـ TFT: تنبؤات احتمالية متعددة الأصول تغذي تحديد حجم المراكز وتخصيص ميزانية المخاطر

يبدو خط أنابيب الإنتاج لإدارة المحافظ القائمة على TFT هكذا:

  1. استيعاب البيانات: اجمع بيانات OHLCV والأساسية والاقتصادية الكلية والبديلة يوميا. احسب الميزات (200+ مرشح)، بما في ذلك تقويم مستقبلي معروف حقيقي (الأرباح، اللجنة الفيدرالية للسوق المفتوحة، انتهاءات الخيارات، يوم الأسبوع).
  2. مخزن الميزات: حافظ على مخزن ميزات مطبّع ومفهرس زمنيا. تعامل مع البيانات المفقودة والإجراءات الشركاتية وانحياز البقاء.
  3. تدريب النموذج: أعد تدريب TFT شهريا باستخدام منهجية التحقق التقدمي. استخدم أحدث 3-5 سنوات من البيانات بنافذة متوسعة.
  4. توليد التنبؤات: استدلال يومي ينتج تنبؤات كميّة عند آفاق 1 و5 و10 و20 يوما للعالم الاستثماري الكامل من الأصول.
  5. فحص المعايرة: تتبع تغطية كل فترة كميّة لكل أفق. أعد المعايرة (أو طبّق تعديلا مطابقا) عندما تنحرف التغطية.
  6. لوحة قابلية التفسير: صوّر أهمية المتغيرات وأوزان الانتباه. ارصد الشذوذ (مثل التحولات المفاجئة في أهمية الميزات).
  7. تحسين المحفظة: حوّل التنبؤات إلى أوزان باستخدام المتوسط-التباين، أو Black-Litterman، أو تكافؤ المخاطر، مع توفير كميات TFT لمدخلات العائد وعدم اليقين.
  8. طبقة المخاطر: استخدم تنبؤات المئين الثاني والثامن والتسعين لتقييم مخاطر الذيل. خفّض أحجام المراكز عندما تتسع فترات التنبؤ.
  9. التنفيذ: مرّر الأوزان المستهدفة إلى محرك التنفيذ. راقب خطأ التتبع بين المحفظة المستهدفة والمحققة.

الخاتمة

يمثل محول الدمج الزمني تقدما حقيقيا لإدارة المحافظ الكمية. إنه ليس مجرد نموذج تعلم عميق آخر يُلقى على البيانات المالية -- إنه بنية مصممة من الأساس للتحديات المحددة للتنبؤ الزمني متعدد الآفاق: المدخلات غير المتجانسة، والبنية المقطعية، والمخرجات الاحتمالية، والحاجة الحاسمة لقابلية التفسير.

تخبرك شبكات اختيار المتغيرات بماذا يهتم النموذج. وتخبرك أوزان الانتباه متى ينظر. وتضمن آليات التبويب أن يتعامل بسلاسة مع الميزات غير ذات الصلة وتغيرات الأنظمة. وتمنحك مخرجات الكميات تقديرات لعدم اليقين لإدارة المخاطر -- شريطة أن تتحقق من معايرتها بدلا من قبولها على سبيل الثقة.

TFT ليس حلا سحريا. تبقى الأسواق المالية بيئات تنافسية حيث تكون أي ميزة تنبؤية مؤقتة ومعتمدة على النظام. لكن TFT يوفر إطارا قائما على المبادئ لبناء أنظمة تنبؤ قوية ومفهومة معا -- وفي التداول الإنتاجي، فهم لماذا يتخذ نموذجك رهانا لا يقل أهمية عن الرهان نفسه.


المراجع

  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.
blog.disclaimer

Authors

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

ابقَ متقدماً على السوق

اشترك في نشرتنا الإخبارية للحصول على رؤى حصرية حول تداول الذكاء الاصطناعي وتحليلات السوق وتحديثات المنصة.

نحترم خصوصيتك. يمكنك إلغاء الاشتراك في أي وقت.