طرق المجموعة: الجمع بين المتعلمين الضعفاء من أجل ألفا قوي
تقول معظم الكتابات عن مجموعات التداول أن المزيد من النماذج هي الأفضل. وهذا هو المحور الخاطئ. ينقسم خطأ المجموعة إلى ثلاثة شروط، وفي التداول واحد منهم فقط هو القيد الملزم.
تتناول هذه المقالة هذا المصطلح الواحد، وعن نتيجتين منه لا تغطيهما بقية هذه المدونة: التراص كطبقة واضحة من مزيج الإشارات، وما إذا كان الجمع بين العديد من الإشارات يؤدي في الواقع إلى انخفاض حجم التداول قبل وصول الصفقات إلى السوق.
المصطلح الملزم فعليًا: التحيز والتباين والتباين
لمجموعة الانحدار من نماذج الخطأ التربيعي المتوقع لمتوسط التنبؤ تتحلل على النحو التالي:
ثلاثة مصطلحات، ثلاث روافع:
- التعبئة تهاجم مصطلح التباين عن طريق حساب المتوسط على عينات التمهيد.
- التعزيز يهاجم مصطلح التحيز عن طريق تصحيح البقايا بشكل متكرر.
- التكديس يهاجم مصطلح التغاير من خلال تعلم الأوزان المركبة بدلاً من افتراض أوزان متساوية.
- تزايد يقلص مساهمة التباين فقط. إنه لا يفعل شيئًا على الإطلاق للتغاير المشترك - ال المعامل هو بالفعل 0.99 في .
هذه النقطة الأخيرة هي الحجة بأكملها. في التداول، يتم تدريب النماذج على نفس الأدوات، وعلى نفس التاريخ، ضد الأهداف التي هي في حد ذاتها تحولات شبه متطابقة لنفس سلسلة الأسعار. أخطائهم ليست قريبة من المستقلة. لذا فإن مصطلح التغاير كبير، وقد تم استنفاد مصطلح التباين بالفعل، مما يعني أن عدد النماذج لا يشتري لك شيئًا تقريبًا، بينما يشتري لك الاختلاف الهيكلي كل شيء.
الشكل الملموس والقابل للدحض للمطالبة: ** إضافة الشجرة المعززة بالتدرج رقم 101 يجب أن يحرك مقياس المجموعة بشكل أقل من إضافة نموذج واحد مختلف هيكليًا ** - LSTM، نموذج خطي في مجال ميزة منفصل، أي شيء له انحياز استقرائي مختلف. الشجرة الهامشية متعامدة تقريبًا مع الأشجار الموجودة بالفعل في الكتاب؛ النموذج المختلف هيكليا ليس كذلك.
الارتباط، وليس عدد النماذج، هو الذي يحدد النطاق الفعال للمجموعة - الاشتقاق، وعوامل الارتباط المقاسة بالعملات المشفرة حسب فئة الأصول، والمحاكاة مقابل بيانات الزوج الحقيقي موجودة في ارتباط الإشارة: كم عدد الأزواج المراد مراقبتها.
لا تقلل من تنوع المجموعة إلى رقم واحد. [نسبة شارب المفرغة] (/en/blog/post/deflated-sharpe-multiple-testing) تحسب خمسة فعالة - يُظهر المقدرون (متوسط الارتباط، نسبة المشاركة، PCA-95%، Kaiser، Cheverud-Nyholt) على شبكة حقيقية مكونة من 640 خلية، أنها تمتد من 1.6 إلى 370، ويجادل بأن النطاق - وليس أي تقدير بنقطة واحدة - هو الناتج. الإبلاغ عن الفرقة.
التراص كطبقة مجمعة للإشارة
يتم تغطية التعبئة والتعزيز بشكل جيد في مكان آخر. [نمذجة الانتشار باستخدام التعلم الآلي] (/en/blog/post/spread-modeling-machine-learning) توفر الإعداد المعزز للتدرج، واختيار الخسارة للأهداف المنحرفة، ونتائج أهمية SHAP، وتصنيف الميزات، والتقسيم المطهر للمضي قدمًا مع تداخل النافذة الأمامية الذي يحفز الفجوة. ابدأ هناك؛ هذا القسم يفترض ذلك.
ما لم تتم تغطيته هو المستوى أعلاه: متعلم فوقي يأخذ تنبؤات النموذج الأساسي كميزات مدخلاته ويتعلم كيفية الجمع بينها.
- المستوى 0 (المتعلمون الأساسيون): نماذج متنوعة تنتج تنبؤات من الميزات الأولية.
- المستوى الأول (المتعلم الفوقي): نموذج يتعرف على المتعلمين الأساسيين الذين يجب الوثوق بهم ومتى.
الآلية التي تجعل هذا آمنًا هي ميزات تعريفية خارجة عن المألوف. يجب ألا يرى المتعلم التعريفي أبدًا تنبؤات النموذج الأساسي التي تم إجراؤها بناءً على البيانات التي تم تدريب النموذج الأساسي عليها - تلك التنبؤات متحيزة بشكل متفائل بطريقة لا تستمر في التداول المباشر، وسيقوم المتعلم التعريفي بوزنها وفقًا لذلك.
import numpy as np
import pandas as pd
from sklearn.base import clone
from sklearn.model_selection import TimeSeriesSplit
class TradingStackingEnsemble:
"""
Two-level stacking ensemble for return prediction.
Level 0: base learners, each on its own feature domain
Level 1: meta-learner trained on out-of-fold base predictions
"""
def __init__(self, base_models: list, meta_model, n_splits: int = 5):
self.base_models = base_models # list of (name, model, feature_cols)
self.meta_model = meta_model
self.n_splits = n_splits
self.fitted_base_models_ = {}
def _generate_meta_features(
self,
X: pd.DataFrame,
y: pd.Series
) -> pd.DataFrame:
"""Out-of-fold predictions from each base model."""
tscv = TimeSeriesSplit(n_splits=self.n_splits)
meta_features = pd.DataFrame(index=X.index)
for name, model, feature_cols in self.base_models:
oof_preds = pd.Series(np.nan, index=X.index)
for train_idx, val_idx in tscv.split(X):
X_train = X.iloc[train_idx][feature_cols]
y_train = y.iloc[train_idx]
X_val = X.iloc[val_idx][feature_cols]
fold_model = clone(model)
fold_model.fit(X_train, y_train)
if hasattr(fold_model, 'predict_proba'):
oof_preds.iloc[val_idx] = fold_model.predict_proba(X_val)[:, 1]
else:
oof_preds.iloc[val_idx] = fold_model.predict(X_val)
meta_features[name] = oof_preds
return meta_features.dropna()
def fit(self, X: pd.DataFrame, y: pd.Series):
meta_features = self._generate_meta_features(X, y)
y_meta = y.loc[meta_features.index]
self.meta_model.fit(meta_features, y_meta)
for name, model, feature_cols in self.base_models:
model.fit(X[feature_cols], y)
self.fitted_base_models_[name] = model
return self
def predict(self, X: pd.DataFrame) -> np.ndarray:
meta_features = pd.DataFrame()
for name, model, feature_cols in self.base_models:
fitted = self.fitted_base_models_[name]
if hasattr(fitted, 'predict_proba'):
meta_features[name] = fitted.predict_proba(X[feature_cols])[:, 1]
else:
meta_features[name] = fitted.predict(X[feature_cols])
return self.meta_model.predict(meta_features)
إن نظام التقسيم هنا ليس اختياريًا وليس جديدًا - استخدم طريقة تطهير محظورة للأمام، وافهم قيمة كل فئة من فئات التسرب في شارب المضخم قبل الثقة في أي من هذه الأرقام. تم قياس كلاهما بالفعل: تصنيف انحياز النظرة المستقبلية يقيس التنفيذ وتسرب المؤشر والتطبيع في جهاز محاكاة يتم التحكم فيه، وتحسين التقدم للأمام يغطي النوافذ الثابتة مقابل النوافذ المتداولة، وتكلفة النقرة (CPCV)، والتطهير وتشخيصات تدهور WFER.
هناك ثلاثة قرارات تصميمية خاصة بالتكديس وتستحق الذكر.
بساطة المتعلم الفوقي. استخدم نموذجًا خطيًا — التلال، والحبل، والانحدار اللوجستي. يتعامل المتعلمون الأساسيون مع اللاخطية؛ يتعامل المتعلم الفوقي مع المجموعة فقط. إن المتعلم الفوقي المعقد الموجود أعلى المتعلمين الأساسيين المعقدين هو فرط التجهيز من الدرجة الثانية، كما أن تنظيم L1 في الطبقة المركبة له تأثير جانبي مفيد يتمثل في استبعاد النماذج الأساسية التي تساهم فقط في الضوضاء.
المخرجات الاحتمالية على التسميات الصلبة. predict_proba يحمل معلومات الثقة التي يتجاهلها تصنيف الفصل، ويسمح للمتعلم الفوقي بوزن التنبؤات الأساسية الواثقة بشكل أكبر.
تقسيم مجال الميزة. هذا هو رافعة التنوع ذات التأثير الأعلى، ويتبع مباشرة من وسيطة التباين المشترك: النماذج التي ترى نفس الميزات تنتج أخطاء مترابطة بغض النظر عن الخوارزمية.
FEATURE_GROUPS = {
'momentum': ['ret_5d', 'ret_10d', 'ret_21d', 'ret_63d'],
'volatility': ['vol_21d', 'vol_ratio', 'vol_skew', 'garch_vol'],
'volume': ['volume_ratio', 'obv_slope', 'vwap_dist', 'adv_ratio'],
'mean_reversion': ['dist_from_ma21', 'dist_from_ma63', 'rsi_14', 'bb_pct'],
'microstructure': ['bid_ask_spread', 'kyle_lambda', 'amihud_illiq'],
'fundamental': ['ep_ratio', 'bp_ratio', 'roe', 'accruals'],
}
base_models = []
for domain, features in FEATURE_GROUPS.items():
model = GradientBoostingClassifier(
n_estimators=200, max_depth=3,
learning_rate=0.05, subsample=0.7
)
base_models.append((domain, model, features))
يصبح كل نموذج أساسي خبيرًا في المجال: يتعلم نموذج الزخم أنماط الزخم دون تداخل من ضوضاء الحجم، ويتعلم المتعلم الفوقي أي خبير يثق به وتحت أي ظروف.
تحذيران بشأن هذه الجملة الأخيرة. أولاً، يعد الترجيح المشروط للنظام مشكلة تم حلها ونشرها - اكتشاف النظام باستخدام HMMs يشتق الأنظمة بشكل صحيح عبر Forward/Viterbi/Baum-Welch ويغذيها كميزات لمجموعة نهائية، و[استراتيجيات الجمع الديناميكي](/en/blog/post/ديناميكية الجمع بين الاستراتيجيات) تغطي ترجيح النظام متوسط الارتداد مقابل الزخم مع النتائج المبلغ عنها. لا تستبدل وكيل علامة الزخم المخصص لأي منهما. ثانيًا، يؤدي الاختيار على أساس الأداء داخل العينة إلى إنتاج فائزين لا ينجوا؛ يتم قياس الآلية العامة ودفاع CSCV في احتمالية تجاوز الاختبار الخلفي. التراص هو مثال أضيق لهذه المشكلة بالضبط.
بالنسبة لترجيح تدفقات الإرجاع بدلاً من تنبؤات النماذج، لا تقم بإعادة اشتقاق متوسط التباين. [12 خوارزمية لتحسين المحفظة، مقارنة] (/en/blog/post/portfolio-optimization-algorithms-compared) تتنافس مع HRP، وHERC، وGHRP، وMHRP، وBlack-Litterman، وNCO، وMVO، وتكافؤ المخاطر والوزن المتساوي مع النتائج المقاسة والتعليمات البرمجية مفتوحة المصدر؛ [نظرية محفظة ماركويتز للعملات المشفرة] (/en/blog/post/markowitz-portfolio-theory-crypto) لديها تطبيق متوسط التباين SLSQP؛ وتم بالفعل اختبار نتيجة 1/N التي يصعب التغلب عليها مقابل HRP وCVaR في خط أنابيب محفظة HRP/CVaR.
معاوضة الدوران: المطالبة التي تستحق الاختبار
فيما يلي جزء من حجة مكتبة ألفا التي لا تغطيها حاليًا مجموعة تكلفة التنفيذ لهذه المدونة.
عندما يقول Alpha #4,721 "شراء MSFT" ويقول Alpha #8,392 "بيع MSFT" في نفس عملية إعادة التوازن، فإن هذه الصفقات تتقاطع داخليًا. فقط المركز الصافي يصل إلى السوق. الادعاء هو أنه مع وجود إشارات كافية، يتم إلغاء جزء كبير من إجمالي المبيعات المقصودة قبل تكبد انتشار أو رسوم أو تأثير على السوق - وهو ما يعني أن تشغيل المجموعة أرخص من مجموع مكوناتها، وليس فقط أكثر استقرارا.
وهذه آلية مختلفة عما تعالجه تنسيقية الإستراتيجية المتتالية بالفعل. تعمل Cascade على حل النزاعات على مستوى الفتحة: نفس الزوج، الاتجاه المعاكس محظور ويتم تسويته حسب النتيجة، ويتم تنفيذ عملية الإخلاء بين الأزواج من خلال قائمة انتظار الأولوية، وتثبت المقالة تجريبيًا أن الربح والخسارة لكل استراتيجية لا يمكن جمعها ببساطة بسبب تداخل الوقت وقيود رأس المال. إن المعاوضة تدور حول حساب إجمالي المركز إلى صافي تقليل الكمية المتداولة نفسها.
كما أن تزويرها رخيص أيضًا: حساب إجمالي المبيعات مقابل صافي المبيعات على عمليات التعبئة الحقيقية عندما يتم الجمع بين إشارات المكونات، ثم التسعير من خلال آلية التكلفة الحالية - رسوم صانع-متلقي وحسومات، عجز التنفيذ وTCA، وتكلفة الانزلاق النماذج.
ملاحظة على نطاق واسع، لأن تأطير مكتبة ألفا يدعو إليها. تفيد تقارير WorldQuant بأنها أنتجت مكتبة ألفا كبيرة جدًا، بالإضافة إلى [101 صيغة ألفا صيغة] لكاكوشادزه.https://arxiv.org/pdf/1601.00991) يوثق شكل الإشارات الفردية. لكن تعدين ألفا على المستوى الصناعي هو أيضًا أكبر آلة اختبار متعددة يمكن تخيلها، وقد تم تحديد موقف هذه المدونة بشأن ذلك: البحث عن الحجم يجب أن يتم تقليصها مقابل أفضل الحظ المتوقع لعملية بحث بهذا الحجم. نسبة شارب المفرغة تعرض شبكة مكونة من 640 خلية تكسر بالفعل اختبار الأهمية الساذج، وThe Honest Negative تعرض بحثًا تجريبيًا يصل إلى 37000 تقريبًا ينتج عنه فائز +16.35% من خارج العينة يفرغ إلى DSR 0.00. حجم المكتبة ليس دليلاً على الحافة. هذا هو القاسم الذي عليك أن تدفعه.
تجميعها معًا
Raw Data
|
v
Feature Engineering
|
v
Feature Subsets (partitioned by domain -> decorrelated errors)
|
+---> Base Model 1: RF on momentum features
+---> Base Model 2: GBM on volatility features
+---> Base Model 3: LSTM on price sequences
+---> Base Model 4: Lasso on fundamental features
+---> Base Model 5: XGBoost on microstructure features
|
v
Out-of-Fold Predictions (purged walk-forward)
|
v
Meta-Learner (Ridge)
|
v
Combined Signal -> Net Position -> Execution
|
v
DSR >= 0.95 and PBO <= 0.2 gate, or it does not ship
المربع الأخير ليس زخرفة. التراص النماذج الأساسية هي إجراء اختيار الحجم ، والمقالة المجمعة التي لا تنكمش لا يمكن الدفاع عنها.
الوجبات الجاهزة
- الفرق الهيكلي يفوق عدد النماذج. مصطلح التغاير لا يتقلص مع . إن إضافة شجرة سادسة مترابطة لا يعد تنويعًا؛ إن إضافة فئة نموذجية مختلفة أو مجال ميزة منفصل هو.
- الإبلاغ عن الفعالية- نطاق، وليس نقطة. خمسة مقدرين، وخمس إجابات، وأحيانًا يفصل بينهما أمران من حيث الحجم.
- حافظ على خطية المتعلم الفوقي. التعقيد في الطبقة المركبة غالبًا ما يكون مفرطًا في التجهيز، ويقوم L1 هناك باختيار نموذج تلقائي مفيد.
- خارج الطية أو لا شيء. يتعلم المتعلم الفوقي، الذي تم تدريبه على التنبؤات الأساسية داخل العينة، الأوزان الخاطئة بثقة عالية.
- تفريغ المجموعة نفسها. التراص هو عملية بحث. السعر مثل واحد.
مزيد من القراءة:
- كاكوشادزه، ز. (2016). 101 صيغة ألفا
- التعلم الجماعي في الاستثمار — مؤسسة أبحاث معهد CFA، 2025
- التنبؤ بعوائد الأسهم: تجميع مجموعة متنوعة من النماذج — مجلة الاقتصاد المالي
- يانسن، إس. التعلم الآلي للتجارة الخوارزمية، الطبعة الثانية
Authors
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.