Қосты Машинанық Оқыту: Дәлелдерді Болжаудың Орнына Себептік Параметрді Бағалау
Бұл блогтағы барлық модельдеу мақалалары бірдей пішіндегі сұрақ қояды: белгілер берілгенде, сан болжаңыз, содан кейін болжамның үлгіден тыс білінетінін тексеріңіз. Таралу модельдері таралуды болжайды. Толтыру модельдері толтыру ықтималдылығын болжайды. Тексеру аппаратының бәрі — тазартылған walk-forward, ысымды Sharpe, алдын-ала қарау таксономиясы — болжамның нақты екенін тексеру үшін бар.
Бұл мақала басқа пішіндегі сұрақты қояды, және бұл блогтың ешқашанда болмаған жалғыз құрылдырығы: себептік интерпретациясы бар бір скалярлық параметрді бағалаңыз және оған икемді ML моделі қолданылған факты жоятын стандартты қатені жалғаңыз.
Бұл риторикалық айырмашылық емес. "Кезек позициясы толтыру ықтималдылығын болжайды" деген triviaлық түрде шын және операциялық жағынан пайдасыз — әрине, солай, екеуі де тереңдік және айнымалылықпен басқарылады. "Кезектеге бір позиция алға жылжу себеп болады толтыру ықтималдылығында өзгерісіне, нарық жағдайы тұрақты кезінде" — бұл тапсырыс орналасу саясатына қоя алатын сан. Біріншісі — регрессиялық сәйкестіру. Екіншісі үшін стандартты ML жиынтығында жоқ бағалаушы қажет, себебі икемді бірінші кезеңде жіктеу және үстеме оқыту сіз қызығайтын коэффициентті дәл бұрідей бұзады.
Қосты Машинанық Оқыту (Chernozhukov, Chetverikov, Demirer, Duflo, Hansen, Newey & Robins, 2018) — бұны шешетін бағалаушы. әрбір сандық трейдер естіді: корреляция себептілік емес. DML — бұл сөйлемнен кейінгі бөлік.
Неге Наивті Регрессия Сәтсіз Болады

Сұрақты блогтың өз аймағында орнатыңыз. Біз кезек позициясының толтыру ықтималдылығына себептік әсерін қалаймыз:
- : бақылау -дегі тыныш тапсырыс шегінің көлеус ішінде толтырылды ма.
- : орналасу кезіндегі кезек позициясы (деңгей өлшемімен нормалданған).
- : бұзушылар — анықталған айнымалылық, цитаталанған спред, тереңдік теңсіздігі, деңгей өлшемі, күн уақыты, режим жапсырмасы. Бұл машинанық оқытумен таралу моделдеу блогі есептейтін нарық жағдайы айнымалылары.
Себептік параметр — мұндағы :
мұндағы нарық жағдайы мен толтыру нәтижесі арасындағы (потенциалды түрде күрделі, сызықтық емес) қатынасты бейнелейді.
Еміле кездейсоқін таңдау емес. Сіз кезектің алдында себебі деңгей жіңіс болды, немесе тыныш кезеңде жарияладыңыз, немесе кітап сіздің пайдаңызға теңсіз болды. Сол жағдайлар сіз толтырылу-толтырлмауыңызды тәуелсіз басқарады. Бұл бұзушылық.
1-ші жолы: Бұзушыларды елемеу. -ді -ге ғана регрессиялаңыз. Бағалау екеуіне де корреляциялы бар әрбір бұзушының әсерін сіңіреді. Оқулық omitted variable bias: жіңіс деңгейлер сізге жақсы кезек орыны мен жоғары толтыру қарқынын береді, сондықтан орынның өз құнын асқа бағалайсыз.
2-ші жолы: Бақылаулармен сызықтық регрессия. -ді және -ке регрессиялаңыз. Бұл шын мәнінде сызықтық болса ғана жұмыс істейді. Кітап динамикасы олай емес — толтыру/айнымалылық қатынасында thresholds бар, тереңдік теңсіздігі әсері режимге қарайн таңбаға ауады. -ді қате меншіктелу бұзушылықты қайтадан енгізеді.
3-ші жолы: ML болжамы. бойынша gradient boosted моделді сәйкестіріңіз. Сіз үлгіден тыс жақсы айыруды аласыз, бірақ ешқандай себептік интерпретация жоқ. Модель әрбір болжамдық үлгіні, себептік немесе, құйып алады; жіктеу емле сіз аңғарған әсерді бұзады; және сенімді стандартты қате жоқ.
Бұл негізгі кернеу. ML болжамда жақсы, бірақ себептік параметрге наивті қолдану бұзылған, нормальды емес, сенімсіз бағалауларды тудырады.
Жартылай Сызықтық Модель

DML құрылымдық рамка ішінде жұмыс істейді. Негізгі жұмыс атар жартылай сызықтық регрессия (PLR):
- — қызығушы себептік параметр.
- — бұлтану функциясы — нарық жағдайымен түсіндірілетін нәтиженің бөлігі.
- — басқа бұлтану функциясы — нарық жағдайы берілген кездегі емле шартты күтуі (үздіксіз емле орнатудағы "propensity").
- және — құрылымдық residuale.
Негізгі түсінік: төмен өлшемді, бірақ және ерікті түрде күрделі болуы мүмкін. Біз ML-ге бұлтану функцияларын басқаруды, ал scalарда жарамды推理 ұсынуды қалаймыз.
Неге "Қос"?
Екі ML моделі, біреу емес:
- Нәтиже моделі: — нарық жағдайынан ғана нәтижені болжаңыз.
- Еміле моделі: — нарық жағдайынан ғана еміле болжаңыз.
Residu формалаңыз
және -ді -ге регрессиялап бағалаңыз:
Бұл стероидпен Frisch-Waugh-Lovell: бұзушыларды сызықтық проекция орнына ML арқылы partial-out, содан кейін residual вариациядан емле әсерін оқыңыз.
Neyman Ортогоналдылығы: Неге Жұмыс Істейді
Наивті partial-out тәсілі (-ді бағала, алып таста, регрессияла) -дегі ML бағалау қателері -ге тіке таралатындықтан сәтсіз болады. DML ұпай Neyman ортогональ болып жасалған — бұлтану функцияларындағы кіші бұзулularға байссыз.
PLR үшін ортогональ ұпай:
мұндағы . Ортогональдылық шарты
Интуитивті түрде, ұпай және -дің -тен тәуелсіз вариациясын ғана қолданады және бір бұлтану функциясындағы қателер екіншісімен өтеледі. Егер емледі аздап кем болжаса, аздап кіші, бірақ -ді қате бағалауыздан -дегі сәйкес қате қарапаймын бағыт итер. Бұзушылық екінші ретті болады — екі бірінші кезең қатенің көбейтіндісі — бірінші ретті емес.
Ресми түрде, егер екі бұлтану бағалаушысы жылдамдықпен жинақтаса (жұмсақ; көптеген ақылды ML әдістері қанағат), онда
сондықтан параметриялық жылдамдықпен жинақтайды және асимптотикалық түрде нормаль.
Cross-Fitting: Міне Неге Міндетті
Ортогоналдылық жеткіліксіз. Егер бұлтану модельдері бағалау үшін қолданылған сол жолдарда сәйкестірілсе, бірінші кезең үстеме оқыту екінші кезеңді ластайды — және нақты зиян дәлдеп айтуға тұрады, себебі бұл сіз әдеттегі зиян емес. Басқа жерлерде, үстеме оқыту ірілген куәктеме ретінде пайда болады: байқайсыз, жеңілдесіп, жалғасыз. Мұнда үшін ығысқан нүкте бағалау ретінде пайда болады, confidence interval әлі тар, бірақ бұрынға сан ортасында. Күдіктейтін ұпай жоқ. Бағалаушы тыныштан жалған айтады.
Cross-fitting тәуелділікті жазады: әрбір бақылаудың бұлтану болжамдары онызсыз оқытылған модельден келеді, және жинақталған held-out residuelerден бағаланады. Механика — қарапайым K-fold машина, машинанық оқытумен таралу моделдеу қамтылған; төменде маңызды — қай foldтарды бередіңіз.
DML Алгоритмі Сатып Саты
Кіріс: деректер , ML әдістері және , foldтер .
1-саты — Бөлу: -ді дисъюнкт foldтерге бөліңіз.
2-саты — Cross-fit бұлтану модельдері: үшін, fold толықтаушысында және оқытыңыз, содан кейін үшін және есептеңіз.
3-саты — Бағалау:
4-саты — Интерференция:
интервалдар .
Сенім аралығы дәл осын бір сұрақ үшін жарамды
Бұл DML нәтижесінің маңызды екенін шешетін ескерту, және әдістің көптеген қолданылған қолданбалары тыныштан құлайды.
Жоғарыдағы асимптотикалық нормальдылық — бір алдын ала анықталған емле, бір алдын ала анықталған бұзушы жиынтығы, бір алдын ала анықталған ұпай туралы мәлімдеме. Оларды алдын ала бекітіңіз, бағалаушыны бір рет жүргізіңіз, және интервал не айтатынын білдіреді. үш үміткер емледі сынап көріңіз, немесе төрт бұзушы жиынтығын, немесе p-value жақы көрінге дейін learner ауыстырыңыз, және сіз推理 орнында іздеу жасайсыз, және хабарланған p-value — maximum-дің 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-value, және қорытынды кесте атап өтпейтін көптестік мәселе. Егер үшеуін оқысан, үшеуін реттеңіз. Егер тек біреу алдын ала тіркелген сұрақ болса, айт екен, және қалған екеуін ашық зерттеу ретінде қарастырыңыз.
Уақыт Реттеріндегі Cross-Fitting: Purge, Embargo, Custom Folds

Стандартты DML i.i.d. бақылауларды болжайды. Кітаб деректері жоқ, және сәтсіздік режимі — блог ерікті түрде құжаттап бергенmode: көршілес жолдар қабаттасқан forward терезелерді бөліседі, сондықтан қарапайым TimeSeriesSplit әлі де жауапты fold шекарасы арқылы өтеді. Тазартылған және embargo жасалған walk-forward жүздеуі және неге кем деген horizon жол аралығы қажет екені үшін машинанық оқытумен таралу моделдеу қараңыз, және ағындар мен олардың өлшенген шамаларының толық каталогы үшін алдын-ала қарау бұзушылық таксономиясы қараңыз.
Шын мәнінде DML-тек бөлігі — тазартылған foldтерді бағалаушыға қалай бередіңіз, себебі set_sample_splitting адамдарды шатастыратын келісімге ие:
import numpy as np
import doubleml as dml
def purged_folds(n: int, n_splits: int, horizon: int):
"""`horizon` жолдары purge/embargo аралығы бар кеңейтілген терезе foldтері.
Таралу моделдеу мақаласындағы тазартылған walk-forward CV-мен бірдей құрылыс:
аралық оқыту жолының forward терезесі мен тексерік жолының
арасындағы қабаттасуды жояды.
"""
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()
Екеуін білу қажет, ешқайсысы кітапхана құжаттарынан анық емес:
- Тазартылған walk-forward foldтері әр жолды қамтымайды. Purge аралықтары мен бастапқы оқыту блогы ешқашаның тексерік foldы болмайды, сондықтан қатаи residuelerден аз бағаланады. Бұл дұрыс қатынас, bug емес, бірақ variance формуласындағы тиісті — қосылатын тексерік жолдар саны екенін білдіреді — болжауды тексіріңіз.
n_repқайталамалары тегін жоқ. Кездейсоқ K-fold кезде, cross-fitting қайталап орташа табу — арзан variance төмендету. Детерминистік уақыт тәртіптелген бөлінде бір ғана бөлу бар, сондықтанn_repештеңе сатып алмайды және ештеңді жасырмайды; тұрақтылық әр түрлі деректер терезелерінде қайта жүруден келуі тиіс.
Панель құрылымдары үшін (сол кезеңдегі көп белгілер), DoubleML кластерлік-робаст стандартты қателерді қолдайды — белгі бойынша кластірлеңіз, уақыт бойынша емес, және cross-instrument нәтиженің қашан қаланғанын көру үшін көпбелгілі тексеру қараңыз.
Өлшенген Жағдай: Кезек Позициясы және Толтыру ықтималдылығы

Бұл мақаладағы бағдарламаның деректері бар жалғыз себептік сұрақ, және ол қойылмау керек, жариялау керек. Кезек позициясы талдауы бұрыннан нақты кітап деректерінде позиция бағалау, FIFO механикасы, ағындардық және толтыруға дейінгі уақытты қамтиды; толтыру модельдеуі толтыру ықтималдылығын модельдеуді және лайв толтыруларға қарсы калибрациялық айналымды қамтиды. Екеуі де толтырудың болжамдық моделін жасайды. DML сол дерістерді себептік бағалауға айналдырады.
Спецификация, бағалауды көрудің алдын алдын тіркелді:
- Нәтиже :
HORIZONснапшоттары ішінде толтырылды (бинарлы). - Еміле : орналасу кезіндегі нормалданған кезек позициясы.
- Бұзушылар : 1с анықталған айнымалылық, bps-тегі цитаталанған спред, тереңдік теңсіздігі, посттағы деңгей өлшемі, tick-тегі mid-тен қашықтық, уақыт күнін кодтауы, режим жапсырмасы.
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 бағандарының арасындағы айырма — нақты қызығушы шама: ол кезек позициясының көрінетін мәнінің қаншатысы нарық жағдайының киімін киген еді.
Мұндағы нөл немесе теріс — жариялануға лайық нәтиже және таза оңнан гөрі блогқа жақсырау. Егер айнымалылық және деңгей өлшемі partial-out жасалғаннан кейін кезек позициясының себептік әсері құласа, бұл тапсырыс орналасу саясаты туралы тікелей тұжырым: орынны толтырғаны емес, сіз орын алған жағдайлар.
Себептік Факторлық Талдау
Факторлық инвестингке қатысты стандартты тәсіл — ассоциативтік: белгі бойынша сұрыпта, long-short портфолио құрыңыз, returnder әртекетінін байқаңыз. DML басқа тесті мүмкіндейді — белгілі return-ге тікелей себептік әсерлерін бағалаңыз, басқа белгілердің бұзушылық әсерлерін шығарып тастаңыз. Егер DML астында әсер жоғалса, фактор тәуелсіз себептік емес; бұл прокси.
Бұл — фактор скепсисисінің екінші, тәуелсіз түрі, және оның блогтың жарыя еткен нәрсе қалай байланысын ашық айтуға тұрады. Deflated Sharpe ratio фактор зоосыларды таңдау жағынан шабадайды: қанша сынаптармен, фактор көп қарағандықтан маңызды көрінуі мүмкін. DML оны бұзушылық жағынан шабадайды: фактор бір адал тестте маңызды көрінуі мүмкін және бағдарлау жиынтығындағы басқа нәрсенің проксисі болуы мүмкін. Фактор қызықты болу үшін екеуін де өту керек, және екі сәтсіздік режимдерді тәуелсіз — біреуін өту екіншісі туралы ештең айтпайды.
DML Істей Алмайтын
-
Бұзушылардың байқалғанын қажет етеді. Егер байқалмаған айнымалы еміле мен нәтижені екі айдырса, DML бұзылған, және ешқандай ML sophistication идентификация проблемасын шешпейді. Сезімталдық талдау қатерлі шектейді; оны жояды.
-
Орташа әсер бағалайды. Егер кезек позициясының әсері режимдер бойынша sharply әзгерсе, нүкте бағаласы — сіздің үлгінің режимдерінің араласының ортасы. Гетерогенитет үшін Interactive Regression Model (
DoubleMLIRM) немесе causal forest қолданыңыз. -
Құрылымды модельді болжайды. Жартылай сызықтық спецификация эмле нәтиже теңдеуіне белгілі тәрде кіруін қажет етеді. Егер шын процесс негізінен өзге болса, DML сенімді қате.
-
Себептік құрылымды ашпайды. DML алдын ала анықталған еміле әсерін бағалайды. Қай айнымалылар себеп екенін айтпайды.
-
Сізді көптестен босатпайды. Үстінегі нүктені қайталау, себебі бұл ең жиі өткізіледі: ортогоналдылық бұлтану бағалауын de-biasдейді, спецификация іздеуді жоқ.
Практикалық Ескертулер
Үлгі өлшемі. DML бұлтану модельдерінің жылдамдықпен жинақтауын қажет етеді, бұл практикада ML модельдерінің мен -ді мүлде жуыртуға жеткіліктік жолдарды білдіреді. Жұмыр сандардың шегін сену орнына, көпбелгілі тексеру істейтін тәсілмен эмпирикалық жақсылықты орнатыңыз — бағалау аспаптар мен суб-периодтар бойынша сақтай ма, тұрақсыздық оның сигналы екенін қарастырыңыз.
Learner таңдау. DML-тек факт тар және пайдалы: конвергенция берілгенде, learner -дің тиімділігіне (интервал ені) әсер етеді, консистенциялығы емес. Қандай learnerлерге табыларлы және неге gradient boosting әдепкі екені, машинанық оқытумен таралу моделдеу қамтылған. Егер learnerлер арқылы материалды жылжытса, бұл таңдау үшін тізім емес — бұлтану функциялары нашар бағаланған дәлел, және жоғарыдағы бөлім бойынша, ең достысын таңдау оны іздеуге айналдырады.
Қорытынды
DML блогқа жоқ нәрсені берді: нарық микроқұрылым айдарларын себептік параметр ретінде және қорғайтын стандартты қатемен айту жолы, жақсы куәлікпен болжам ретінде емес.
Үш негізгі ойлар:
- Сұпай қателерді екінші ретке жойып өтеді.
- Уақыт серия деректерінде тазартылған және embargo жасалған foldтармен cross-fit, бірінші кезең үстеме оқытуы -ді жылжыта алмасты.
- Алдын ала анықта, хабарланған интервал — сіз шын игерген интервал.
Бағалаушы — жеңіл бөлік. Қиын бөліктер өзгермейді: қай бұзушылар маңызды, идентификация болжамдарының орындалатыны дәлелдеу, және спецификацияны тағы бір рет жүргізу құлғысызды тойдыру.
** Сілтемелер
DML шежіресі қысқа және бір жолы құнды: бұл — Robinson (1988) жартылай сызықтық моделі ML ядро бағалаушыларын ауыстыратын, семипараметрикалық тиімділік шегіне жететін, Neyman C() тестіне және targeted-learning (TMLE) әдебиетінде жақын туысқа бар ортогоналдылық шартымен. Chernozhukov et al. ұсынғаны — ерікті ML learnerлермен бұны операциялап, -consistente, асимптотикалық нормаль интерференцияны сақтау мүмкіндігі.
- 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.