The Other Way a Regression Lies: Endogeneity, 2SLS, and the Gamma Calibration Problem
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 dengan meregresikan perubahan harga pertengahan 5 minit terhadap aliran taker bersih, memperoleh 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

OLS menganggar penyebab dalam hanya apabila . Tiga perkara boleh mematahkannya. Bias pemboleh ubah tertinggal: jika memacu kedua-dua dan tetapi tidak diperhatikan, ia berada dalam ralat, , dan memaksa — dalam mikrostruktur, ketibaan maklumat yang tidak diperhatikan memacu volum dan turun naik bersama-sama. Ralat pengukuran: dengan proksi bising , 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

Sesuatu instrumen mesti memenuhi dua syarat:
- Relevan: . Boleh diuji, dan anda mesti mengujinya.
- Pengecualian: — mempengaruhi hanya melalui . 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):
Dengan kawalan dan berbilang instrumen, gunakan 2SLS. Peringkat 1: regresikan pemboleh ubah endogen terhadap instrumen dan kawalan, , dan simpan nilai terpadan — mengikut pembinaan, ia hanya mengandungi variasi eksogen yang dipacu instrumen. Peringkat 2: jalankan . Dalam bentuk matriks, dengan :
Perangkap yang menjerat semua orang yang menulisnya secara manual: jika anda benar-benar menjalankan dua panggilan lstsq, ralat piawai peringkat 2 anda salah. ialah regressor yang dijana, dan varians baki mesti dikira daripada asal, bukan nilai yang dipadankan. Ralat piawai dua langkah naif terlalu kecil, jadi statistik 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

Regresi yang diuji ialah padanan impak kekal daripada artikel Almgren-Chriss:
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: 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: OLS, 2SLS, peringkat pertama, dan jurang antara kedua-dua pekali — iaitu bahagian anggaran OLS yang merupakan reaksi momentum dan bukannya impak.
Jika peringkat pertama kembali di bawah 10, itulah hasilnya: isian sendiri terlalu kecil bahagiannya daripada aliran bersih pada resolusi 5 minit untuk mengenal pasti , 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 OLS membawa bias menaik yang tidak boleh dibuang.
Diagnostik

F peringkat pertama (instrumen lemah). Peraturan am Staiger-Stock: . Nilai kritikal Stock-Yogo untuk satu regressor endogen lebih ketat — bagi saiz IV maksimum 10%, 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.
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 , kemudian jalankan regresi struktur OLS dengan ditambah sebagai regressor. Pekali yang signifikan pada 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 instrumen, anda boleh menguji kesahan bersama: , dengan 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

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

Instrumen lemah tidak gagal dengan kuat. Dengan peringkat pertama yang lemah, 2SLS bias ke arah OLS dalam sampel terhingga, kira-kira
Pada , 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. . Memasukkan lag semua perkara ke dalam untuk meningkatkan peringkat pertama menarik anggaran terus kembali kepada OLS. Jika 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

- 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 peringkat pertama sebelum pekali 2SLS. Di bawah 10, pekali itu bukan bukti, dan menyatakannya ialah hasil yang boleh diterbitkan.
Pengarang
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.