Double Machine Learning: Кийимдерди болжалдуу ордуна себептүү параметриди баалоо
Бул блогдагы бардык моделдик макалалар бир эле суроонун түрүн коюшту: өзгөчөлүктү бер, санды болжалда, анан болжалды үлгүдөн тышка да сакталабы дегенди текшир. Спред моделдери спредди болжалдайт. Филл моделдери филл ыктымалдыгын болжалдайт. Бүтүү认可 аппараты — тазаланган walk-forward, ыкчамдалган Sharpe, look-ahead таксономиясы — болжалдын чындыгын текшрүү үчүн бар.
Бул макала башка суроонун түрүн коёт жана бул блогдагы бир гана жок аспабы: себептүү чечимди бир сан параметрди баалоо жана ага ийиген ML модел колдонулгандыгын өтүп кеткен стандарттык катаны таштоо.
Бул риторикалык айырмачылык эмес. "Кезек орду филл ыктымалдыгын болжалдайт" деген кокус чындык жана операциялык жактан пайдалуу эмес — албетте, экеө тең тереӊдүк жана өзгөрүмдүүлүк менен аныкталат. "Кекте бир орун алга жылуу филл ыктымалдыгын өзгөртсүн, рынок абалын өзгөртпөстүн" — бул сиздин тартип коюу саясатына киргизиле турган сан. Биринчиси регрессиянын туура келиши. Экинчиси стандарттык ML куралдарында жок баалоочу керектелет, анткени иккинчи баскычта регулярлаштыруу жана ашык- FITTING сиз кызыккан коэффициентти бурмалайт.
Double Machine Learning (Chernozhukov, Chetverikov, Demirer, Duflo, Hansen, Newey & Robins, 2018) — бул оңдогон баалоочу. Ар бир квант трейдери муну угушкан: коррелация себептүүлүк эмес. DML — бул сүйлөмдүн артындагы бөлүк.
Жөнөкөй регрессия кайдыгерлигинин себептери

Суроону блогдун өз аймагында орнотуу. Биз филл ыктымалдыгына кезектин ордунун себептүү таасирин каалайбыз:
- : байкоо де эсаптагы лимит тартипи horizon ичиндеги филл болдубу.
- : коюуда кезек орду (дEREJESE боюнча нормалдаштырылган).
- : бүтүүчүлөр — реалдуу өзгөрүмдүүлүк, цитатаалган спред, тереӊдүк теӊсиздиги, дEREJESE чоӊдугу, күндүн убактысы, режим этикети. Булар — рынок абалынын өзгөчүлүктөрү, которулган машиналык үйрөнүү менен спред моделирлөөде эсептелген.
Себептүү параметр — бул төмөндөгүдөй :
мында — рынок абалы менен филл натыйжасынын ортосундагы (мүмкүн татаал, сызыктуу эмес) байланышты камтыйт.
Дарылоо кокустук бөлүнгөн эмес. Сиз кезектин алдында тургансыз анткени дEREJESE ичке эле, же тынч мезгилде коюган учун, же китеп сизге ылайыктуу теӊсиз болгон учун. Эле шарттар сиздин филлоӊузду көз карандысыз айдайт. Бул бүтүүчүлүк.
Ыкмал 1: Бүтүүчүлөрдү эс көчүрүү. ды гана регрессиялоо. Баалоо эки де менен байланышкан бардык бүтүүчүлөрдүн таасирин сиӊретет. Китепталык өткөрүлгөн өзгөчүлүктүн бурмалоосу: ичке дEREJeler сизге жакшы кезек орунун жана жогорку филл ылдамдыгын эки де берет, ошондуктан орунун өзүнүн баасын ашык- баалайсыз.
Ыкмал 2: Контролу менен сызыктуу регрессия. ды жана ге регрессиялоо. Бул чыныгы сызыктуу болгону гана иштейт. Китеп динамикасы андай эмес — филл/өзгөрүмдүүлүк байланышында эс болот, тереӊдүк теӊсиздүгүнүн таасири режимге жарыш белгисин өзгөртөт. ду туура эмес көрсөтүү бурмалоону кайрадан киргизет.
Ыкмал 3: ML болжалоо. боюнча градиенттик бастыруу моделин туура келтирүү. Жакшы үлгүдөн тышкары айырмалоону аласыз, бирок себептүү чечим жок. Модель болждоочу бардык үлгүнү камтыйт, себептүү болбосо дагы; регулярлаштыруу ни бурмалоочу ыкма менен дарылонун салымын кыскартат; жана ишенерлүү стандарттыкcata жок.
Бул башкы чыңалуу. ML болжалоо жакшы, бирок себептүү параметрге жөнөкөй колдонуу бурмаланган, нормалдуу эмес, ишенерсиз баалоолорду берет.
Бөлүкчө Сызыктуу Модель

DML структуралык рамка ичинде иштейт. Негизги курал — бөлүкчө сызыктуу регрессия (PLR):
- — кызыктуу себептүү параметр.
- — бузуку функция — натыйжанын рынок абалы менен түшүндүрүлгөн бөлүгү.
- — башка бузуку функция — рынок абалында дарылонуун шарттуу күтүмү (үзгүлтүксүз дарылоо орточосунда "propensity").
- жана — структуралык калдыктар.
Негизги ой: төмөн өлчөмдүү, бирок жана эркин татаал болушу мүмкүн. Биз MLди бузуку функцияларды иштетүү үчүн, бир эле убакта сан үчүн жарактуу чыгышты каалайбыз.
"Эки"деп эмне?
Эки ML модели, бир эмес:
- Натыйжа модели: — рынок абалы ганан натыйжаны болжалдоо.
- Дарылоо модели: — рынок абалы ганан дарылонуу болжалдоо.
Калдыктарды түзүү
жана ды ге регрессиялоо аркылуу ду баалоо:
Бул стероиддүү Frisch-Waugh-Lovell: бүтүүчүлөрдү сызыктуу проекциялык ордуна ML менен алып салыңыз, анан калдык өзгөрүүдөн дарылонун таасирин окуу.
Neyman Ортогоналдуулугу: Эмне иштейт
Жөнөкөй partial-out ыкмасы (ду баалоо, алуу, регрессия) дун ML баалоо катасы го түз таасир эткендиктен иштейт. DML эсеби Neyman ортогоналдуу кылып түзүлгөн — бузуку функциялардын кичинкене өзгөртүүлөргө сезгир эмес.
PLR үчүн ортогонал эсеп:
мында . Ортогоналдык шарт:
Интуитивдүү түрдө, эсеп тен көз карандысыз жана өзгөрүүлөрүн гана колдонот жана бир бузуку функциядагыcata башкасы менен теӊдештирилет. Эгер дарылонуу аз көп болжаса, аз кылып кичине бирок, ди ката баалоодон келген дүн тиешелүү катасы теӊдештик багытка түртөт. Бурмалоо экинчи тартипке айланат — эки биринчи баскыч каталарынын көбөйтүндүсү — биринчи тартиптин ордуна.
Формалдуу түрдө, эки бузуку баалоочусу ылдамдык менен жыйынса (жеӊил; көпчүлүк аkJuu ML ыкмалары бул жетишет), анан
ошондуктан параметрдик ылдамдык менен жыйылат жана асимптотикалык нормалдуу.
Кросс-Фиттинг: Муну качан милдеттүү
Ортогоналдык гана жетишсиз. Эгер бузуку моделдери ду баалоо үчүн колдонулган эле каттарда туура келтирилсе, биринчи баскычтын ашык- FITTINGS экинчи баскычты булгайт — жана бул атайын зыянды тактап айтууга керек, анткени бул сиз көнгөн зыян эмес. Башка жерде, ашык- FITTING шашылган认可cata评分 көрүнөт: сиз байкасыз, discount кыласыз, улантасыз. Бул жерде үчүн жылышкан чекит баалоосу катары көрүнөт, ишеним аралыгы дале эле tar жана бuze булган сан менен борбордолот. Шек эсеп жок. Баалоочу жапа тынмайт.
Кросс-фиттинг көз карандылыкты үзөт: ар бир байкоонун бузуку болжалдары анысыз үйрөтүлгөн моделден келет, топтолгон held-out калдыктардан бааланат. Механика кадимки K-fold машинасы, машиналык үйрөнүү менен спред моделирлөөде каралган; төмөндө негизи кайсы foldту бергениңиз.
DML Алгоритмы Cadamы менен
Кирүү: маалымат , ML ыкмалары жана , fold .
1-баскыч — Бөлүштүрүү: ды бөлүк foldка бөлүңүз.
2-баскыч — Кросс-фит бузуку моделдери: үчүн, fold тин толугунан башка жана ду үйрөтүңүз, анан үчүн жана ды эсептеңиз.
3-баскыч — Баалоо:
4-баскыч — Чыгаруу:
аралыктар менен.
Ишеним аралыгы бир гана суроо үчүн жарактуу
Бул DML натыйжасынын кызыктуу же жоктугун аныктоочу эскертүү жана ыкманын көпчүлүк колдонулушу тынч бузулган жер.
Үстүндөгү асимптотикалык нормалдуулук — бир алдын ала көрсөтүлгөн дарылоо, бир алдын ала көрсөтүлгөн бүтүүчүлөр топтому, бир алдын ара көрсөтүлгөн эсеп жөнүндө билдирүү. Буларды алдын ала бекитет, баалоочуну бир жолу иштетисиз, аралык айтканын билдирет. үч кызыктуу дарылоону, же төрт бүтүүчүлөр топтомун, же p-маани жакшы көрүнгөнчө learnerди алмаштырсаңыз, чыгаруу жасап жатсыз — бул издөө, жана баяндалган p-маани максимумдун p-мааниси, тартылган emesкининики.
Бул мындай кылганды blog өлчөгөн. Ыкчамдалган Sharpe катышы изилдөөсүндө, чыныгы артыкчылыгы жок таза үнөмдө издөө 1.000 жөнөкөй жалган- табуу ылдамдыгын берет — текшерүлбеген тест ар бир жолу атылат — эже жеӊчүнүн орточо жөнөкөй p-мааниси 0.0007ге жакын отурат. Neyman ортогоналдуулугу мындан сизди коргобойт. Ортогоналдуулук бузуку баалоодон келген бурмалоону оңдойт; калыптандыруу издөөсүнөн келген бурмалоону айтпайт. Алты көрсөтүүнү сыныйт后 алган 1e-05 DML p-мааниси ды чыныгы иштеткен көрсөтүүлөр санына орноткон, toros/CHK/RESTON/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-маани, жана жыйынтык стол эскертпеген көп-тест маселеси. Үчөөнү окуңуз — үчөөн теӊдештирүңүз. Эгер бирөө гана алдын-каттардык суроо болсо, айткыла, калган эки экскурсиялык деп ачык айтыңыз.
Убакыттык Катарда Кросс-Фиттинг: Пurge, Embargo, Custom Fold

Стандарттык DML i.i.d. байкоолорду болжолдойт. Китеп маалыматы андай эмес жана иштебей калган режимы blog курч- сүрөттөп жазган: кошуна каттар үстү-үстүнөн келүүчү керүүлөрдү бөлүшөт, ошондуктан жөнөкөй TimeSeriesSplit дале эле fetch чекити аркылуу жоопту агызат. purge этken жана embargo этилген walk-forward ишке ашыруу жана эң азында horizon катар бос орун керек болгондугу, жана кеӊири агып кетүүлөрдүн жана өлчөнгөн көлөмдөрүнүн толук каталогу үчүн look-ahead бурмалоо таксономиясын караңыз.
Чыны DML-кө бөлүгү — purgelengen 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 бос оруну менен кеӊейүүчү window fold.
Спред моделирлөө макаласындагы purgelengen walk-forward CV менен бирдей курулму:
бос орун training каттын forward windowунун жана валидация сабынын
ортосундагы үстү-үстүнөн келүүчүлүктү алып салат.
"""
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()
Эки нерсе эске алуу, эки эле китепканадан ачык эмес:
- Purge etken walk-forward foldтар ар бир сапты камтыйт. Purge бош орундары жана баштапкы training блок эч кимдин тест foldу эмес, ошондуктан ден аз калдыктардан бааланат. Бул туура жүрүш, bug emes, бирок варианс формуласындагы эффективдүү — топтолгон тест саптардын саны — болжолdobуз эсептеңиз.
n_repкайталануулар бул жерде акысыз emes. Random K-fold менен, кросс-фиттингди кайталап орточолоо — арзан варианс азайтуу. Детерминисттик убакыт тартиптүү бөлүштүрүүдө бир гана бөлүштүрүү бар, ошондуктанn_repэч нерсе сатып албайт жана эч нерсе жашырбайт; туруктуулук башка маалымат windowлорунда кайрадан иштетөөдөн келиши керек.
Панель структуралары (убакыт ичинде көп symbol үчүн) DoubleML кластер-robust стандарттыkata колдойт — symbol боюнча кластер, убакыт боюнча emes, жана cross-инструмент натыйжасы качан чыныгы орноштуу булушу жөнүндөгү blog позициялары үчүн көп-символдуу认可ди караңыз.
Өлчөнгөн Учуру: Кезек Ордуну жана Филл ыктымалдыгы

Бул проекттин маалыматы бар макаладагы бир гана себептүү суроо жана буюрула коюлушунун ордуна иштетилиши керек. Кезек ордуну анализ бойдон чыныгы китеп маалыматында орун баалоо, FIFO механикасы, агуу ылдамдыгы жана филге чейинки убакытты камтыйт; Филл симуляция филл ыктымалдыгы моделирлөөсүн жана чыныгы филлге калибровка циклин камтыйт. Экеө те филлдин болжолдоочу моделин жаратат. DML эле inputтерди себептүү баалоого айландырат.
Көрсөтмөнү көрүүдөн мурун aldy- catтарды көрсөтүлгөн спецификация:
- Натыйжа :
HORIZONsnapshot ичинде филл болду (бинардуу). - Дарылоо : коюуда нормалдуу кезек ордуну.
- Бүтүүчүлөр : 1s реалдуу өзгөрүмдүүлүк, bps цитаталанган спред, тереӊдүк теӊсиздиги, посттогу дEREJESE чоӊдугу, tick боюнча midden аралык, күн убактысын коддоо, режим этикети.
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='ling out')
dml_plr.set_sample_splitting([folds])
dml_plr.fit()
print(dml_plr.summary)
dml_plr.sensitivity_analysis()
print(dml_plr.sensitivity_summary)
Баяндоо үчүн натыйжа — бир коэффициент emес, төрт колонка салыштыруу: гана болгон нын жөнөкөй OLS баалоосу, жана менен нын сызыктуу-контрол баалоосу, стандарттыkata менен DML баалоосу, жана сезгичтик анализиден robustness мааниси — таасирди жок кылуу үчүн байкалбagan бүтүүчү кандай күчтүү болушу керек. Жөнөкөй жана DML колонкаларынын ортосундагы айырма — чыныгы кызыктуу сандык: кезек ордунун көрүнгөн баасынын канчалыгы рынок абалынын костюму болгон.
Мунда нөл же терс болушу — жарыялоого болгон натыйжа жана таза оңonalардан бул blogка жакшырык кирет. Эгер кезек ордунун себептүү таасири өзгөрүмдүүлүк жана дEREJESE partiallengden соң кулпаса, бул тартип коюу саясаты жөнүндөгү түз табылган discovery: орун филди казанган эмес, орун алган шарттар казанган.
Себептүү Фактор Анализи
Фактор инвестициялоонун стандарттык жолу — ассоциативдүү: мүнөз боюнча сорттоо, long-short портфелдерди түзүү, кайтаруулар айырмаланатынын байкоо. DML башка тестти мүмкүн кылат — башка мүнөздөрдүн бүтүүчүлүк таасирин тазалап, кайтарууларга мүнөздүн түз себептүү таасирин баалоо. Эгер DMLде таасир жок болсо, фактор көз карандысыз себептүү emes; бул прокси.
Бул — экинчи, көз карандысыз фактор скептицизм формасы жана blog жарыялаган менен кантибайланышын ачык айтууга керек. Ыкчамдалган Sharpe катышы фактор зоосун тандоо тарабынан чабат: көп сыналарда, фактор көп көргөндүгү үчүн гана маанилүү көрүнөт. DML бүтүүчүлүк тарабынан чабат: фактор бир чын сында маанилүү көрүнсө дагы, шарттоо топтомундагы башка нерсенин прокси болуп калышы мүмкүн. Фактор кызыктуу болуу үчүн экеөнө теӊ жашаш керек жана эки иштебей калыш режимдери көз карандысыз — бирин өткөрүү экинчиси жөнүндө эч нерсе айтпайт.
DML Кыла Албаган Нерсе
-
Бүтүүчүлөрдүн байкалышы керек. Эгер байкалбagan өзгөрүчү дарылоону жана натыйжаны эки де айдаса, DML бурмаланган жана эч кантип ML курчтуулугу identification проблеманы оңдобойт. Сезгичтик анализи коркунучту чектейт; алып салбайт.
-
Орточо таасирди баалайт. Эгер кезек ордунун таасири режимдер боюнча кескин өзгөрсө, чекит баалоосу — сиздин үлгүңүздүн режим аралашмасынын орточосу. Гетерогенология үчүн Interactive Regression Model (
DoubleMLIRM) же causal токой колдонуңуз. -
Структуралык модель болжолдойт. Бөлүкчө сызыктуу спецификация дарылонуунун натыйжа теӣдемесине белгилүү ыкма менен кирүүсүн талап кылат. Эгер чыныгы процесс түзүлүшү менен айырмаланса, DML ишенимдүү жаткан.
-
Себептүү структураны ачпайт. DML алдын ала көрсөтүлгөн дарылонуун таасирин баалайт. Каяк өзгөрүчүлөр себеп экенин айтпайт.
-
Көп сынудан бошотпойт. Жогорудагы пунктту кайталайм анткени бул эң көп өткөрүлгөн: ортогоналдуулук бузуку баалоону de-bias кылат, спецификация издөөсү эмес.
Практикалык Эскертүүлөр
Үлгүнүн чоӊдугу. DML бузуку моделдеринин ылдамдык менен жыйышын талап кылат, бул практикада ML моделдеринин жана ди эле adamantina жете кылышы үчүн жетиштүү сап бар дегенди билдирет. Ж良性 порогдорго ишенбестен көп-символдуу认可нын жолу менен empirically жарактуулукту орнотуңуз — баалоонун аспаптар жана суб-периодтор боюнча сакталабын текшериңиз жана туруксуздукту сигнал катары мамиле кылыңыз.
Чечим
DML blogга жок нерсе берет: жакшы认可cata评分 менен болжалдуу катары эмес, коргого болгон стандарттыkata менен себептүү параметр катары рынок-микроструктура билдирүүнү билдирүү жолу.
Үч идея оор жүк көтөрөт:
- Эсепти ортогоналдаӊыз, биринчи баскыч кеталары экинчи тартипте теӊдешет.
- Убактыктык маалыматта purge etken жана embargo etken fold менен кросс-фиттеӊиз, биринчи баскыч ашык- FITTINGS ду жылышыра албайт.
- Алдын ара көрсөтүӊүз, баяндаган аралык — сиз чыныгы казанган аралык.
Баалоочу — жеӊил бөлүк. Кыйын бөлүктөр өзгөрбөгөн: кайсы бүтүүчүлөр маанилүү экендигин чечүү, identification шарттардын сакталганын далилдөө жана спецификацияны дагы бир жолу иштетүү демин кармоо.
Шилтемелер
DMLнин тукуму кыска жана бир сапык: бул Robinson (1988)нин бөлүкчө сызыктуу модели, ML ядро баалоочуларды алмаштырып, semiparametric эффективдүүлүк чегине жеткен, Neymanдын C() тестинен келген ортогоналдык шарты жана targeted-learning (TMLE) адабиятында жакын тууганы бар. Chernozhukov et al.дык салымы — бул эркин ML learnerлер менен иштетип -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.