← Kembali ke artikel
August 10, 2026
Bacaan 5 minit

The Other Way a Regression Lies: Endogeneity, 2SLS, and the Gamma Calibration Problem

The Other Way a Regression Lies: Endogeneity, 2SLS, and the Gamma Calibration Problem
#causal-inference
#instrumental-variables
#2SLS
#econometrics
#endogeneity

Terdapat dua cara yang berbeza dari segi struktur yang boleh menyebabkan regresi menipu anda, dan setakat ini blog ini hanya menyerang salah satu daripadanya.

Yang pertama ialah bias pemilihan dalam proses carian: anda menjalankan sepuluh ribu backtest, menyimpan yang terbaik, dan nombor yang anda lihat ialah maksimum taburan hingar, bukannya kesan. Itulah subjek nisbah Sharpe terdeflasi dan kemuncaknya hasil negatif yang jujur. Penyelesaiannya ialah menetapkan harga kepada carian tersebut.

Yang kedua ialah bias dalam pekali itu sendiri, pada satu regresi yang tidak pernah anda cari melalui pelbagai pilihan. Jika regressor berkorelasi dengan sebutan ralat, OLS adalah bias dan tidak konsisten — dan berbeza daripada hingar pensampelan, perkara ini tidak mengecil apabila saiz sampel meningkat. Lebih banyak data menjadikan nombor yang salah lebih ketat. Sebanyak mana pun bootstrap, walk-forward atau deflasi tidak menyentuhnya, kerana tiada satu pun kaedah itu mempersoalkan pengenalpastian, hanya pemilihan.

Artikel ini membincangkan kegagalan kedua, dan ini bukan kebimbangan abstrak di sini. Artikel penentukuran Almgren-Chriss memadankan impak kekal γ\gamma dengan meregresikan perubahan harga pertengahan 5 minit terhadap aliran taker bersih, memperoleh R2R^2 beberapa peratus dan pekali yang berubah 2-5 kali antara hari, lalu menamakan endogeniti sebagai sebab struktur pertama: "Aliran bertindak balas terhadap harga sama banyak seperti harga bertindak balas terhadap aliran. Pedagang momentum membeli kerana harga meningkat; OLS naif bagi pulangan terhadap aliran menangkap reaksi mereka dan mengaitkannya dengan impak." Artikel itu turut menamakan penyelesaian yang bersih — isian anda sendiri, eksogen mengikut pembinaan.

Ini ialah masalah pemboleh ubah instrumental dengan instrumen yang telah dinamakan dan data yang sudah tersedia secara dalaman. Di bawah ialah penganggar, diagnostik dan eksperimen tersebut.

Endogeniti dalam satu perenggan

Daya yang saling berjalin mewujudkan endogeniti

OLS menganggar β1\beta_1 penyebab dalam Yi=β0+β1Xi+εiY_i = \beta_0 + \beta_1 X_i + \varepsilon_i hanya apabila E[εiXi]=0\mathbb{E}[\varepsilon_i \mid X_i] = 0. Tiga perkara boleh mematahkannya. Bias pemboleh ubah tertinggal: jika WW memacu kedua-dua XX dan YY tetapi tidak diperhatikan, ia berada dalam ralat, εi=γWi+ui\varepsilon_i = \gamma W_i + u_i, dan Cov(Xi,Wi)0\text{Cov}(X_i, W_i) \neq 0 memaksa Cov(Xi,εi)0\text{Cov}(X_i, \varepsilon_i) \neq 0 — dalam mikrostruktur, ketibaan maklumat yang tidak diperhatikan memacu volum dan turun naik bersama-sama. Ralat pengukuran: dengan proksi bising Xi=Xi+νiX_i = X_i^* + \nu_i, plim β^1OLS=β1σX2/(σX2+σν2)\text{plim } \hat{\beta}_1^{\text{OLS}} = \beta_1 \cdot \sigma_{X^*}^2 / (\sigma_{X^*}^2 + \sigma_\nu^2) sentiasa terattenuasi menuju sifar — aliran aggTrades bersih ialah proksi untuk aliran pesanan bertanda sebenar merentasi pasaran terpecah, dan bahagian yang tidak pernah anda lihat ialah ralat pengukuran. Keserentakan: sudah dinyatakan dalam bentuk yang lebih tajam dan konkrit dalam penentukuran impak Almgren-Chriss, iaitu masalah yang mendorong segala-galanya di bawah.

Penyelesaian IV

Instrumen yang mengasingkan kesan pasaran bersebab

Sesuatu instrumen ZZ mesti memenuhi dua syarat:

  1. Relevan: Cov(Zi,Xi)0\text{Cov}(Z_i, X_i) \neq 0. Boleh diuji, dan anda mesti mengujinya.
  2. Pengecualian: Cov(Zi,εi)=0\text{Cov}(Z_i, \varepsilon_i) = 0ZZ mempengaruhi YY hanya melalui XX. Tidak boleh diuji. Tidak pernah. Ini hujah ekonomi, bukan statistik.

Untuk satu instrumen dan satu regressor endogen, penganggar ialah nisbah dua kesan bentuk terkurang (penganggar Wald):

β^1IV=Cov(Zi,Yi)Cov(Zi,Xi)=π^reduced formπ^first stage\hat{\beta}_1^{\text{IV}} = \frac{\text{Cov}(Z_i, Y_i)}{\text{Cov}(Z_i, X_i)} = \frac{\hat{\pi}_{\text{reduced form}}}{\hat{\pi}_{\text{first stage}}}

Dengan kawalan dan berbilang instrumen, gunakan 2SLS. Peringkat 1: regresikan pemboleh ubah endogen terhadap instrumen dan kawalan, Xi=π0+πZZi+πCCi+viX_i = \pi_0 + \boldsymbol{\pi}_Z' \mathbf{Z}_i + \boldsymbol{\pi}_C' \mathbf{C}_i + v_i, dan simpan nilai terpadan X^i\hat{X}_i — mengikut pembinaan, ia hanya mengandungi variasi eksogen yang dipacu instrumen. Peringkat 2: jalankan Yi=β0+β1X^i+βCCi+εiY_i = \beta_0 + \beta_1 \hat{X}_i + \boldsymbol{\beta}_C' \mathbf{C}_i + \varepsilon_i. Dalam bentuk matriks, dengan PZ=Z(ZZ)1Z\mathbf{P}_Z = \mathbf{Z}(\mathbf{Z}'\mathbf{Z})^{-1}\mathbf{Z}':

β^2SLS=(XPZX)1XPZy,Var(β^2SLS)=σ^2(XPZX)1.\hat{\boldsymbol{\beta}}_{2\text{SLS}} = \left(\mathbf{X}' \mathbf{P}_Z \mathbf{X}\right)^{-1} \mathbf{X}' \mathbf{P}_Z \mathbf{y}, \qquad \text{Var}(\hat{\boldsymbol{\beta}}_{2\text{SLS}}) = \hat{\sigma}^2 \left(\mathbf{X}' \mathbf{P}_Z \mathbf{X}\right)^{-1}.

Perangkap yang menjerat semua orang yang menulisnya secara manual: jika anda benar-benar menjalankan dua panggilan lstsq, ralat piawai peringkat 2 anda salah. X^i\hat{X}_i ialah regressor yang dijana, dan varians baki mesti dikira daripada XX asal, bukan nilai yang dipadankan. Ralat piawai dua langkah naif terlalu kecil, jadi statistik tt anda terlalu besar dan anda akan terlebih menolak. Gunakan pelaksanaan IV sebenar:

from linearmodels.iv import IV2SLS
import pandas as pd

def iv_regression(df, dep_var, endog_var, instruments, controls=None):
    """2SLS with correct generated-regressor standard errors."""
    y = df[dep_var]
    endog = df[[endog_var]]
    instr = df[instruments]

    const = pd.Series(1, index=df.index, name="const")
    exog = pd.concat([const, df[controls]], axis=1) if controls else const

    res = IV2SLS(dependent=y, exog=exog, endog=endog,
                 instruments=instr).fit(cov_type="robust")
    print(res.summary)
    return res

Eksperimen: Gamma OLS berbanding Gamma 2SLS

Membandingkan dua laluan penganggaran

Regresi yang diuji ialah padanan impak kekal daripada artikel Almgren-Chriss:

ΔS5m=γQnet+noise,Qnet=taker buystaker sells.\Delta S_{5m} = \gamma\, Q_{\text{net}} + \text{noise}, \qquad Q_{\text{net}} = \text{taker buys} - \text{taker sells}.

QnetQ_{\text{net}} adalah endogen menurut hujah keserentakan di atas. Instrumennya ialah isian anda sendiri dalam tetingkap tersebut: isian maker anda dicetuskan oleh jadual sebut harga dan dasar inventori anda sendiri, bukan oleh laluan harga pasaran, jadi ia merupakan sumber variasi aliran pesanan yang munasabahnya tidak berkorelasi dengan komponen reaksi momentum dalam ralat. Sekatan pengecualian — bahawa isian anda menggerakkan harga pertengahan hanya melalui sumbangannya kepada aliran bersih — ialah andaian yang perlu dihujahkan, dan ia paling lemah tepat ketika sebut harga anda sendiri dipacu isyarat. Jika sebut harga anda bergantung pada ramalan harga jangka pendek, instrumen itu tercemar dan reka bentuk ini gagal. Isian daripada dasar pengurusan inventori atau penangkapan spread yang tulen ialah kes yang bersih.

Data isian datang daripada rekod TCA yang diterangkan dalam implementation shortfall dan TCA DIY — log yang sama yang membekalkan sampel pemadanan untuk lengkung slippage daripada isian anda sendiri. Kawalan: ΔS\Delta S tertangguh dan turun naik direalisasikan dalam tetingkap.

ols  = IV2SLS(dependent=df.dS, exog=df[["const", "dS_lag", "rv"]],
              endog=None, instruments=None).fit(cov_type="robust")
tsls = iv_regression(df, "dS", "q_net", ["q_own"], ["dS_lag", "rv"])

Empat nombor menentukan sama ada usaha ini berbaloi: γ\gamma OLS, γ\gamma 2SLS, FF peringkat pertama, dan jurang antara kedua-dua pekali — iaitu bahagian anggaran OLS yang merupakan reaksi momentum dan bukannya impak.

Jika FF peringkat pertama kembali di bawah 10, itulah hasilnya: isian sendiri terlalu kecil bahagiannya daripada aliran bersih pada resolusi 5 minit untuk mengenal pasti γ\gamma, dan penulisan yang jujur ialah hasil negatif mengikut gaya hasil negatif yang jujur. Hasil negatif instrumen lemah ialah penemuan sebenar — ia memberitahu anda bahawa endogeniti dalam pemadanan Gamma tidak boleh dibaiki pada saiz sampel dan ufuk ini, dan anggaran kos pra-dagangan yang dibina atas γ\gamma OLS membawa bias menaik yang tidak boleh dibuang.

Diagnostik

Gelang pengesahan mengelilingi laluan bersebab

F peringkat pertama (instrumen lemah). Peraturan am Staiger-Stock: F>10F > 10. Nilai kritikal Stock-Yogo untuk satu regressor endogen lebih ketat — bagi saiz IV maksimum 10%, F>16.38F > 16.38 dengan satu instrumen, 19.93 dengan dua, 22.30 dengan tiga; bagi saiz 15%, 8.96 / 11.59 / 12.83; bagi 20%, 6.66 / 8.75 / 9.54.

F=(Runrestricted2Rrestricted2)/q(1Runrestricted2)/(nk)F = \frac{(R_{\text{unrestricted}}^2 - R_{\text{restricted}}^2) / q}{(1 - R_{\text{unrestricted}}^2) / (n - k)}

Durbin-Wu-Hausman (adakah IV benar-benar diperlukan). Jika OLS konsisten, ia juga lebih cekap, jadi uji dahulu sebelum bertukar. Bentuk penambahan baki ialah bentuk praktikal: jalankan peringkat 1, simpan v^i=XiX^i\hat{v}_i = X_i - \hat{X}_i, kemudian jalankan regresi struktur OLS dengan v^i\hat{v}_i ditambah sebagai regressor. Pekali yang signifikan pada v^i\hat{v}_i ialah bukti endogeniti.

def durbin_wu_hausman(df, dep, endog, instruments, controls):
    """Augmented-regression form of the DWH endogeneity test."""
    import statsmodels.api as sm
    X1 = sm.add_constant(df[instruments + controls])
    v_hat = df[endog] - sm.OLS(df[endog], X1).fit().fittedvalues
    X2 = sm.add_constant(df[[endog] + controls].assign(v_hat=v_hat))
    res = sm.OLS(df[dep], X2).fit(cov_type="HC1")
    return res.tvalues["v_hat"], res.pvalues["v_hat"]

Sargan-Hansen (pengenalpastian berlebihan). Dengan q>pq > p instrumen, anda boleh menguji kesahan bersama: J=nRε^Z2χ2(qp)J = n \cdot R^2_{\hat{\varepsilon} \sim \mathbf{Z}} \sim \chi^2(q - p), dengan R2R^2 datang daripada meregresikan baki 2SLS terhadap semua instrumen dan kawalan eksogen. Catatan amaran ini lebih penting daripada statistiknya: Sargan hanya mengesan instrumen yang tidak sah dengan cara yang berbeza. Jika setiap instrumen berkorelasi dengan pemboleh ubah tertinggal yang sama, ujian akan lulus dengan bersih dan tidak memberitahu anda apa-apa.

Instrumen yang wujud dalam mikrostruktur kripto

Kejutan bebas dalam rangkaian pasaran kripto

Mencari instrumen yang sah ialah keseluruhan kesukaran, dan pilihan biasa kewangan korporat-ekuiti (liputan penganalisis, perisai cukai, aliran tunai luar jangka) tidak berfungsi di sini. Dua kelas sebenarnya boleh digunakan:

Pemboleh ubah endogen Instrumen Rasional
Aliran taker bersih Isian anda sendiri Didorong oleh sebut harga dan dasar inventori anda, bukan laluan harga pasaran — eksogen mengikut pembinaan jika sebut harga anda tidak bersyarat pada isyarat
Aliran / volum agregat Aliran mekanikal bursa: pengimbangan semula indeks, tetingkap penyelesaian funding, gelombang pembubaran berjadual Masa ditetapkan oleh peraturan bursa, bukan oleh ketibaan maklumat

Perangkap

Laluan tersembunyi melemahkan instrumen

Instrumen lemah tidak gagal dengan kuat. Dengan peringkat pertama yang lemah, 2SLS bias ke arah OLS dalam sampel terhingga, kira-kira

Bias2SLSBiasOLS1F1.\frac{\text{Bias}_{2\text{SLS}}}{\text{Bias}_{\text{OLS}}} \approx \frac{1}{F - 1}.

Pada F=5F = 5, anda mengekalkan 25% bias OLS sambil melaporkan anggaran "bersebab". Penyelesaiannya ialah LIML, yang mempunyai tingkah laku sampel terhingga lebih baik, atau ujian Anderson-Rubin, yang sah tanpa mengira kekuatan instrumen.

Banyak instrumen menyebabkan bias. Bias2SLS(q/n)BiasOLS\text{Bias}_{2\text{SLS}} \approx (q/n) \cdot \text{Bias}_{\text{OLS}}. Memasukkan lag semua perkara ke dalam Z\mathbf{Z} untuk meningkatkan FF peringkat pertama menarik anggaran terus kembali kepada OLS. Jika q/nq/n tidak boleh diabaikan, gunakan LIML, IV jackknife (JIVE), atau peringkat pertama yang diregularisasikan.

Sekatan pengecualian tidak boleh diuji. Bukan oleh Sargan, bukan oleh apa-apa pun. Ia dipertahankan dengan penaakulan domain, dan bentuk pertahanan yang jujur ialah analisis sensitiviti: sebesar mana pelanggaran yang diperlukan untuk membalikkan kesimpulan?

Kesimpulan

Laluan sebab yang dipercayai merentasi data bising

  • Deflasi membaiki bias daripada carian. Ia tidak melakukan apa-apa terhadap bias dalam pekali. Ini ialah kegagalan yang berbeza dan memerlukan alat yang berbeza.
  • Bias endogeniti tidak lenyap dengan saiz sampel. Pekali yang ketat, dibootstrap dengan baik dan disahkan secara walk-forward masih boleh salah secara sistematik.
  • Regresi Gamma dalam penentukuran Almgren-Chriss ialah kes sebenar dalaman, dengan instrumen yang dinamakan (isian sendiri) dan data yang sudah dilog oleh saluran paip TCA.
  • Laporkan FF peringkat pertama sebelum pekali 2SLS. Di bawah 10, pekali itu bukan bukti, dan menyatakannya ialah hasil yang boleh diterbitkan.
Penafian: Maklumat yang disediakan dalam artikel ini adalah untuk tujuan pendidikan dan maklumat sahaja dan bukan merupakan nasihat kewangan, pelaburan, atau dagangan. Dagangan mata wang kripto melibatkan risiko kerugian yang ketara.

Pengarang

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

Kekal Mendahului Pasaran

Langgan surat berita kami untuk pandangan dagangan AI eksklusif, analisis pasaran, dan kemas kini platform.

Kami menghormati privasi anda. Berhenti melanggan pada bila-bila masa.