التعلم الآلي المزدوج: تقدير معامل السببية بدلاً من التنبؤ بالعوائد
كل مقال نمذجة في هذه المدونة حتى الآن يطرح نفس شكل السؤال: بالنظر للميزات، تنبأ برقم، ثم تحقق من أن التنبؤ ينجو خارج العينة. نماذج الانتشار تتنبأ بالانتشار. نماذج الملء تتنبأ باحتمالية الملء. ك Emerson جهاز التحقق - التقاطع المطهر، sharpe المنخفض، تصنيف النظر إلى الأمام - موجود للتحقق مما إذا كان التنبؤ حقيقياً.
هذا المقال يطرح شكلاً مختلفاً من السؤال، وهو الجزء الوحيد من الآلات الذي لم تكن تمتلكه المدونة مطلقاً: تقدير معامل عددي واحد له تفسير سببي، ورفق خطأ معياري به ينجو من حقيقة أن نموذج ML مرن تم استخدامه للوصول إلى هناك.
هذا ليس تمييزاً بلاغياً. "موقع الانتشار يتنبأ باحتمالية الملء" صحيح بشكل بديهي وعديم الفائدة تشغيلياً - بالطبع يفعل ذلك، كلاهما مدفوع بالعمق والتقلب. "التحرك موقماً واحداً إلى الأمام في الطابور يسبب تغييراً بقيمة في احتمالية الملء، مع ثبات حالة السوق" هو رقم يمكنك وضعه في سياسة وضع الأوامر. الأول هو ملاءمة انحدار. الثاني يتطلب مقدماً غير موجود في صندوق أدوات ML القياسي، لأن الانتظام والإفراط في التخصيص في المرحلة الأولى المرنة تحيز بالضبط المعامل الذي يهمك.
التعلم الآلي المزدوج (Chernozhukov، Chetverikov، Demirer، Duflo، Hansen، Newey & Robins، 2018) هو المقدماً الذي يحل هذا. كل متداول كمي سمع هذا: الارتباط ليس سببية. DML هو الجزء الذي يأتي بعد تلك الجملة.
لماذا يفشل الانحدار الساذج

قم بإعداد السؤال في أراضي المدونة نفسها. نريد التأثير السببي لموقع الطابور على احتمالية الملء:
- : ما إذا كانت أمر الحد المحددة في المراقبة امتلأت ضمن الأفق.
- : موقع الطابور عند الوضع (منormalized بحجم المستوى).
- : المربكات - التقلب المتحقق، الانتشار المقتبس، عدم التوازن العميق، حجم المستوى، الوقت من اليوم، تسمية النظام. هذه هي متغيرات حالة السوق التي تحسبها المدونة بالفعل في النمذجة الانتشارية مع التعلم الآلي.
المعامل السببي هو في
حيث يلتقط العلاقة (المحتملة المعقدة، غير الخطية) بين حالة السوق ونتيجة الملء.
العلاج غير مخصص بشكل عشوائي. أنت بالقرب من مقدمة الطابور لأن المستوى كان رفيعاً، أو لأنك نشرت خلال فترة هادئة، أو لأن دفتر الأوامر كان غير متوازن لصالحك. نفس الشروط تقود بشكل مستقل إلى ما إذا كنت تمتلئ. هذا هو التربيط.
النهج 1: تجاهل المربكات. انحدار على وحده. التقدير يمتص تأثير كل مربك مرتبط بكلاهما. تحيز المتغير المحذوف من الكتاب: المستويات الرفيعة تعطيك كلاً من فتحة طابور جيدة ومعدل ملء مرتفع، لذا تبالغ في قيمة الفتحة نفسها.
النهج 2: الانحدار الخطي مع الضوابط. انحدار على و . هذا يعمل فقط إذا كان خطياً حقاً. ديناميكيات دفتر الأوامر ليست كذلك - علاقة الملء/التقلب لها عتبات، تأثير عدم التوازن العميق يغير العلامة حسب النظام. سوء تحديد يعيد إدخال التحيز.
النهج 3: التنبؤ ML. ملاء نموذج معزز تدرجي على . تحصل على تمييز جيد خارج العينة، ولا تفسير سببي على الإطلاق. النموذج يلتقط كل نمط تنبؤي، سببي أو لا؛ الانتظام يتقلص مساهمة العلاج بطرق تحيز ؛ ولا يوجد خطأ معياري يمكنك الوثوق به.
هذا هو التوتر الأساسي. ML جيد في التنبؤ، لكن التطبيق الساذج على معامل سببي ينتج تقديرات متحيزة، غير طبيعية، غير موثوقة.
النموذج الخطي الجزئي

DML يعمل داخل إطار هيكلي. الحصان هو الانحدار الخطي الجزئي (PLR):
- هو المعامل السببي المهم.
- هو دالة مزعجة - جزء النتيجة المفسر بحالة السوق.
- هي دالة مزعجة أخرى - التوقع المشروط للعلاج نظراً لحالة السوق ("الميل" في إعداد العلاج المستمر).
- و هي بقايا هيكلية.
الرؤية الأساسية: منخفض الأبعاد، لكن و يمكن أن تكون معقدة بشكل تعسفي. نريد ML أن يتعامل مع الدوال المزعجة مع تقدير استدلال صالح على العدد.
لماذا "مزدوج"؟
نموذجان ML، لا واحد:
- نموذج النتيجة: - تنبأ بالنتيجة من حالة السوق وحدها.
- نموذج العلاج: - تنبأ بالعلاج من حالة السوق وحدها.
شكل البقايا
وقدر بانحدار على :
هذا هو Frisch-Waugh-Lovell على الستيرويد: أزل جزئياً المربكات بـ ML بدلاً من إسقاط خطي، ثم اقرأ تأثير العلاج من التباين المتبقي.
تعامد Neyman: لماذا يعمل
نهج الإزالة الجزئي الساذج (قدر ، اطرح، انحدار) يفشل لأن أخطاء تقدير ML في تنتقل مباشرة إلى . درجة DML بنيت لتكون Neyman orthogonality - غير حساسة للاضطرابات الصغيرة في الدوال المزعجة.
درجة التعامد لـ PLR:
حيث . شرط التعامد هو
بديهياً، الدرجة تستخدم فقط التباين في و المستقل عن ، وأخطاء دالة مزعجة واحدة يتم تعويضها بالأخرى. إذا كانت تتنبأ بالعلاج أكثر قليلاً، أصغر قليلاً، لكن الخطأ المقابل في من سوء تقدير يدفع في اتجاه تعويضي. التحيز يصبح من الدرجة الثانية - منتج خطأين من المرحلة الأولى - بدلاً من الدرجة الأولى.
رسمياً، إذا كان كلا مقدري المربكات يتقاربان بمعدل (خفيف؛ معظم أساليب ML المعقولة تمر به)، فإن
لذا يتقارب بالمعدل البارامتري وهو طبيعي تقريباً.
التقاطع المتقاطع: لماذا إلزامي هنا
التعامد وحده ليس كافياً. إذا كانت نماذج المربكات ملاءمة على نفس الصفوف المستخدمة لتقدير ، الإفراط في التخصيص في المرحلة الأولى يلوث المرحلة الثانية - والضرر المحدد يستحق التصريح بدقة، لأنه ليس الضرر الذي اعتدت عليه. في مكان آخر، الإفراط في التخصيص يظهر كنقطة تحقق منتفخة: تلاحظه، تخصم منه، تتحرك. هنا يظهر كـ تقدير نقطة منزاح لـ ، مع فاصل ثقة لا يزال ضيقاً ولا يزال يتمركز حول الرقم الخطأ. لا توجد نقطة لتكون مشكوكاً فيها. المقدر ببساطة يكذب بهدوء.
التقاطع المتقاطع يقطع الاعتماد: تنبؤات المربكات لكل مراقبة تأتي من نموذج مدرب بدونه، و يقدر من البقايا المجمعة المحتجزة. الآليات هي K-fold عادية، مغطاة في نمذجة الانتشار مع التعلم الآلي؛ المهم أدناه هو أي طيات تسلمها.
خوارزمية DML خطوة بخطوة
الإدخال: بيانات ، أساليب ML و ، طيات .
الخطوة 1 — التقسيم: قسم إلى طيات منفصلة.
الخطوة 2 — التقاطع المتقاطع للنماذج المزعجة: لـ ، درب و على مكمل الطية ، ثم احسب و لـ .
الخطوة 3 — التقدير:
الخطوة 4 — الاستدلال:
مع الفواصل .
فاصل الثقة صالح لسؤال واحد بالضبط
هذا هو التحذير الذي يقرر ما إذا كانت نتيجة DML تستحق شيئاً، وهو المكان الذي تفشل فيه معظم الاستخدامات التطبيقية للطريقة بهدوء.
الطبيعة التقريبية أعلاه هي بيان حول علاج محدد مسبقاً واحداً، مجموعة مربكات محددة مسبقاً واحداً، درجة محددة مسبقاً واحداً. ثبت هذه مسبقاً، شغل المقدماً مرة واحدة، والفاصل يعني ما يقول. جرب ثلاثة علاجات مرشحة، أو أربع مجموعات مربكات، أو بدل المتعلمين حتى يبدو p-value أفضل، ولست بعد الآن تفعل استدلالاً — أنت تشغل بحثاً، و p-value المبلغ هو p-value لـ maximum، وليس لسحب.
المدونة قاست بالفعل ما يفعله هذا. في دراسة sharpe المنخفض، عمليات البحث عبر ضوضاء نقية مع حافة حقيقية صفرية تنتج معدل اكتشاف كاذب ساذج من 1.000 - الاختبار غير المعدل يطلق في كل مرة - بينما متوسط p-value الساذج للفائز يقترب من 0.0007. لا شيء عن تعامد Neyman يحميك من هذا. التعامد يصلح التحيز من تقدير المربكات؛ لا يقول أي شيء عن التحيز من بحث المواصفات. p-value DML من 1e-05 تم الحصول عليه بعد تجربة ست مواصفات يستحق بالضبط نفس معاملة Bonferroni/Holm/BHY مثل أي فائز آخر تم إخراجه من شبكة، مع محدداً لعدد المواصفات التي شغلتها بالفعل.
هذا له عواقب عملية مباشرة لميزات الراحة في الأدوات. DoubleMLData يقبل قائمة في d_cols وسيبتهج بإرجاع ثلاثة تأثيرات علاج في جدول ملخص واحد:
dml_data_multi = dml.DoubleMLData(
df, y_col='filled', d_cols=['queue_pos', 'toxicity', 'spread_at_post'],
x_cols=confounder_cols,
)
ثلاثة صفوف، ثلاثة p-values، ومشكلة اختبار متعددة الجدول الملخص لا يذكرها. إذا قرأت كل ثلاثة، عدل كل ثلاثة. إذا كان واحد فقط هو السؤال المسجل مسبقاً، قل ذلك، وعامل الآخرين بشكل صريح بأنهم استكشافيون.
التقاطع المتقاطع على السلاسل الزمنية: الإزالة، الحظر، طيات مخصصة

DML القياسي يفترض ملاحظات i.i.d. بيانات دفتر الأوامر ليست كذلك، ونمط الفشل هو ما وثقته المدونة بالفعل بالتفصيل: الصفوف المتجاورة تشرك نوافذ أمامية متداخلة، لذا TimeSeriesSplit العادي لا يزال يتسرب الإجابة عبر حدود الطية. انظر نمذجة الانتشار مع التعلم الآلي لتنفيذ المشي للأمام المطهر والمحجور والسبب مطلوب فجوة لا تقل عن horizon صفوف، و تصنيف تحيز النظر إلى الأمام لكتالوج التسريبات الكاملة ومقاديرها المقاسة.
الجزء الخاص بـ DML حقاً هو كيف تسلم طيات مطهرة للمقدماً، لأن set_sample_splitting له عقد يعلق الناس:
import numpy as np
import doubleml as dml
def purged_folds(n: int, n_splits: int, horizon: int):
"""طيات النافذة المتوسعة مع فجوة إزالة/حظر من صفوف `horizon`.
نفس البناء مثل CV المشي للأمام المطهر في مقال نمذجة الانتشار:
الفجوة تزيل التداخل بين نافذة أمامية لصف تدريب وصف تحقق.
"""
fold_size = n // (n_splits + 1)
for k in range(1, n_splits + 1):
train_end = fold_size * k
val_start = train_end + horizon
val_end = val_start + fold_size
if val_end > n:
break
yield np.arange(0, train_end - horizon), np.arange(val_start, val_end)
folds = list(purged_folds(len(df), n_splits=5, horizon=HORIZON))
dml_plr = dml.DoubleMLPLR(dml_data, ml_l=ml_l, ml_m=ml_m)
dml_plr.set_sample_splitting([folds])
dml_plr.fit()
شيئان يجب أن تكون على دراية بهما، وليسا واضحين من مستندات المكتبة:
- طيات المشي للأمام المطهرة لا تغطي كل صف. فجوات الإزالة وكتلة التدريب الأولية ليست أبداً طية تحقق لأي شخص، لذا يقدر من أقل من بقايا بشكل صارم. هذا سلوك صحيح، ليس خطأ، لكنه يعني أن الفعال في صيغة التباين هو عدد صفوف الاختبار المجمعة — تحققه بدلاً من افتراضه.
- تكرارات
n_repليست حرة هنا. مع K-fold العشوائي، تكرار التقاطع المتقاطع والتوسط هو تقليل تباين رخيص. مع تقسيم مرتب زمنياً حتمي، هناك تقسيم واحد فقط، لذاn_repلا يشتري شيئاً ولا يخفي شيئاً؛ الاستقرار يجب أن يأتي من إعادة التشغيل على نوافذ بيانات مختلفة بدلاً من ذلك.
لهياكل اللوحة (عدة رموز في نفس الفترة)، DoubleML يدعم أخطاء معيارية قوية المجموعات — مجموع على الرمز، ليس على الوقت، وانظر التحقق متعدد الرموز لموقف المدونة حول متى يتم تأسيس نتيجة متقاطعة الأدوات فعلياً.
الحالة المقاسة: موقع الطابور واحتمالية الملء

هذا هو السؤال السببي الوحيد في المقال حيث يمتلك المشروع بالفعل البيانات، ويجب تشغيله ليس طرحه. تحليل موقع الطابور يغطي بالفعل تقدير الموقع، ميكانيكا FIFO، معدلات التصريف والوقت للملء على بيانات دفتر أوامر حقيقية؛ محاكاة الملء يغطي نمذجة احتمالية الملء وحلقة المعايرة مقابل ملءات حية. كلاهما ينتج نموذجاً تنبؤياً للملءات. DML يحول نفس المدخلات إلى تقدير سببي.
المواصفات، مسجلة مسبقاً قبل النظر في التقدير:
- النتيجة : ممتلئ خلال لقطات
HORIZON(ثنائية). - العلاج : موقع الطابور المعجل عند الوضع.
- المربكات : التقلب المتحقق 1s، الانتشار المقتبس في bps، عدم التوازن العميق، حجم المستوى عند النشر، المسافة من الوسط في_TICKS، ترميز الوقت من اليوم، تسمية النظام.
from sklearn.ensemble import GradientBoostingRegressor
import doubleml as dml
confounder_cols = [
'rv_1s', 'spread_bps', 'depth_imbalance', 'level_size',
'dist_from_mid_ticks', 'tod_sin', 'tod_cos', 'regime',
]
dml_data = dml.DoubleMLData(
df, y_col='filled', d_cols='queue_pos_norm', x_cols=confounder_cols,
)
ml_l = GradientBoostingRegressor(n_estimators=300, max_depth=5)
ml_m = GradientBoostingRegressor(n_estimators=300, max_depth=5)
dml_plr = dml.DoubleMLPLR(dml_data, ml_l=ml_l, ml_m=ml_m, score='partialling out')
dml_plr.set_sample_splitting([folds])
dml_plr.fit()
print(dml_plr.summary)
dml_plr.sensitivity_analysis()
print(dml_plr.sensitivity_summary)
النتيجة المبلغ عنها هي مقارنة من أربعة أعمدة، ليس معاملاً واحداً: تقدير ساذج OLS لـ على وحده، تقدير التحكم الخطي لـ على و ، تقدير DML مع خطئه المعياري، و قيمة المتانة من تحليل الحساسية — مدى قوة مربك غير مرصود يجب أن يكون لإلغاء التأثير. الفجوة بين الأعمدة الساذجة و DML هي الكمية الحقيقية للاهتمام: هي مقدار القيمة الظاهرة لموقع الطابور كانت حالة سوق ترتدي زيًا.
صفر أو سلبي هنا هو نتيجة قابلة للنشر وتتناسب مع هذه المدونة أفضل من واحدة إيجابية نظيفة. إذا انهار التأثير السببي لموقع الطابور بمجرد إزالة التقلب وحجم المستوى جزئياً، هذه نتيجة مباشرة حول سياسة وضع الأوامر: الفتحة ليست ما تكسب الملء، الظروف التي حصلت فيها الفتحة هي.
تحليل العامل السببي
النهج القياسي لاستثمار العوامل هو ارتباطي: رتب حسب السمة، شكل محافظ طويلة-قصيرة، لاحظ أن العوائد تختلف. DML يتيح اختباراً مختلفاً — تقدير التأثير السببي المباشر لسمة على العوائد، إزالة تأثيرات التربيط للسمات الأخرى. إذا اختفى التأثير تحت DML، العامل ليس سببياً بشكل مستقل؛ هو بديل.
هذا هو ثانياً، شكل مستقل من تشكك العوامل، ويستحق أن يكون صريحاً حول كيف يرتبط بالواحد الذي تنشره المدونة بالفعل. نسبة sharpe المنخفضة يهاجم حديقة العوامل من جانب الاختيار: مع ما يكفي من المحاولات، يمكن للعامل أن يبدو مهماً بشكل صحيح لأنك نظرت كثيراً. DML يهاجمها من جانب التربيط: يمكن للعامل أن يبدو مهماً في اختبار صادق واحد ولا يزال بديلاً لشيء آخر في مجموعة الشرط. على العامل أن ينجو من كلاهما ليكون مهتماً، ونمطا الفشل مستقلان — اجتياز واحد لا يخبرك أي شيء عن الآخر.
ما لا يستطيع DML فعله
-
يتطلب أن تكون المربكات مرصودة. إذا كان متغير غير مرصود يقود كل من العلاج والنتيجة، DML متحيز، ولا تقدم أي قدرة ML إصلاح مشكلة تعريف. تحليل الحساسية يحد المخاطرة؛ لا يزيلها.
-
يقدر تأثيراً متوسطاً. إذا كان تأثير موقع الطابور يختلف بشكل حاد عبر الأنظمة، تقدير النقطة هو المتوسط فوق مزيج نظام عينتك. للheterogeneity استخدم نموذج الانحدار التفاعلي (
DoubleMLIRM) أو غابة سببية. -
يفترض نموذجاً هيكلياً. المواصفات الخطية الجزئية تتطلب أن يدخل العلاج معادلة النتيجة بطريقة معينة. إذا كانت العملية الحقيقية مختلفة بشكل أساسي، DML خاطئ بثقة.
-
لا يكتشف هيكل سببي. DML يقدر تأثير علاج محدد مسبقاً. لا يخبرك أي المتغيرات أسباب.
-
يعفيك من الاختبار المتعدد. إعادة النقطة أعلاه لأنها الأكثر تخطياً غالباً: التعامد يزيل التحيز من تقدير المربكات، ليس بحث المواصفات.
ملاحظات عملية
حجم العينة. DML يحتاج نماذج المربكات لتتقارب عند ، الذي في الممارسة يعني صفوف كافية لنماذج ML لتقريب و على الإطلاق. بدلاً من الوثوق بحدود أرقام مستديرة، أثبت الكفاية بشكل تجريبي بالطريقة التي يفعلها التحقق متعدد الرموز — تحقق مما إذا كان التقدير يصمد عبر الأدوات والفترات الفرعية، وعامل عدم الاستقرار كإشارة هو.
اختيار المتعلم. حقيقة DML الخاصة ضيقة لكن مفيدة: مع تقارب ، المتعلم يؤثر على الكفاءة لـ (عرض الفاصل)، ليس اتساقه. المتعلمون الذين يستحقون الوصول إليهم على بيانات سوق جدولية، ولماذا التعزيز التدرجي هو الافتراضي، مغطى بالفعل في نمذجة الانتشار مع التعلم الآلي. إذا كان يتحرك بشكل مادي عبر المتعلمين، هذا ليس قائمة للاختيار منها — هو أن الدوال المزعجة سيئة التقدير، وبما في القسم أعلاه، انتقاء الأكثر ودية يحول التمرين إلى بحث.
الخاتمة
DML يعطي المدونة شيئاً لم تكن تمتلكه: طريقة لذكر دقيقة هيكلية سوق كمعامل سببي مع خطأ معياري يمكن الدفاع عنه، بدلاً من التنبؤ مع درجة تحقق جيدة.
الأفكار الأساسية الثلاثة المحملة هي:
- عامد الدرجة بحيث تلغي أخطاء المرحلة الأولى إلى الدرجة الثانية.
- تقاطع متقاطع، مع طيات مطهرة ومحجورة على بيانات السلاسل الزمنية، بحيث لا يمكن الإفراط في التخصيص في المرحلة الأولى إزاحة .
- حدد مسبقاً، بحيث يكون الفاصل الذي تبلغ عنه هو الفاصل الذي كسبته بالفعل.
المقدماً هو الجزء السهل. الأجزاء الصعبة دون تغيير: تحديد المربكات المهمة، حجة أن افتراضات التعريف صالحة، ومقاومة الرغبة في تشغيل المواصفة مرة أخرى.
المراجع
نسب DML قصير ويستحق سطراً واحداً: هو نموذج روبنسون (1988) الخطي الجزئي مع ML يحل محل مقدرات النواة، محققاً حد كفاءة شبه حدودي، مع شرط تعامد يعود إلى اختبار Neyman's C() وقريب ابن عم في الأدبيات التعلم المستهدف (TMLE). مساهمة Chernozhukov et al. كانت إظهار أن هذا يمكن أن يكون تشغيلياً مع متعلمي ML تعسفيين مع الحفاظ على استدلال طبيعي -consistent، تقريباً طبيعي.
- Chernozhukov, V., Chetverikov, D., Demirer, M., Duflo, E., Hansen, C., Newey, W., & Robins, J. (2018). Double/Debiased Machine Learning for Treatment and Structural Parameters. The Econometrics Journal, 21(1), C1-C68.
- Robinson, P. M. (1988). Root-N-Consistent Semiparametric Regression. Econometrica, 56(4), 931-954.
- Bach, P., Chernozhukov, V., Kurz, M. S., & Spindler, M. (2022). DoubleML — An Object-Oriented Implementation of Double Machine Learning in Python. Journal of Machine Learning Research, 23(53), 1-6.
- Facure, M. (2022). Causal Inference for the Brave and True. Chapter 22: Debiased/Orthogonal Machine Learning.
- Cahan, E., Bai, J., & Ng, S. (2024). Causal Factor Investing. Quantitative Finance.
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.