← Maqolalarga qaytish
August 1, 2026
5 daqiqa o'qish

Savdo-sotiqda Heterogen Davolash Ta'sirlari uchun Kausal O'rmonlar

Savdo-sotiqda Heterogen Davolash Ta'sirlari uchun Kausal O'rmonlar
#causal-inference
#causal-forest
#heterogeneous-effects
#econometrics
#treatment

Ushbu blogdagi har bir bashoratli model bir xil obyektni baholaydi: shartli o'rtacha μ(x)=E[YX=x]\mu(\mathbf{x}) = \mathbb{E}[Y \mid \mathbf{X} = \mathbf{x}]. Xususiyat muhandisligi, gradient boosting, konform intervalar, walk-forward validatsiyasi — barchasi bitta estimand uchun xizmat qiladi. Ushbu maqola boshqa estimand haqida va uni almashtirganda o'zgaradigan mexanizmlar haqida.

Obyekt shartli o'rtacha davolash ta'siri:

τ(x)=E[Yi(1)Yi(0)Xi=x]\tau(\mathbf{x}) = \mathbb{E}[Y_i(1) - Y_i(0) \mid \mathbf{X}_i = \mathbf{x}]

bir xil birlik uchun ikki potensial natija o'rtasidagi farq — ulardan birini hech qachon kuzatmaysiz. Ustun regressiya qila olmaysiz, chunki u ma'lumotlaringizda yo'q. Kausal o'rmonlar (Athey va Imbens 2016; Wager va Athey 2018) uni parametrik bo'lmagan tarzda baholaydi va ajoyib tarzda, uning atrofida yaroqli ishonch oraliq beradi.

Buni imkoniyatli qiladigan uch narsa bor va ularning hech biri standart tasodifiy o'rmonda mavjud emas: bashorat xatosini kamaytirish o'rniga davolash ta'siri varyansini maksimal qiladigan bo'linish mezoni, bir bo'linishni tanlash va ichidagi effektni baholash uchun bir xil kuzatuvlardan foydalanishni taqiqlovchi vijdlilik cheklovi, va o'rmonni yaprak birga kelishini baholash og'irliklariga aylantiruvchi moslashuvchan yadro sifatida qayta o'qish. Bu uch narsa, shuningdek topgan heterogennilik signal ekanligini aytadigan kalibrlash testi, ushbu maqolaning mazmuni.

O'rtacha Ta'sirlardan Heterogen Ta'sirlarga

Tekis o'rtacha davolash ta'siri heterogen davolash-effekti yuzasi tomonidan ochiladigan musbat va manfiy cho'ntaqlarni yashiradi

O'rtacha Davolash Ta'siri

Sozlash: ikilik davolash Wi{0,1}W_i \in \{0, 1\} (hodisa sodir bo'ldi yoki yo'q), natija YiY_i (daromad), kovariatlar Xi\mathbf{X}_i. O'rtacha Davolash Ta'siri quyidagicha:

τATE=E[Yi(1)Yi(0)]\tau_{\text{ATE}} = \mathbb{E}[Y_i(1) - Y_i(0)]

barcha birliklar uchun o'rtacha ta'sir. Savdo uchun bu deyarli foydasiz — siz o'rtachani savdo qilmasiz. Agar hodisa yarmini yuqori, yarmini past sur'lsa, ATE nolga teng va imkoniyat maksimum.

Shartli O'rtacha Davolash Ta'siri

CATE τ(x)\tau(\mathbf{x}) xususiyatlar shartli. Ma'lum bozor qiymati, realizatsiya qilingan o'zgaruvchanlik, funding tarixi va kitob chuqurligi bo'lgan tanga berilganda, ushbu hodisaning ushbu aktiv ustida kutilayotgan daromad ta'siri nimadir? CATE kovariat fazosi funksiyasidir va uning shaklini majburlamasdan baholash — kausal o'rmonlar qiladigan narsa shu.

Nima uchun Faqat Liney Interaksiya Modellarini Ishlamaymiz?

Darslik alternativi to'yingan regressiya:

Yi=α+βWi+γWiXi+δXi+ϵiY_i = \alpha + \beta W_i + \gamma W_i \cdot \mathbf{X}_i + \delta \mathbf{X}_i + \epsilon_i

bu yerda γ\gamma interaksiyani o'tkazadi. Bu interaksiyaning liney ekanligini faraz qiladi. Bu nadir holatlar: funding flipga sezgirlik leverage qavariq, emas liney; chuqurlik bozor qiymati bilan ko'paytiruvchi o'zaro ta'sir qiladi; o'zgaruvchanlik rejimi boshqa hamma narsani eshiklaydi. Kausal o'rmonlar bularning hech birini majbur qilmaydi — ular kovariat fazosini moslashuvchan tarzda bo'linadi va heterogennlik tuzilishining ma'lumotlardan tushishiga ruxsat beradi.

Kausal O'rmonlar: Algoritm

Alohida namunalar daraxt strukturini quradi va muzlatilgan yapraklarda effektlarni baholaydi, keyin ko'plab vijdli daraxtlar kausal o'rmonga birlashadi

Kausal o'rmon, davolash-effekti estimand atrofida qayta qurilgan tasodifiy o'rmon. Har bir daraxt — kovariat fazosini davolash-effekti heterogenniligini maksimal qilish uchun bo'ladigan kausal daraxt.

Kausal Daraxtlar

Har bir ichki tugunda, algoritm bo'linish o'zgaruvchisi jj va bo'linish nuqtasi ss ni tanlaydi. Regressiya daraxti bilan asosiy farq: mezon, bashorat xatosining kvadratini kamaytirish o'rniga, bolalar o'rtasida baholangan davolash effektining varyansini maksimal qiladi.

(Yi,Wi,Xi)inode(Y_i, W_i, \mathbf{X}_i)_{i \in \text{node}} ma'lumoti bo'lgan tugun uchun, tugun darajasidagi effekt bahosi guruh o'rtachalari farqidir:

τ^node=YˉtreatedYˉcontrol\hat{\tau}_{\text{node}} = \bar{Y}_{\text{treated}} - \bar{Y}_{\text{control}}

va bo'linish balli quyidagicha:

Δ(split)=nLτ^L2+nRτ^R2nτ^parent2\Delta(\text{split}) = n_L \cdot \hat{\tau}_L^2 + n_R \cdot \hat{\tau}_R^2 - n \cdot \hat{\tau}_{\text{parent}}^2

bu yerda nL,nR,nn_L, n_R, n chap bola, o'ng bola va ota-onadagi namuna o'lchamlari. Bu aynan davolash effektlarining guruhlararo varyansidir: bo'linish yaxshi, ikki bola effekt haqida kelisha olmaganda, natijani yaxshi bashorat qilganda emas. YY ni kuchli bashorat qiluvchi lekin WW qanday harakat qilishiga perpendikulyar bo'lgan kovarat hech qachon tanlanmaydi.

Vijdli Baholash

Kritik yangilik vijdlilikdir. Daraxt strukturasini belgilash uchun ishlatilgan ma'lumotlar, yaprak effektlarini baholash uchun ishlatilgan ma'lumotlardan alohida bo'lishi kerak:

  1. Ma'lumotlarni bo'ling Isplit\mathcal{I}_{\text{split}} va Iest\mathcal{I}_{\text{est}} ga
  2. Daraxtni quring, faqat Isplit\mathcal{I}_{\text{split}} dan bo'linish o'zgaruvchilari va nuqtalarini tanlash uchun foydalanib
  3. Yaprak effektlarini baholang, faqat Iest\mathcal{I}_{\text{est}} dan foydalanib, ushbu kuzatuvlarni allaqachon belgilangan daraxtga tushirib

Bundsiz, daraxt aldamchi: u uchkun foydalanilgan bir xil namunadagi shovqin bo'lgan ekstrem effektlar bilan yapraklarni o'yadi, keyin shovqinni baholash sifatida xabar beradi. Bu, backtest overfitting ehtimoli tomonidan strategiya darajasida o'lchanadigan bir xil moslashuvchan-tanlash muvaffaqiyatsizligi, bunda hodisadan keyin tashxis o'rniga baholovchi ichiga qarshi himoya qilinadi. Vijdlik asimptotik biasizlikni sotib oladi:

E[τ^(x)Xi=x]=τ(x)+o(1)\mathbb{E}[\hat{\tau}(\mathbf{x}) \mid \mathbf{X}_i = \mathbf{x}] = \tau(\mathbf{x}) + o(1)

Narx — namuna samaradorligi; ma'lumotingiz yarmi keyin to'ldirish uchun ishlatilishi mumkin bo'lmagan tuzilmani quradi.

Daraxtlardan O'rmongacha

Kausal o'rmon BB ta kausal daraxtni jamlaydi, har biri s<ns < n o'lchamdagi tasodifiy past namunada va har bir bo'linishda tasodifiy kovariat past to'plami bilan:

τ^(x)=1Bb=1Bτ^b(x)\hat{\tau}(\mathbf{x}) = \frac{1}{B}\sum_{b=1}^{B} \hat{\tau}_b(\mathbf{x})

Buni yozishning foydaliroq usuli — og'irlikli o'rtacha natija sifatida:

τ^(x)=i=1nαi(x)Yi\hat{\tau}(\mathbf{x}) = \sum_{i=1}^{n} \alpha_i(\mathbf{x}) \cdot Y_i

ii kuzatuvining x\mathbf{x} bilan bir xil yaprakka qancha tez-tez tushishiga bilan belgilanadigan moslashuvchan og'irliklar bilan:

αi(x)=1Bb=1B1(XiLb(x))Lb(x)\alpha_i(\mathbf{x}) = \frac{1}{B}\sum_{b=1}^{B} \frac{\mathbb{1}(\mathbf{X}_i \in L_b(\mathbf{x}))}{|L_b(\mathbf{x})|}

bu yerda Lb(x)L_b(\mathbf{x})bb daraxtida x\mathbf{x} ni o'z ichiga olgan yaprak. Bu generalize random forest qarash (Athey, Tibshirani va Wager 2019): kausal o'rmon mahalliy moslashuvchan yadro baholovchisi. U o'zining "o'xshashlik" tushunchasini o'rganadi, effekt heterogenniligida muhim bo'lgan kovariatlar bilan belgilanadi, Evklid masofasi bilan emas, scalingni tanlashingiz kerak bo'lgan fazoda.

Asimptotik Nazariya

Muntazamlik sharoitida (Wager va Athey 2018) baholovchi izchil, τ^(x)pτ(x)\hat{\tau}(\mathbf{x}) \xrightarrow{p} \tau(\mathbf{x}), va asimptotik normal:

τ^(x)τ(x)σ^(x)dN(0,1)\frac{\hat{\tau}(\mathbf{x}) - \tau(\mathbf{x})}{\hat{\sigma}(\mathbf{x})} \xrightarrow{d} \mathcal{N}(0, 1)

nuqta intervalarini τ^(x)±zα/2σ^(x)\hat{\tau}(\mathbf{x}) \pm z_{\alpha/2} \cdot \hat{\sigma}(\mathbf{x}) beradi. Varyans σ^2(x)\hat{\sigma}^2(\mathbf{x}) infinitesimal jackknife'dan (yoki bootstrap-of-little-bags) keladi, o'rmon allaqachon qurgan bir xil past namuna tuzilishidan hisoblanadi — tashqi bootstrap tsikli yo'q.

Ushbu kafolat nima va nima emasligi haqida aniq bo'lish muhim. Bu asimptotik va nuqta nuqta, va CATE uchun o'tadi. Ushbu blogning boshqa joylarida ishlatilgan konform bashorat intervalar chekli namuna va tarqatsizdir, lekin marginal va natijani qoplaydi. Boshqa estimand, boshqa kafolat; ular o'rinbosar emas.

Double Machine Learning Bog'lanishi

Davolash tasodifiy ravishda tayinlanmaganida, kausal o'rmon residualize ma'lumotlarga fit qilinadi: natija modeli m^(X)=E[YX]\hat{m}(\mathbf{X}) = \mathbb{E}[Y \mid \mathbf{X}] va propensity modeli e^(X)=E[WX]\hat{e}(\mathbf{X}) = \mathbb{E}[W \mid \mathbf{X}] cross-fit orqali baholanadi, va o'rmon Y~=Ym^\tilde{Y} = Y - \hat{m} ga qarshi W~=We^\tilde{W} = W - \hat{e} da ishlaydi. Neyman ortogonalikligi buni xavfsiz qiladi: nuisance-baholash xatosi faqat mahsulat sifatida kiradi, shuning uchun m^\hat{m} va e^\hat{e} har biri n1/4n^{-1/4} bilan converge qilishi mumkin va τ^\hat{\tau} hali n1/2n^{-1/2} bilan converge qiladi.

Ushbu freymvork — residualizatsiya, cross-fitting, ortogonallik argumenti, namuna o'lchami ta'sirlari — o'z maqolasining mavzusidir, Kausal Savdo Signallari uchun Double Machine Learning. Avval uni o'qing; quyidagi hamma narsa buni faraz qiladi va faqat estimand τ\tau o'rniga τ(x)\tau(\mathbf{x}) bo'lganda o'zgaradigan narsalarni qamrab oladi.

Savdo Ilovasi: Hodisa Ta'sir Heterogenniligi

Bir bozor hodisasi turli kovariatlarga ega aktivlarda musbat, neytral va manfiy kontrfaktual javoblar yaratadi

Sozlash

Ushbu blog uchun tabiiy domen perpetual-futures tangalar olami, bu yerda hodisalar tez-tez, timestamplangan va vendor feed siz kuzatiladi.

  • Birliklar: savdo qilinadigan perp olami bo'ylab tanga-hodisa kuzatuvlari
  • Davolash: Wi=1W_i = 1 agar hodisa ii tangasi uchun sodir bo'lsa — funding-rate ishorati flip, spot listing, yoki savdo signali sifatida likvidatsiya kaskadlari da tasvirlangan superkritik chegarani o'tgan likvidatsiya kaskadi — va mos keladigan non-hodisa oynalari uchun Wi=0W_i = 0
  • Natija: YiY_i = hodisa oynasi ustidagi anormal daromad, xom daromad emas. Hodisadan oldingi baholash oynasida bozor modelini fit qiling, keyin kümülatif anormal daromadni oling. Aniq spetsifikatsiya — baholash oynasi, bozor-model regressiyasi, CAR qurilishi va u statistikasi — LLM alpha mining from earnings calls ichidagi hodisa o'qish bo'limida ishlab chiqilgan; verbatim qayta ishlating. Bu qadam ixtiyoriy emas: xom close-to-close natija bozor harakatining τ^\hat{\tau} ga kirishiga imkon beradi va chunki bozor harakati barcha davolash birliklari uchun umumiy, u aniq davolash effektiga o'xshaydi
  • Kovariatlar Xi\mathbf{X}_i: bozor qiymati, realizatsiya qilingan o'zgaruvchanlik, funding tarixi, buyurtma kitobi chuqurligi, open-interest-to-cap nisbati
  • Konfonders Wi\mathbf{W}_i: hodisa ehtimoli va daromadni siljituvchi rejim o'zgaruvchilari

Savdo Signali

CATE yuzasi, kalibrlangan noaniqlik bahosi kabi aynan position sizer'ga map qilinadi: interval kengligiga nisbatan τ^|\hat{\tau}| bilan o'lcham, va interval nolni qachon o'z ichiga olsa savdo qilmang. Ushbu qaror qoidasi — teskari kenglik o'lcham, edge nisbati e=τ^/we = |\hat{\tau}|/w, no-trade filtri, narx-aware varianti va nima uchun buni Kelly fraksiyasiga ko'paytirishingiz kerak emasligi argumenti — Risk-Aware Position Sizing uchun Konform Bashorat da keltirilgan. μ^\hat{\mu} o'rniga τ^\hat{\tau} va konformal o'rniga kausal o'rmon intervali bilan qayta ishlating. Uzoq va qisqa oyoqlarni muvozanatlang va kitob konstruksiya bo'yicha bozor neytral.

EconML bilan Python Implementatsiya

import numpy as np
import pandas as pd
from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier
from econml.dml import CausalForestDML


def fit_causal_forest(Y, T, X, W, n_estimators=1000):
    """
    CausalForestDML: (X, W) ga qarshi residualize, keyin residual
    ustida kausal o'rmon fit qiling.

    Y: hodisa oynasi ustidagi anormal daromadlar (CAR, bozor-model sozlangan)
    T: hodisa indikatori
    X: effekt modifikatorlari -- faqat bu heterogennilikni keltirib chiqaradi
    W: konfonders -- faqat nuisance modellarga kiradi
    """
    cf = CausalForestDML(
        model_y=GradientBoostingRegressor(
            n_estimators=200, max_depth=5, learning_rate=0.05
        ),
        model_t=GradientBoostingClassifier(
            n_estimators=200, max_depth=5, learning_rate=0.05
        ),
        n_estimators=n_estimators,
        min_samples_leaf=20,
        max_depth=None,
        criterion="het",          # heterogennilik asosida bo'linish
        honest=True,              # vijdli baholash
        inference=True,           # infinitesimal-jackknife intervallari
        cv=5,                     # DML uchun cross-fit katlamalari
        random_state=42,
    )
    cf.fit(Y=Y, T=T, X=X, W=W)
    return cf


def summarize_cate(cf, X, feature_names):
    """CATE taqsimoti va nima uning heterogenniligini keltirib chiqarishi."""
    tau_hat = cf.effect(X)
    tau_lo, tau_hi = cf.effect_interval(X, alpha=0.05)

    print(f"Mean CATE:      {tau_hat.mean():.4f}")
    print(f"Std CATE:       {tau_hat.std():.4f}")
    print(f"Range:          [{tau_hat.min():.4f}, {tau_hat.max():.4f}]")
    print(f"% CI excl. 0:   {((tau_lo > 0) | (tau_hi < 0)).mean():.1%}")

    for idx in np.argsort(cf.feature_importances_)[::-1]:
        print(f"  {feature_names[idx]:>20s}: {cf.feature_importances_[idx]:.4f}")

    return tau_hat, tau_lo, tau_hi

CATE Yuzasini Sharhlash

Marjinal effekt grafikalari, qolganlari median da bo'lganda bitta kovariat bo'ylab davolash effektining qanday harakatlanishini ko'rsatadi:

def plot_cate_by_feature(cf, X, feature_idx, n_points=50):
    x_grid = np.linspace(X[:, feature_idx].min(),
                         X[:, feature_idx].max(), n_points)
    X_eval = np.tile(np.median(X, axis=0), (n_points, 1))
    X_eval[:, feature_idx] = x_grid

    tau = cf.effect(X_eval)
    tau_lo, tau_hi = cf.effect_interval(X_eval, alpha=0.05)
    return x_grid, tau, tau_lo, tau_hi

Bularni fit qilingan yuzaning tavsiflari sifatida o'qing, kausal doza-response egri chiziqlari sifatida emas — boshqa kovariatlarni median ushlab turish sizni qo'llab-quvvatlanmagan kovariat fazosi regioniga qo'yishi mumkin.

Asosiy Farazlar va Diagnostikalar

Overlap, balans, yashirin konfund etish va placebo tekshiruvlari, himoya qilinadigan kausal baholash yo'lini eshiklaydi

Bularni buzang va o'zingiz ishonchli, aniq, noto'g'ri effektlarni olasiz.

1. Unconfoundedness (Kuzatiluvchilar bo'yicha Tanlov)

Y(0),Y(1)WX,WY(0), Y(1) \perp W \mid \mathbf{X}, \mathbf{W}

Davolash tayinlanishi kuzatilgan kovariatlar berilgan potensial natijalardan mustaqil bo'lishi kerak. Mexanik ravishda belgilangan hodisa uchun bu himoya qilinadi; o'zi bozor reaksiyasi bo'lgan hodisa uchun — listing e'loni, birjaning o'z likvidatsiya dvigatelining ishga tushishi — yo'q, chunki hodisani keltirib chiqargan bir xil kuzatilmagan oqim daromadni ham harakatlantiradi.

Buni Rosenbaum sezuvchanlik tahlili bilan tekshiring: kuzatilmagan UU davolash ehtimolini Γ\Gamma faktorigacha siljitishi mumkin bo'lsa,

P(W=1X,U)P(W=0X,U)ΓP(W=1X)P(W=0X)\frac{P(W=1 \mid \mathbf{X}, U)}{P(W=0 \mid \mathbf{X}, U)} \leq \Gamma \cdot \frac{P(W=1 \mid \mathbf{X})}{P(W=0 \mid \mathbf{X})}

baholangan effekt ishoratini o'zgartirishidan oldin Γ\Gamma qancha katta bo'lishi kerak? Γ=1.1\Gamma = 1.1 da sindirilgan dizayn topilm emas.

2. Overlap (Pozitivlik)

0<P(W=1X=x)<1x0 < P(W = 1 \mid \mathbf{X} = \mathbf{x}) < 1 \quad \forall \mathbf{x}

Har bir birlikning ikkala qo'lda ham paydo bo'lishi uchun musbat ehtimolikka muhtoj. Propensity skorlarini tekshiring va qirqing:

propensity = cf.models_t[0][0].predict_proba(np.hstack([X, W]))[:, 1]
print(f"Propensity range: [{propensity.min():.3f}, {propensity.max():.3f}]")
valid = (propensity > 0.05) & (propensity < 0.95)
print(f"Retained after trimming: {valid.mean():.1%}")

Qirqish bepul emas — u τ^\hat{\tau} tasvirlaydigan populyatsiyani qayta belgilaydi. Omon qolgan fraktsiyani xabar bering.

3. SUTVA (Barqaror Birligi Davolash Qiymat Farazi)

Yi=Yi(Wi)(birliklar o’rtasida interferensiya yo’q)Y_i = Y_i(W_i) \quad \text{(birliklar o'rtasida interferensiya yo'q)}

Bir birikning davolashi boshqasining natijasiga ta'sir qilmasligi kerak. Kriptoda bu, uchtaning eng kuchsizi: bir perpdagi likvidatsiya kaskadi umumiy collateral va market makler inventari orqali har bir korelatsiyalan juftlarga tarqaladi, bu interferensiyadir. Standart xatolarni korelatsiya guruhi bo'yicha klasterlash qisman hal qiladi; hech narsa to'liq emas.

Ikkilik Davolashdan Tashqari

Kausal o'rmonlar bir xil DML mexanizmi orqali uzluvli davolashlarga kengayadi — hodisa emas, balki zarur kattaligining aktivlarni qanday farqli harakatlantirishini baholash:

Yi=τ(Xi)Ti+g(Xi,Wi)+ϵiY_i = \tau(\mathbf{X}_i) \cdot T_i + g(\mathbf{X}_i, \mathbf{W}_i) + \epsilon_i

bu yerda TiT_i — masalan, funding-rate o'zgarishining basis points dagi o'lchami. Endi τ(x)\tau(\mathbf{x}) basis point uchun effekt.

cf_continuous = CausalForestDML(
    model_y=GradientBoostingRegressor(n_estimators=200),
    model_t=GradientBoostingRegressor(n_estimators=200),  # regression, not classifier
    discrete_treatment=False,
    n_estimators=1000,
    honest=True,
    inference=True,
)
cf_continuous.fit(Y=car, T=funding_change_bps, X=asset_features, W=controls)
effects_25bp = cf_continuous.effect(X_test, T0=0, T1=25)

Amaliy Mulohazalar

Heterogennilik Haqiqiymi?

Bu, kausal o'rmonlarning javob beradigan savoli va ushbu blogda boshqa hech narsa qilmaydi va haqiqiy testni qadrli, bosh ka'ale emas. Vijdlik baholovchi ichida soxta bo'linishlarga qarshi himoya qiladi; tutilgan hodisalar da (tutilgan aktivlar da emas) namuna tashqari baholash standart va walk-forward optimization va deflated Sharpe va ko'p testlash da qoplanadi. Hech biri τ^(x)\hat{\tau}(\mathbf{x}) ning x\mathbf{x} bilan o'zgarishini aytmaydi.

Best Linear Predictor testi bunu qiladi. Residualize natijani residualize davolash va uning centered CATE bahosi bilan interaksiyasi ustun regressiya qiling:

Yim^(Xi)=α0(Wie^(Xi))+α1(Wie^(Xi))(τ^(Xi)τˉ)+ϵiY_i - \hat{m}(\mathbf{X}_i) = \alpha_0 (W_i - \hat{e}(\mathbf{X}_i)) + \alpha_1 (W_i - \hat{e}(\mathbf{X}_i))(\hat{\tau}(\mathbf{X}_i) - \bar{\tau}) + \epsilon_i

Ikki koeffitsient ikki xil savolga javob beradi. α0\alpha_0 — o'rtacha effekt: bu yerda hech narsa bormi? α1\alpha_1 — o'z bashoratlaringizdagi kalibrlash slope'i: o'rmingiz effekt kattaroq deyanda, haqiqatan ham kattaroqmi? Heterogennilik yo'qligi null ostida α1=0\alpha_1 = 0. Mukammal kalibrlash ostida α1=1\alpha_1 = 1. α1\alpha_1 noldan sezilarli lekin birdan uzoqda bo'lsa, o'rmon haqiqiy tartibni topgan lekin tarqalishini oshirib yuborgan — siz tartibni savdo qilishingiz mumkin, kattaliklarni emas.

EconML ning RScorer hamroh model-tanlash ballini beradi:

from econml.score import RScorer

scorer = RScorer(
    model_y=GradientBoostingRegressor(n_estimators=100),
    model_t=GradientBoostingClassifier(n_estimators=100),
    discrete_treatment=True,
    cv=5,
)
scorer.fit(Y_val, T_val, X=X_val, W=W_val)
print(f"R-score: {scorer.score(cf):.4f}")

Scorerni, o'rmon hech qachon ko'rmagan validation split da fit qiling, keyin nomzod CATE modellarini bir-biri bilan va konstant-effekt baseline bilan solishtirish uchun ishlating. R-score da konstant-effekt modelini yena olmaydigan o'rmon, namuna ichki importancelari nima desa, savdo qilishga layoqat heterogennilikni topmagan.

Namuna O'lchami

Kausal o'rmonlar natija modelidan ko'proq ma'lumotga muhtoj, chunki estimand farq va ikkala qol ham har bir yaprak ichida to'ldirilishi kerak. Umumiy ma'lumot-vs-parametar tartibi — serbeh parametr uchun nechta namuna tashqari nuqta, va configurationlarni solishtirganda Bonferroni tuzatish — walk-forward optimization dagi ma'lumot talablari bo'limida. Kausal o'rmonga xos javob empirik, bosh ka'ale emas: o'rmoni ichma-ich past namunalarda fit qiling va median interval kengligini nn ga plot qiling; ishlatilishi mumkin bo'lgan namuna o'lchami, kenglik savdo qilmoqchi bo'lgan effekt o'lchamlari ostiga tushadigan joydir.

Walk-Forward, Ikki Buruncha

Baholash protokoli oddiy anchored walk-forward — tt gacha barcha hodisalarda refit qiling, t+1t+1 hodisasini savdo qiling — va to'liq davolash, shu jumladan purging, embargo, walk-forward effitsiensiya nisbati va degradatsiya darajasi, walk-forward optimization da. Ikki narsa ushbu baholovchiga xos.

Birinchidan, hodisa oynalari overlap. Agar t+1t+1 hodisasidan oldingi kovariat oynasi tt hodisasining natija oynasini o'z ichiga olsa, katlar kuzatuvlarni baham ko'radi va namuna tashqari natija kontaminat bo'ladi. Bitta PnL raqamini sanashdan oldin overlap oynalarni tozalang; funding flip kabi mexanik tez-tez davolash bilan bu hodisalarning muhim qismini o'chirib tashlashi mumkin.

Ikkinchidan, vijdli bo'linish har bir refit da qayta chizilishi kerak. Bir xil Isplit\mathcal{I}_{\text{split}}/Iest\mathcal{I}_{\text{est}} bo'linishini katlar orqali tashish, vijdlik mavjud bo'lish sababli oldini olishga harakat qilayotgan bir xil struktura-tanlash sizib chiqishini qayta kiritadi, chunki yangi qo'shilgan hodisalar eski bilgan holda tanlangan bo'linmaga tushadi.

Keyin har qanday narsaga ishonishdan oldin hodisa darajasida namuna tashqari PnL ni odatdagi eshiklardan o'tkazing — PBO va deflated Sharpe ratio.

Xarajatlar

CATE signali, boshqa hodisa-driven signali kabi narxlanadi: no-trade filtrasidan oldin τ^|\hat{\tau}| dan kutilayotgan half-spreadni ayring va ingil kitoblarda o'lchamni tushiring. Miqdoriy versiyalar — ildiz ta'sir qonuni va slippage cost models da fit langan cost egri chiziqlari, conformal prediction da cost-aware no-trade filtri, va implementation shortfall va TCA da ijro hisoblagich — barchasi o'zgarishsiz transfer qilinadi.

Transfer bo'lmagan narsa: COTE signali raf umr hodisa oynasi bilan cheklanadi, shuning uchun xarajat ochiq-uchunsiz emas, balki belgilangan qisqa ushlab turish davri bo'yicha amortizat qilinadi. Uzluvli ushlab turilgan signal spread bir marta to'laydi va edge qancha davom etsa shuncha yutadi; bu har bir hodisada to'laydi. Edge shuningdan omon qolishi mumkinmi — bu sizning o'ziga xos hodisangiz va o'ziga xos olamingiz haqida empirik savol va bu tekshirish kerak bo'lgan birinchi narsa, chunki u strategiyani har qanday kusal mexanizm muhim bo'lishidan oldin o'ldirishi mumkin.

Xulosa

Kausal o'rmonlar ushbu blogning boshqa toolkitidan farqli obyektni baholaydi. "Ushbu aktiv nimani qaytaradi" emas, balki "u uchmaganida nisbatan ushbu hodisa ushbu aktivni qancha harakatlantirdi". Buni baholash mumkin qiluvchi mexanizmlar — heterogennilikni maksimal qiluvchi bo'linishlar, vijdli baholash, moslashuvchan yadro og'irliklari va infinitesimal-jackknife intervallari — oddiy nazorat qilingan o'rganishda analogi yo'q va u talab qiladigan farazlar (unconfoundedness, overlap, SUTVA) yetarlicha kuchliki, ular da'vo qilinish o'rniga test qilinishi kerak.

Ushbu maqolaning yo'q narsasi — natija. Yuqoridagi har bir raqam joy tutuvchi. vijdli manfiy va deflated Sharpe tomonidan belgilangan standartga ko'ra, o'lchanmagan CATE taqsimoti, p-value bo'lgan BLP α1\alpha_1, overlap diagonistika va DSR/PBO eshikli namuna tashqari PnL bo'lmagan metod — darslik, topilm emas. Ushbu raqamlar keyingi ish; manfiy natija nashr qilishga layoqat.

Havolalar

  1. Athey, S., Imbens, G.W. "Recursive Partitioning for Heterogeneous Causal Effects." PNAS, 113(27), 7353-7360 (2016).
  2. Wager, S., Athey, S. "Estimation and Inference of Heterogeneous Treatment Effects using Random Forests." JASA, 113(523), 1228-1242 (2018). arXiv:1510.04342
  3. Athey, S., Tibshirani, J., Wager, S. "Generalized Random Forests." Annals of Statistics, 47(2), 1148-1178 (2019).
  4. Chernozhukov, V., et al. "Double/Debiased Machine Learning for Treatment and Structural Parameters." The Econometrics Journal, 21(1), C1-C68 (2018).
  5. Chernozhukov, V., Demirer, M., Duflo, E., Fernandez-Val, I. "Generic Machine Learning Inference on Heterogeneous Treatment Effects in Randomized Experiments." (2018). arXiv:1712.04802
  6. Battocchi, K., et al. "EconML: A Python Package for ML-Based Heterogeneous Treatment Effects Estimation." Microsoft Research (2019). GitHub
blog.disclaimer

Authors

Eugen Soloviov
Eugen Soloviov

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.

Newsletter

Bozordan bir qadam oldinda bo'ling

Sun'iy intellekt savdo tahlillari, bozor tahlili va platforma yangiliklari uchun bizning xabarnomaga obuna bo'ling.

Biz sizning maxfiyligingizni hurmat qilamiz. Istalgan vaqtda obunadan chiqishingiz mumkin.