← Kembali ke artikel
August 10, 2026
5 menit baca

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

Ada dua cara yang secara struktural berbeda yang dapat membuat regresi menyesatkan Anda, dan sejauh ini blog ini baru menyerang salah satunya.

Yang pertama adalah bias seleksi dalam pencarian: Anda menjalankan sepuluh ribu backtest, mempertahankan yang terbaik, dan angka yang Anda lihat adalah maksimum dari distribusi noise, bukan suatu efek. Itulah pokok bahasan deflated Sharpe ratio dan penutupnya, honest negative. Solusinya adalah memperhitungkan biaya pencarian.

Yang kedua adalah bias pada koefisien itu sendiri, dalam satu regresi yang sama sekali tidak Anda cari melalui banyak percobaan. Jika regressor berkorelasi dengan term error, OLS menjadi bias dan tidak konsisten — dan tidak seperti noise sampling, bias ini tidak menyusut ketika ukuran sampel bertambah. Lebih banyak data justru membuat angka yang salah semakin rapat. Tidak ada bootstrap, walk-forward, atau deflation yang dapat menyentuh masalah ini, karena tidak satu pun dari metode tersebut mempertanyakan identifikasi; semuanya hanya mempertanyakan seleksi.

Artikel ini membahas kegagalan kedua, dan ini bukan kekhawatiran abstrak di sini. Artikel kalibrasi Almgren-Chriss mengestimasi dampak permanen γ\gamma dengan meregresikan perubahan mid-price 5 menit terhadap net taker flow, mendapatkan R2R^2 beberapa persen dan koefisien yang berubah 2-5x antarhari, lalu menyebut endogenitas sebagai alasan struktural pertama: "Flow merespons harga sama seperti harga merespons flow. Momentum trader membeli karena harga naik; OLS naif atas return terhadap flow menangkap reaksi mereka dan mengatribusikannya sebagai impact." Artikel itu juga menyebut perbaikan yang bersih — fill Anda sendiri, yang secara konstruksi bersifat eksogen.

Ini adalah masalah instrumental variables dengan instrumen yang jelas dan data yang sudah tersedia di internal. Di bawah ini ada estimator, diagnostik, dan eksperimennya.

Endogenitas dalam satu paragraf

Kekuatan yang saling berkelindan menciptakan endogenitas

OLS mengestimasi β1\beta_1 kausal dalam Yi=β0+β1Xi+εiY_i = \beta_0 + \beta_1 X_i + \varepsilon_i hanya jika E[εiXi]=0\mathbb{E}[\varepsilon_i \mid X_i] = 0. Ada tiga hal yang dapat merusaknya. Bias akibat variabel yang dihilangkan: jika WW memengaruhi XX dan YY sekaligus tetapi tidak teramati, variabel itu masuk ke dalam error, ε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 microstructure, kedatangan informasi yang tidak teramati mendorong volume dan volatilitas secara bersamaan. Measurement error: dengan proxy noisy 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), yang selalu terattenuasi menuju nol — flow aggTrades yang sudah dinetkan adalah proxy untuk order flow bertanda yang sebenarnya di pasar yang terfragmentasi, dan bagian yang tidak pernah Anda lihat merupakan measurement error. Simultanitas: sudah dinyatakan dalam bentuk yang lebih tajam dan konkret di kalibrasi impact Almgren-Chriss, yang menjadi masalah pemicu untuk semua hal di bawah ini.

Solusi IV

Instrumen yang mengisolasi efek pasar yang kausal

Sebuah instrumen ZZ harus memenuhi dua kondisi:

  1. Relevansi: Cov(Zi,Xi)0\text{Cov}(Z_i, X_i) \neq 0. Ini dapat diuji, dan Anda wajib mengujinya.
  2. Eksklusi: Cov(Zi,εi)=0\text{Cov}(Z_i, \varepsilon_i) = 0ZZ memengaruhi YY hanya melalui XX. Ini tidak dapat diuji. Tidak pernah. Ini adalah argumen ekonomi, bukan statistik.

Untuk satu instrumen dan satu regressor endogen, estimatornya merupakan rasio dua efek reduced-form (estimator 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 kontrol dan banyak instrumen, gunakan 2SLS. Tahap 1: regresikan variabel endogen terhadap instrumen dan kontrol, Xi=π0+πZZi+πCCi+viX_i = \pi_0 + \boldsymbol{\pi}_Z' \mathbf{Z}_i + \boldsymbol{\pi}_C' \mathbf{C}_i + v_i, lalu simpan nilai fitted X^i\hat{X}_i — secara konstruksi, nilai ini hanya mengandung variasi eksogen yang didorong instrumen. Tahap 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}.

Jebakan yang menangkap semua orang yang menulis ini sendiri: jika Anda benar-benar menjalankan dua pemanggilan lstsq, standard error tahap 2 Anda akan salah. X^i\hat{X}_i adalah regressor generated, dan varians residual harus dihitung dari XX asli, bukan dari nilai fitted. Standard error dua langkah yang naif terlalu kecil, sehingga statistik-tt Anda terlalu besar dan Anda akan terlalu sering menolak hipotesis nol. Gunakan implementasi IV yang sebenarnya:

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 versus gamma 2SLS

Dua jalur estimasi yang dibandingkan

Regresi yang diuji adalah fitting dampak permanen dari 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}} endogen karena argumen simultanitas di atas. Instrumennya adalah fill Anda sendiri dalam jendela tersebut: fill maker Anda dipicu oleh jadwal kuotasi dan kebijakan inventori Anda sendiri, bukan oleh jalur harga pasar, sehingga menjadi sumber variasi order flow yang secara masuk akal tidak berkorelasi dengan komponen reaksi momentum dalam error. Restriksi eksklusi — bahwa fill Anda menggerakkan mid hanya melalui kontribusinya pada net flow — adalah asumsi yang harus diperdebatkan, dan paling lemah tepat ketika kuotasi Anda sendiri digerakkan oleh sinyal. Jika kuotasi Anda bergantung pada prediksi harga jangka pendek, instrumen tersebut terkontaminasi dan desain ini gagal. Fill dari kebijakan manajemen inventori atau spread-capture murni adalah kasus yang bersih.

Data fill berasal dari catatan TCA yang dijelaskan dalam implementation shortfall dan DIY TCA — log yang sama yang menyediakan sampel fitting untuk kurva slippage dari fill Anda sendiri. Kontrol: lagged ΔS\Delta S dan volatilitas terealisasi dalam jendela tersebut.

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 angka menentukan apakah eksperimen ini layak dilakukan: γ\gamma OLS, γ\gamma 2SLS, FF tahap pertama, dan selisih antara kedua koefisien — yaitu bagian dari estimasi OLS yang merupakan reaksi momentum, bukan impact.

Jika FF tahap pertama berada di bawah 10, itulah hasilnya: fill Anda merupakan bagian yang terlalu kecil dari net flow pada resolusi 5 menit untuk mengidentifikasi γ\gamma, dan penulisan yang jujur adalah hasil negatif dengan gaya honest negative. Hasil negatif dari instrumen lemah adalah temuan yang nyata — ini memberi tahu Anda bahwa endogenitas dalam fitting gamma tidak dapat diperbaiki pada ukuran sampel dan horizon ini, serta estimasi biaya pra-perdagangan yang dibangun berdasarkan γ\gamma OLS membawa bias ke atas yang tidak dapat dihilangkan.

Diagnostik

Cincin validasi di sekitar jalur kausal

F tahap pertama (instrumen lemah). Aturan praktis Staiger-Stock: F>10F > 10. Nilai kritis Stock-Yogo untuk satu regressor endogen lebih ketat — untuk ukuran IV maksimum 10%, F>16.38F > 16.38 dengan satu instrumen, 19.93 dengan dua, 22.30 dengan tiga; untuk ukuran 15%, 8.96 / 11.59 / 12.83; untuk 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 (apakah IV benar-benar diperlukan). Jika OLS konsisten, OLS juga lebih efisien, jadi lakukan pengujian sebelum beralih. Bentuk residual-augmentation adalah yang praktis: jalankan tahap 1, simpan v^i=XiX^i\hat{v}_i = X_i - \hat{X}_i, lalu jalankan regresi struktural OLS dengan v^i\hat{v}_i ditambahkan sebagai regressor. Koefisien v^i\hat{v}_i yang signifikan merupakan bukti adanya endogenitas.

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 (overidentifikasi). Dengan q>pq > p instrumen, Anda dapat menguji validitas bersama: J=nRε^Z2χ2(qp)J = n \cdot R^2_{\hat{\varepsilon} \sim \mathbf{Z}} \sim \chi^2(q - p), dengan R2R^2 berasal dari regresi residual 2SLS terhadap semua instrumen dan kontrol eksogen. Peringatannya lebih penting daripada statistiknya: Sargan hanya mendeteksi instrumen yang tidak valid dengan cara yang berbeda. Jika semua instrumen berkorelasi dengan variabel yang dihilangkan yang sama, pengujian akan lolos dengan bersih dan tidak memberi tahu Anda apa pun.

Instrumen yang tersedia dalam microstructure kripto

Guncangan independen dalam jaringan pasar kripto

Menemukan instrumen yang valid adalah seluruh kesulitannya, dan andalan equity-corporate-finance (cakupan analis, tax shield, windfall cash flow) tidak aktif di sini. Dua kelas benar-benar berlaku:

Variabel endogen Instrumen Alasan
Net taker flow Fill Anda sendiri Didorong oleh kuotasi dan kebijakan inventori Anda, bukan jalur harga pasar — eksogen secara konstruksi jika kuotasi Anda tidak dikondisikan oleh sinyal
Aggregate flow / volume Flow mekanis bursa: rebalancing indeks, jendela funding-settlement, cascade likuidasi terjadwal Waktunya ditetapkan oleh aturan bursa, bukan oleh kedatangan informasi

Jebakan

Jalur tersembunyi merusak sebuah instrumen

Instrumen lemah tidak gagal dengan suara keras. Dengan tahap pertama yang lemah, 2SLS bias menuju OLS pada sampel berhingga, kira-kira

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

Pada F=5F = 5, Anda masih membawa 25% bias OLS sambil melaporkan estimasi "kausal". Perbaikannya adalah LIML, yang memiliki perilaku sampel berhingga lebih baik, atau pengujian Anderson-Rubin, yang valid terlepas dari 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 dari segala hal ke dalam Z\mathbf{Z} untuk menaikkan FF tahap pertama akan membawa estimasi kembali langsung menuju OLS. Jika q/nq/n tidak dapat diabaikan, gunakan LIML, jackknife IV (JIVE), atau tahap pertama yang diregularisasi.

Restriksi eksklusi tidak dapat diuji. Bukan oleh Sargan, bukan oleh apa pun. Restriksi ini dipertahankan dengan penalaran domain, dan bentuk pembelaan yang jujur adalah analisis sensitivitas: seberapa besar pelanggaran yang diperlukan untuk membalikkan kesimpulan?

Inti kesimpulan

Jalur kausal tepercaya menembus data yang penuh noise

  • Deflation memperbaiki bias dari pencarian. Deflation tidak melakukan apa pun terhadap bias pada koefisien. Keduanya adalah kegagalan yang berbeda dan membutuhkan alat yang berbeda.
  • Bias endogenitas tidak menghilang ketika ukuran sampel bertambah. Koefisien yang rapat, di-bootstrap dengan baik, dan divalidasi dengan walk-forward tetap dapat salah secara sistematis.
  • Regresi gamma dalam kalibrasi Almgren-Chriss adalah kasus nyata di internal, dengan instrumen yang jelas (fill sendiri) dan data yang sudah dicatat oleh pipeline TCA.
  • Laporkan FF tahap pertama sebelum koefisien 2SLS. Di bawah 10, koefisien tersebut bukan bukti, dan mengatakan hal itu adalah hasil yang layak dipublikasikan.
Penafian: Informasi yang disediakan dalam artikel ini hanya untuk tujuan edukasi dan informasi serta tidak merupakan nasihat keuangan, investasi, atau trading. Trading mata uang kripto mengandung risiko kerugian yang signifikan.

Penulis

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

Selangkah Lebih Maju dari Pasar

Berlangganan newsletter kami untuk wawasan AI trading eksklusif, analisis pasar, dan pembaruan platform.

Kami menghormati privasi Anda. Berhenti berlangganan kapan saja.