डबल मशीन लर्निंग: रिटर्न की भविष्यवाणी के बजाय एक कारणीय पैरामीटर का अनुमान लगाना
इस ब्लॉग का हर मॉडलिंग लेख अब तक एक ही आकार का प्रश्न प्रस्तुत करता है: विशेषताएं दी गई हैं, एक संख्या की भविष्यवाणी करें, फिर मान्य करें कि भविष्यवाणी नमूने के बाहर जीवित रहती है। स्प्रेड मॉडल स्प्रेड की भविष्यवाणी करते हैं। फिल मॉडल फिल संभावना की भविष्यवाणी करते हैं। पूरे मान्यता उपकरण — purged walk-forward, deflated Sharpe, look-ahead taxonomy — मौजूद हैं यह जांचने के लिए कि क्या एक भविष्यवाणी वास्तविक है।
यह लेख एक अलग आकार का प्रश्न प्रस्तुत करता है, और यह ब्लॉग के लिए एकमात्र ऐसी मशीनरी है जिसके पास यह कभी नहीं थी: एक एकल स्केलर पैरामीटर का अनुमान लगाएं जिसका एक कारणीय व्याख्या है, और इसे एक मानक त्रुटि संलग्न करें जो इस तथ्य को बनाए रखती है कि वहां पहुंचने के लिए एक लचील ML मॉडल का उपयोग किया गया था।
यह एक अलंकारिक अंतर नहीं है। "कतार स्थिति फिल संभावना की भविष्यवाणी करती है" सत्य है और परिचालन रूप से बेकार है — जाहिर है ऐसा ही है, दोनों गहराई और अस्थिरता से संचालित होते हैं। "कतार में एक स्थान आगे बढ़ने से फिल संभावना में का एक बदलाव होता है, बाजार स्थिति को स्थिर रखते हुए" एक ऐसी संख्या है जिसे आप ऑर्डर प्लेसमेंट नीति में डाल सकते हैं। पहला एक रिग्रेशन फिट है। दूसरे के लिए एक अनुमानक की आवश्यकता होती है जो मानक ML टूलबॉक्स में मौजूद नहीं है, क्योंकि एक लचील पहले चरण में नियमितीकरण और ओवरफिटिंग बिल्कुल उस गुणांक को प्रभावित करते हैं जो आपके लिए महत्वपूर्ण है।
डबल मशीन लर्निंग (Chernozhukov, Chetverikov, Demirer, Duflo, Hansen, Newey & Robins, 2018) वह अनुमानक है जो इसे ठीक करता है। हर क्वांटिटेटिव ट्रेडर ने इसे सुना है: सहसंबंध कारण नहीं है। DML वह भाग है जो उस वाक्य के बाद आता है।
भोला रिग्रेशन क्यों विफल रहता है

प्रश्न को ब्लॉग के अपने क्षेत्र में स्थापित करें। हम फिल संभावना पर कतार स्थिति का कारणीय प्रभाव चाहते हैं:
- : क्या अवलोकन पर आराम करने वाली लिमिट ऑर्डर हॉरिज़न के भीतर भरी गई।
- : प्लेसमेंट पर कतार स्थिति (स्तर आकार से सामान्यीकृत)।
- : confounders — वास्तविक अस्थिरता, उद्धृत स्प्रेड, गहराई असंतुलन, स्तर आकार, दिन का समय, शासन लेबल। ये बाजार स्थिति चर हैं जो ब्लॉग पहले से स्प्रेड मॉडलिंग विथ मशीन लर्निंग में गणना करता है।
कारणीय पैरामीटर है में
जहां बाजार स्थिति और फिल परिणाम के बीच (संभावित रूप से जटिल, गैर-रेखीय) संबंध को कैप्चर करता है।
उपचार यादृच्छिक रूप से नहीं सौंपा गया है। आप कतार के सामने क्योंकि स्तर पतला था, या क्योंकि आपने एक शांत अवधि के दौरान पोस्ट किया, या क्योंकि बुक आपके पक्ष में असंतुलित था। समान स्थितियां स्वतंत्र रूप से यह निर्धारित करती हैं कि क्या आप भरे हैं। यह भ्रम है।
दृष्टिकोण 1: Confounders की अवहेलना करें। को केवल पर रिग्रेस करें। अनुमान दोनों से सहसंबंधित प्रत्येक confounder का प्रभाव अवशोषित करता है। पाठ्यपुस्तक छोड़ी गई चर पूर्वाग्रह: पतले स्तर आपको एक अच्छी कतार स्लॉट और उच्च फिल दर दोनों देते हैं, इसलिए आप स्लॉट के मूल्य को अधिक कहते हैं।
दृष्टिकोण 2: नियंत्रण के साथ रैखिक रिग्रेशन। को और पर रिग्रेस करें। यह केवल तभी काम करता है यदि वास्तव में रैखिक है। बुक गतिकी नहीं है — फिल/अस्थिरता संबंध में सीमाएं हैं, गहराई-असंतुलन प्रभाव शासन द्वारा संकेत बदलता है। को गलत तरीके से निर्दिष्ट करना पूर्वाग्रह को फिर से पेश करता है।
दृष्टिकोण 3: ML भविष्यवाणी। पर एक ग्रेडिएंट बूस्टेड मॉडल फिट करें। आपको नमूने के बाहर अच्छा भेदभाव मिलता है, और कोई कारणीय व्याख्या नहीं मिलती है। मॉडल हर भविष्यवाणी पैटर्न को कैप्चर करता है, कारणीय या नहीं; नियमितीकरण उपचार के योगदान को सिकोड़ता है जो को पूर्वाग्रहित करता है; और कोई मानक त्रुटि नहीं है जिस पर आप भरोसा कर सकें।
यह मूल तनाव है। ML भविष्यवाणी में अच्छा है, लेकिन कारणीय पैरामीटर पर भोला अनुप्रयोग पूर्वाग्रहित, गैर-सामान्य, अविश्वसनीय अनुमान उत्पन्न करता है।
आंशिक रूप से रैखिक मॉडल

DML एक संरचनात्मक ढांचे के भीतर काम करता है। कार्यभार आंशिक रूप से रैखिक रिग्रेशन (PLR) है:
- रुचि का कारणीय पैरामीटर है।
- एक न्यूइस फ़ंक्शन है — परिणाम का वह हिस्सा जो बाजार स्थिति से समझाया गया है।
- एक अन्य न्यूइस फ़ंक्शन है — बाजार स्थिति के आधार पर उपचार की सशर्त अपेक्षा (सतत-उपचार सेटिंग में "propensity")।
- और संरचनात्मक अवशिष्ट हैं।
मुख्य अंतर्दृष्टि: कम आयामी है, लेकिन और मनमाने रूप से जटिल हो सकते हैं। हम चाहते हैं कि ML न्यूइस फ़ंक्शन को संभाले जबकि अभी भी स्केलर पर मान्य अनुमान दे।
"डबल" क्यों?
दो ML मॉडल, एक नहीं:
- परिणाम मॉडल: — बाजार स्थिति से अकेले परिणाम की भविष्यवाणी करें।
- उपचार मॉडल: — बाजार स्थिति से अकेले उपचार की भविष्यवाणी करें।
अवशिष्ट बनाएं
और को पर रिग्रेस करके का अनुमान लगाएं:
यह स्टेरॉयड पर Frisch-Waugh-Lovell है: एक रैखिक प्रक्षेपण के बजाय ML के साथ confounders को पार्टियल-आउट करें, फिर अवशिष्ट विविधता से उपचार प्रभाव पढ़ें।
Neyman ऑर्थोगोनैलिटी: यह क्यों काम करता है
भोला पार्टियल-आउट दृष्टिकोण ( का अनुमान लगाएं, घटाएं, रिग्रेस करें) विफल हो जाता है क्योंकि में ML अनुमान त्रुटियां सीधे में चली जाती हैं। DML स्कोर इस तरह बनाया गया है कि यह Neyman orthogonal हो — न्यूइस फ़ंक्शन में छोटे व्यवधानों के प्रति असंवेदनशील।
PLR के लिए ऑर्थोगोनल स्कोर:
जहां । ऑर्थोगोनैलिटी स्थिति है
सहज रूप से, स्कोर केवल और में उस विविधता का उपयोग करता है जो से स्वतंत्र है, और एक न्यूइस फ़ंक्शन में त्रुटियां दूसरे द्वारा ऑफसेट होती हैं। यदि उपचार को थोड़ा अधिक भविष्यवाणी करता है, थोड़ा बहुत छोटा है, लेकिन को गलत अनुमान लगाने से में संबंधित त्रुटि एक भरपाई दिशा में धकेलती है। पूर्वाग्रह द्वितीय कोटि बन जाता है — दो पहले-चरण त्रुटियों का उत्पाद — पहले कोटि के बजाय।
औपचारिक रूप से, यदि दोनों न्यूइस अनुमानक दर पर परिवर्तित होते हैं (मध्यम; अधिकांश उचित ML विधियां इसे साफ करती हैं), तो
इसलिए पैरामीट्रिक दर पर परिवर्तित होता है और स्पर्शोन्मुख रूप से सामान्य है।
क्रॉस-फिटिंग: यह यहां अनिवार्य क्यों है
अकेली ऑर्थोगोनैलिटी पर्याप्त नहीं है। यदि न्यूइस मॉडल को का अनुमान लगाने के लिए उपयोग की गई उसी पंक्तियों पर फिट किया जाता है, तो पहले-चरण ओवरफिटिंग दूसरे चरण को दूषित करता है — और विशिष्ट हान यह बताने योग्य है, क्योंकि यह वह हानि नहीं है जिसे आप जानते हैं। अन्यत्र, ओवरफिटिंग एक फूला हुआ मान्यता स्कोर के रूप में दिखाई देता है: आप इसे नोटिस करते हैं, इसे डिस्काउंट करते हैं, आप आगे बढ़ते हैं। यहां यह के लिए स्थानांतरित बिंदु अनुमान के रूप में दिखाई देता है, एक विश्वास अंतराल के साथ जो अभी भी संकीर्ण है और अभी भी गलत संख्या पर केंद्रित है। शक करने के लिए कोई स्कोर नहीं है। अनुमानक बस शांति से झूठ बोलता है।
क्रॉस-फिटिंग निर्भरता तोड़ता है: प्रत्येक अवलोकन की न्यूइस भविष्यवाणियां उस मॉडल से आती हैं जो इसके बिना प्रशिक्षित किया गया था, और को पूल किए गए held-out अवशिष्ट से अनुमानित किया जाता है। तंत्र साधारण K-फोल्ड मशीनरी है, स्प्रेड मॉडलिंग विथ मशीन लर्निंग में शामिल है; नीचे जो मायने रखता है वह यह है कि आप इसे कौन से फोल्ड देते हैं।
DML एल्गोरिदम चरण दर चरण
इनपुट: डेटा , ML विधियां और , फोल्ड ।
चरण 1 — विभाजन: को असंबद्ध फोल्ड में विभाजित करें।
चरण 2 — क्रॉस-फिट न्यूइस मॉडल: के लिए, फोल्ड के पूरक पर और को प्रशिक्षित करें, फिर के लिए और की गणना करें।
चरण 3 — अनुमान:
चरण 4 — अनुमान:
विश्वास अंतराल के साथ।
विश्वास अंतराल बिल्कुल एक प्रश्न के लिए मान्य है
यह वह शर्त है जो तय करती है कि क्या DML परिणाम का कुछ मूल्य है, और यह वह जगह है जहां विधि के अधिकांश अनुप्रयोग उपयोग शांति से टूट जाते हैं।
उपरोक्त स्पर्शोन्मुख सामान्यता एक पूर्व-निर्धारित उपचार, एक पूर्व-निर्धारित confounder सेट, एक पूर्व-निर्धारित स्कोर के बारे में एक बयान है। इन्हें पहले से ठीक करें, अनुमानक को एक बार चलाएं, और अंतराल वही कहता है जो यह कहता है। तीन उम्मीदवार उपचारों की कोशिश करें, या चार confounder सेट, या p-value बेहतर दिखाई देने तक learners को स्वैप करें, और आप अब अनुमान नहीं कर रहे हैं — आप एक खोज चला रहे हैं, और रिपोर्ट किया गया p-value एक अधिकतम का p-value है, एक ड्रा का नहीं।
ब्लॉग पहले से ही माप चुका है कि इससे क्या होता है। deflated Sharpe ratio अध्ययन में, शुद्ध शोर पर शून्य वास्तविक किनारे के साथ खोज एक भोला गलत-खोज दर 1.000 का उत्पादन करती है — अनसमायोजित परीक्षण हर बार फायर करता है — जबकि विजेता का माध्यिका भोला p-value 0.0007 के पास बैठता है। Neyman ऑर्थोगोनैलिटी के बारे में कुछ भी आपको इससे नहीं बचाता। ऑर्थोगोनैलिटी न्यूइस अनुमान से पूर्वाग्रह को ठीक करती है; यह स्पेसिफिकेशन खोज से पूर्वाग्रह के बारे में कुछ नहीं कहता। छह स्पेसिफिकेशन की कोशिश करने के बाद प्राप्त 1e-05 का DML p-value को बिल्कुल वही 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` पंक्तियों के पर्ज/एम्बार्गो गैप के साथ विस्तार-विंडो फोल्ड।
स्प्रेड-मॉडलिंग लेख में purged walk-forward 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-फोल्ड के साथ, क्रॉस-फिटिंग और औसत को दोहराना एक सस्ता वेरिएंस में कमी है। एक नियत समय-आदेशित विभाजन के साथ, केवल एक विभाजन है, इसलिएn_repकुछ खरीदता नहीं और कुछ छिपाता नहीं; स्थिरता को विभिन्न डेटा विंडोज पर फिर से चलाने से आना चाहिए।
पैनल संरचनाओं के लिए (उसी अवधि में कई प्रतीक), DoubleML क्लस्टर-रोबस्ट मानक त्रुटियों का समर्थन करता है — प्रतीक पर क्लस्टर करें, समय पर नहीं, और मल्टी-सिंबल वैलिडेशन के लिए ब्लॉग की स्थिति देखें कि जब एक क्रॉस-इंस्ट्रूमेंट परिणाम वास्तव में स्थापित होता है।
मापा गया मामला: कतार स्थिति और फिल संभावना

यह लेख में एकमात्र कारणीय प्रश्न है जहां परियोजना के पास पहले से डेटा है, और इसे चलाया जाना चाहिए, न कि प्रस्तुत किया जाना चाहिए। कतार स्थिति विश्लेषण पहले से वास्तविक बुक डेटा पर स्थिति अनुमान, FIFO यंत्रवत्, ड्रेन दर और टाइम-टू-फिल को कवर करता है; फिल सिमुलेशन फिल संभावना मॉडलिंग और लाइव फिल के खिलाफ कैलिब्रेशन लूप को कवर करता है। दोनों फिल्स का एक भविष्यवाणी मॉडल उत्पन्न करते हैं। DML समान इनपुट को एक कारणीय अनुमान में बदल देता है।
विनिर्देश, अनुमान देखने से पहले पूर्व-पंजीकृत:
- परिणाम :
HORIZONस्नैपशॉट के भीतर भरा हुआ (बाइनरी)। - उपचार : प्लेसमेंट पर सामान्यीकृत कतार स्थिति।
- Confounders : वास्तविक 1s अस्थिरता, bps में उद्धृत स्प्रेड, गहराई असंतुलन, पोस्ट पर स्तर आकार, टिक्स में मिड से दूरी, दिन के समय एन्कोडिंग, शासन लेबल।
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 अनुमान, और संवेदनशीलता विश्लेषण से रोबस्टनेस मान — एक अप्रेक्षित confounder प्रभाव को खत्म करने के लिए कितना मजबूत होना होगा। भोले और DML स्तंभों के बीच की खाई वास्तविक रुचि की मात्रा है: यह कतार स्थिति का कितना स्पष्ट मूल्य बाजार स्थिति था जिसने वेशभूषा पहनी थी।
यहां एक शून्य या नकारात्मक एक प्रकाशनीय परिणाम है और एक साफ धनात्मक से बेहतर इस ब्लॉग के अनुकूल है। यदि कतार स्थिति का कारणीय प्रभाव एक बार अस्थिरता और स्तर आकार को आंशिक रूप से बाहर निकालने के बाद ढह जाता है, तो यह ऑर्डर प्लेसमेंट नीति के बारे में एक प्रत्यक्ष निष्कर्ष है: स्लॉट वह नहीं है जो फिल कमाता है, वह शर्तें जिनमें आपने स्लॉट प्राप्त किया, वह हैं।
कारणीय कारक विश्लेषण
कारक निवेश के लिए मानक दृष्टिकोण साहचर्य है: एक विशेषता द्वारा क्रमबद्ध करें, लॉन्ग-शॉर्ट पोर्टफोलियो बनाएं, देखें कि रिटर्न भिन्न हैं। DML एक अलग परीक्षण सक्षम बनाता है — रिटर्न पर एक विशेषता का प्रत्यक्ष कारणीय प्रभाव अनुमानित करें, अन्य विशेषताओं के भ्रम प्रभावों को बाहर निकालते हुए। यदि प्रभाव DML के तहत गायब हो जाता है, तो कारक स्वतंत्र रूप से कारणीय नहीं है; यह एक प्रॉक्सी है।
यह कारक संशय का एक दूसरा, स्वतंत्र रूप है, और यह स्पष्ट होने योग्य है कि यह उससे कैसे संबंधित है जिसे ब्लॉग पहले से प्रकाशित करता है। deflated Sharpe ratio चयन की ओर से कारक चिड़ियाघर पर हमला करता है: पर्याप्त परीक्षणों के साथ, एक कारक महत्वपूर्ण दिखाई दे सकता है क्योंकि आपने कई बार देखा। DML इसे भ्रम की ओर से हमला करता है: एक कारक एक ईमानदार परीक्षण पर महत्वपूर्ण दिखाई दे सकता है और फिर भी कंडीशनिंग सेट में किसी और चीज़ का प्रॉक्सी हो सकता है। दिलचस्प होने के लिए एक कारक को दोनों को बचना होगा, और दो विफलता मोड स्वतंत्र हैं — एक को पास करने से दूसरे के बारे में कुछ नहीं पता चलता।
DML क्या नहीं कर सकता
-
इसके लिए आवश्यक है कि confounders देखे जाएं। यदि एक अप्रेक्षित चर दोनों उपचार और परिणाम को चलाती है, DML पूर्वाग्रहित है, और कोई ML परिष्कार एक पहचान समस्या को ठीक नहीं करता। संवेदनशीलता विश्लेषण जोखिम को सीमित करता है; यह इसे दूर नहीं करता।
-
यह एक औसत प्रभाव का अनुमान लगाता है। यदि कतार स्थिति का प्रभाव शासनों में तीक्ष्ण रूप से भिन्न होता है, बिंदु अनुमान आपके नमूने के शासन मिक्स का औसत है। विषमता के लिए इंटरैक्टिव रिग्रेशन मॉडल (
DoubleMLIRM) या एक कारणीय वन का उपयोग करें। -
यह एक संरचनात्मक मॉडल मानता है। आंशिक रूप से रैखिक विनिर्देश के लिए आवश्यक है कि उपचार एक विशेष तरीके से परिणाम समीकरण में प्रवेश करे। यदि वास्तविक प्रक्रिया मौलिक रूप से अलग है, DML आत्मविश्वास से गलत है।
-
यह कारणीय संरचना की खोज नहीं करता। DML एक पूर्व-निर्धारित उपचार का प्रभाव अनुमानित करता है। यह आपको नहीं बताता कि कौन से चर कारण हैं।
-
यह आपको बहु-परीक्षण से छूट नहीं देता। ऊपर का बिंदु दोहराना क्योंकि यह सबसे अधिक बार छोड़ा जाता है: ऑर्थोगोनैलिटी न्यूइस अनुमान को de-biases करती है, स्पेसिफिकेशन खोज नहीं।
व्यावहारिक नोट्स
नमूना आकार। DML को न्यूइस मॉडल की आवश्यकता होती है पर परिवर्तित हों, जो व्यवहार में पर्याप्त पंक्तियों का मतलब है ताकि ML मॉडल और को बिल्कुल सन्निकटित कर सकें। गोल संख्या थ्रेशहोल्ड्स पर भरोसा करने के बजाय, मल्टी-सिंबल वैलिडेशन के तरीके से आकलन से स्थापित करें — जांचें कि क्या अनुमान इंस्ट्रूमेंट्स और उप-अवधियों में बना रहता है, और अस्थिरता को संकेत के रूप में व्यवहार करें।
Learner चयन। DML-विशिष्ट तथ्य संकीर्न लेकिन उपयोगी है: अभिसरण दिया गया, learner की दक्षता (अंतराल चौड़ाई) को प्रभावित करता है, इसकी निरंतरता नहीं। टेबुलर मार्केट डेटा पर कौन से learners तक पहुंचने योग्य हैं, और क्यों ग्रेडिएंट बूस्टिंग डिफ़ॉल्ट है, स्प्रेड मॉडलिंग विथ मशीन लर्निंग में पहले से कवर किया गया है। यदि learners के पार भौतिक रूप से चलता है, तो यह चुनने के लिए एक मेनू नहीं है — यह प्रमाण है कि न्यूइस फ़ंक्शन खराब अनुमानित हैं, और ऊपर अनुभाग के अनुसार, सबसे अनुकूल का चयन करना व्यायाम को एक खोज में बदल देता है।
निष्कर्ष
DML ब्लॉग को वह देता है जिसके पास यह नहीं था: एक बाजार-सूक्ष्म संरचना दावे को कारणीय पैरामीटर और बचाव योग्य मानक त्रुटि के रूप में बयान करने का एक तरीका, अच्छे मान्यता स्कोर के साथ एक भविष्यवाणी के बजाय।
तीन भार वहन करने वाले विचार हैं:
- स्कोर को ऑर्थोगनलाइज़ करें ताकि पहले-चरण त्रुटियां दूसरे क्रम में रद्द हो जाएं।
- क्रॉस-फिट, टाइम सीरीज़ डेटा पर पर्ज और एम्बार्गो फोल्ड के साथ, ताकि पहले-चरण ओवरफिटिंग को स्थानांतरित न कर सके।
- पूर्व-निर्धारित करें, ताकि आप जो अंतराल रिपोर्ट करते हैं वह वह अंतराल है जिसे आपने वास्तव में अर्जित किया है।
अनुमानक आसान भाग है। कठिन भाग अपरिवर्तित हैं: यह तय करना कि कौन से confounders मायने रखते हैं, यह तर्क देना कि पहचान धारणाएं सत्य हैं, और विनिर्देश को एक और बार चलाने की इच्छा का प्रतिरोध करना।
संदर्भ
DML की वंशावली छोटी है और एक पंक्ति के लायक है: यह रॉबिन्सन (1988) का आंशिक रूप से रैखिक मॉडल है जिसमें ML कर्नेल अनुमानकों को बदल देता है, सेमीपैरामेट्रिक दक्षता सीमा को प्राप्त करता है, एक ऑर्थोगोनैलिटी स्थिति के साथ जो Neyman's C() परीक्षण और लक्षित-सीखन (TMLE) साहित्य में एक करीबी चचेरे का पता लगाती है। Chernozhukov et al. का योगदान यह दिखाना था कि इसे मनमाना ML learners के साथ कार्यात्मक बनाया जा सकता है जबकि -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.