The Other Way a Regression Lies: Endogeneity, 2SLS, and the Gamma Calibration Problem
Selection bias in the search is not the only way a regression fools you. When the regressor is correlated with the error, more data makes the estimate more confidently wrong. Instrumental variables applied to the one endogeneity problem this blog has already left open: permanent impact from net taker flow.

มีสองวิธีที่แตกต่างกันในเชิงโครงสร้างซึ่งทำให้การถดถอยหลอกคุณได้ และจนถึงตอนนี้บล็อกนี้เพิ่งโจมตีไปเพียงวิธีเดียวเท่านั้น
วิธีแรกคืออคติจากการเลือกใน กระบวนการค้นหา: คุณรันแบ็กเทสต์หนึ่งหมื่นครั้ง เก็บผลลัพธ์ที่ดีที่สุดไว้ และตัวเลขที่คุณกำลังดูอยู่คือค่าสูงสุดของการแจกแจงของสัญญาณรบกวน ไม่ใช่ผลกระทบ นี่คือหัวข้อของ อัตราส่วน Sharpe ที่หักล้างอคติแล้ว และบทสรุป ผลลัพธ์เชิงลบอย่างตรงไปตรงมา วิธีแก้คือประเมินต้นทุนของการค้นหา
วิธีที่สองคืออคติใน ค่าสัมประสิทธิ์เอง จากการถดถอยเพียงครั้งเดียวที่คุณไม่ได้ค้นหาผ่านทางเลือกต่าง ๆ เลย หากตัวแปรถดถอยมีสหสัมพันธ์กับพจน์ความคลาดเคลื่อน OLS จะมีอคติและไม่สอดคล้อง — และต่างจากสัญญาณรบกวนจากการสุ่มตัวอย่าง ปัญหานี้ไม่ลดลงเมื่อขนาดตัวอย่างเพิ่มขึ้น ข้อมูลที่มากขึ้นเพียงทำให้ตัวเลขที่ผิดมีช่วงแคบลง ไม่มีการบูตสแตรป การเดินหน้าแบบ walk-forward หรือการหักล้างอคติใดแตะปัญหานี้ได้ เพราะไม่มีวิธีใดตั้งคำถามกับการระบุเหตุ แต่ตั้งคำถามกับการคัดเลือกเท่านั้น
บทความนี้ว่าด้วยความล้มเหลวประการที่สอง และไม่ใช่ความกังวลเชิงนามธรรมในกรณีนี้ บทความการสอบเทียบ Almgren-Chriss ฟิตผลกระทบถาวร ด้วยการถดถอยการเปลี่ยนแปลงราคากลางในช่วง 5 นาทีตามกระแสคำสั่ง taker สุทธิ ได้ค่า เพียงไม่กี่เปอร์เซ็นต์และค่าสัมประสิทธิ์ที่เปลี่ยนไป 2-5 เท่าระหว่างวัน พร้อมระบุว่าภาวะเอนโดจีนิตีเป็นเหตุผลเชิงโครงสร้างประการแรก: "กระแสคำสั่งตอบสนองต่อราคาในระดับเดียวกับที่ราคาตอบสนองต่อกระแสคำสั่ง นักเทรดโมเมนตัมซื้อ เพราะ ราคาปรับขึ้น; OLS แบบไร้เดียงสาของผลตอบแทนต่อกระแสคำสั่งจะจับปฏิกิริยาของพวกเขาได้ แล้วตีความว่าเป็นผลกระทบ" บทความนั้นยังระบุวิธีแก้ที่สะอาด — การเติมคำสั่งของคุณเอง ซึ่งเป็นภายนอกโดยการออกแบบ
นี่คือปัญหาตัวแปรเครื่องมือที่มีเครื่องมือระบุชื่อไว้แล้วและมีข้อมูลอยู่ภายในองค์กร ด้านล่างคือเครื่องประมาณค่า การวินิจฉัย และการทดลอง
ภาวะเอนโดจีนิตีในหนึ่งย่อหน้า

OLS จะประมาณค่าเชิงสาเหตุ ใน ได้ก็ต่อเมื่อ มีสามสิ่งที่ทำลายเงื่อนไขนี้ได้ อคติจากตัวแปรที่ละไว้: หาก เป็นตัวขับเคลื่อนทั้ง และ แต่ไม่ได้สังเกตเห็น มันจะอยู่ในความคลาดเคลื่อน และ จะบังคับให้ — ในโครงสร้างจุลภาค การเข้ามาของข้อมูลที่ไม่ได้สังเกตจะขับเคลื่อนทั้งปริมาณและความผันผวนไปพร้อมกัน ความคลาดเคลื่อนในการวัด: เมื่อมีตัวแทนที่มีสัญญาณรบกวน , จะถูกลดทอนเข้าหาศูนย์เสมอ — กระแส aggTrades สุทธิเป็นตัวแทนของกระแสคำสั่งที่มีเครื่องหมายจริงในตลาดที่แยกส่วน และส่วนที่คุณไม่เคยเห็นคือความคลาดเคลื่อนในการวัด ความเกิดขึ้นพร้อมกัน: ได้ระบุไว้ในรูปแบบที่คมชัดและเป็นรูปธรรมกว่าแล้วใน การสอบเทียบผลกระทบ Almgren-Chriss ซึ่งเป็นปัญหาที่สร้างแรงจูงใจให้ทุกอย่างด้านล่างนี้
วิธีแก้ด้วย IV

เครื่องมือ ต้องเป็นไปตามสองเงื่อนไข:
- ความเกี่ยวข้อง: ทดสอบได้ และคุณต้องทดสอบ
- เงื่อนไขการตัดออก: — ส่งผลต่อ ผ่าน เท่านั้น ทดสอบไม่ได้ ไม่เคยทำได้เลย นี่คือข้อโต้แย้งทางเศรษฐศาสตร์ ไม่ใช่สถิติ
สำหรับเครื่องมือหนึ่งตัวและตัวแปรถดถอยเอนโดจีนัสหนึ่งตัว เครื่องประมาณค่าคืออัตราส่วนของผลกระทบรูปแบบลดรูปสองรายการ (เครื่องประมาณค่า Wald):
เมื่อมีตัวควบคุมและเครื่องมือหลายตัว ให้ใช้ 2SLS ขั้นที่ 1: ถดถอยตัวแปรเอนโดจีนัสกับเครื่องมือและตัวควบคุม แล้วเก็บค่าที่ฟิตได้ — โดยการออกแบบ ค่าดังกล่าวมีเพียงความแปรผันภายนอกที่ขับเคลื่อนด้วยเครื่องมือเท่านั้น ขั้นที่ 2: รัน ในรูปเมทริกซ์ เมื่อ :
กับดักที่จับทุกคนซึ่งเขียนวิธีนี้ด้วยตัวเอง: หากคุณรันคำสั่ง lstsq สองครั้งตามตัวอักษร ค่าความคลาดเคลื่อนมาตรฐานในขั้นที่ 2 จะผิด เป็นตัวแปรถดถอยที่ ถูกสร้างขึ้น และต้องคำนวณความแปรปรวนของส่วนเหลือจาก เดิม ไม่ใช่จากค่าที่ฟิตแล้ว ค่าความคลาดเคลื่อนมาตรฐานแบบสองขั้นอย่างไร้เดียงสาจะเล็กเกินไป ดังนั้นสถิติ จะใหญ่เกินไปและคุณจะปฏิเสธสมมติฐานมากเกินไป ใช้การติดตั้ง IV จริง:
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
การทดลอง: Gamma จาก OLS เทียบกับ Gamma จาก 2SLS

การถดถอยที่กำลังทดสอบคือการฟิตผลกระทบถาวรจากบทความ Almgren-Chriss:
เป็นเอนโดจีนัสตามเหตุผลเรื่องความเกิดขึ้นพร้อมกันข้างต้น เครื่องมือคือ การเติมคำสั่งของคุณเอง ในหน้าต่างนั้น: การเติมคำสั่ง maker ของคุณถูกกระตุ้นโดยตารางการเสนอราคาและนโยบายสินค้าคงคลังของคุณเอง ไม่ใช่เส้นทางราคาของตลาด ดังนั้นจึงเป็นแหล่งความแปรผันของกระแสคำสั่งที่น่าจะไม่สัมพันธ์กับองค์ประกอบปฏิกิริยาโมเมนตัมของความคลาดเคลื่อน ข้อจำกัดการตัดออก — การเติมคำสั่งของคุณจะขยับราคากลาง ผ่าน การมีส่วนร่วมต่อกระแสคำสั่งสุทธิเท่านั้น — เป็นสมมติฐานที่ต้องโต้แย้ง และจะอ่อนแอที่สุดเมื่อการเสนอราคาของคุณขับเคลื่อนด้วยสัญญาณเอง หากราคาเสนอของคุณมีเงื่อนไขตามการพยากรณ์ราคาในช่วงเวลาสั้น เครื่องมือจะปนเปื้อนและการออกแบบนี้จะล้มเหลว การเติมคำสั่งจากนโยบายบริหารสินค้าคงคลังหรือเก็บสเปรดอย่างบริสุทธิ์คือกรณีที่สะอาด
ข้อมูลการเติมคำสั่งมาจากบันทึก TCA ที่อธิบายใน implementation shortfall และ TCA ทำเอง — บันทึกเดียวกับที่ให้ตัวอย่างสำหรับฟิต เส้นโค้ง slippage จากการเติมคำสั่งของคุณเอง ตัวควบคุม: ที่ล่าช้าและความผันผวนที่เกิดขึ้นจริงในหน้าต่าง
# per 5-min bin over the sample:
# dS mid-price change (outcome)
# q_net signed net taker flow (endogenous)
# q_own signed own-fill quantity (instrument)
# dS_lag, rv controls
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"])
ตัวเลขสี่รายการจะตัดสินว่านี่คุ้มค่าหรือไม่: ของ OLS, ของ 2SLS, ในขั้นแรก และช่องว่างระหว่างค่าสัมประสิทธิ์ทั้งสอง — ซึ่งคือสัดส่วนของค่าประมาณ OLS ที่เป็นปฏิกิริยาโมเมนตัมแทนที่จะเป็นผลกระทบ
หาก ในขั้นแรกต่ำกว่า 10 นั่นคือผลลัพธ์: การเติมคำสั่งของคุณเองมีสัดส่วนเล็กเกินไปของกระแสคำสั่งสุทธิที่ความละเอียด 5 นาที จนไม่สามารถระบุค่า ได้ และการเขียนอย่างซื่อตรงคือผลลัพธ์เชิงลบในรูปแบบของ ผลลัพธ์เชิงลบอย่างตรงไปตรงมา ผลลัพธ์เชิงลบจากเครื่องมืออ่อนเป็นข้อค้นพบจริง — มันบอกว่าภาวะเอนโดจีนิตีในการฟิต Gamma ไม่สามารถแก้ไขได้ที่ขนาดตัวอย่างและช่วงเวลานี้ และค่าประมาณต้นทุนก่อนการซื้อขายที่สร้างจาก ของ OLS มีอคติขาขึ้นที่ไม่สามารถกำจัดได้
การวินิจฉัย

F ในขั้นแรก (เครื่องมืออ่อน) กฎโดยประมาณของ Staiger-Stock: ค่าวิกฤตของ Stock-Yogo สำหรับตัวแปรถดถอยเอนโดจีนัสหนึ่งตัวเข้มงวดกว่า — สำหรับขนาด IV สูงสุด 10%, เมื่อมีเครื่องมือหนึ่งตัว, 19.93 เมื่อมีสองตัว, 22.30 เมื่อมีสามตัว; สำหรับขนาด 15%, 8.96 / 11.59 / 12.83; สำหรับ 20%, 6.66 / 8.75 / 9.54
Durbin-Wu-Hausman (จำเป็นต้องใช้ IV หรือไม่) หาก OLS สอดคล้อง มันก็มีประสิทธิภาพมากกว่าเช่นกัน ดังนั้นจงทดสอบก่อนเปลี่ยน วิธีเสริมส่วนเหลือคือวิธีที่ใช้ได้จริง: รันขั้นที่ 1 เก็บ จากนั้นรันการถดถอยโครงสร้าง OLS โดยเพิ่ม เป็นตัวแปรถดถอย ค่าสัมประสิทธิ์ที่มีนัยสำคัญของ เป็นหลักฐานของภาวะเอนโดจีนิตี
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 (การระบุเกิน) เมื่อมีเครื่องมือ คุณสามารถทดสอบความถูกต้องร่วมกันได้: โดย มาจากการถดถอยส่วนเหลือของ 2SLS ตามเครื่องมือทั้งหมดและตัวควบคุมภายนอก ข้อควรระวังสำคัญกว่าสถิติ: Sargan ตรวจพบเฉพาะเครื่องมือที่ไม่ถูกต้องใน วิธีที่แตกต่างกัน หากเครื่องมือทุกตัวสัมพันธ์กับตัวแปรที่ละไว้เดียวกัน การทดสอบจะผ่านอย่างราบรื่นและไม่ได้บอกอะไรคุณเลย
เครื่องมือที่มีอยู่ในโครงสร้างจุลภาคของคริปโต

การหาเครื่องมือที่ถูกต้องคือความยากทั้งหมด และเครื่องมือมาตรฐานจากการเงินองค์กร-หุ้น (การครอบคลุมโดยนักวิเคราะห์ เกราะกำบังภาษี กระแสเงินสดพิเศษ) ใช้การไม่ได้ที่นี่ มีสองกลุ่มที่นำมาใช้ได้จริง:
| ตัวแปรเอนโดจีนัส | เครื่องมือ | เหตุผล |
|---|---|---|
| กระแสคำสั่ง taker สุทธิ | การเติมคำสั่งของคุณเอง | ขับเคลื่อนโดยการเสนอราคาและนโยบายสินค้าคงคลังของคุณ ไม่ใช่เส้นทางราคาตลาด — เป็นภายนอกโดยการออกแบบ หาก ราคาเสนอของคุณไม่ได้มีเงื่อนไขตามสัญญาณ |
| กระแสคำสั่ง / ปริมาณรวม | กระแสตามกลไกของตลาดแลกเปลี่ยน: การปรับสมดุลดัชนี หน้าต่างการชำระ funding และการชำระบัญชีตามกำหนดเวลา | เวลาถูกกำหนดโดยกฎของตลาดแลกเปลี่ยน ไม่ใช่การเข้ามาของข้อมูล |
หลุมพราง

เครื่องมืออ่อนไม่ได้ล้มเหลวอย่างชัดเจน เมื่อขั้นแรกอ่อน 2SLS จะมีอคติ เข้าหา OLS ในตัวอย่างจำกัด โดยประมาณเป็น
ที่ คุณยังคงมีอคติ OLS อยู่ 25% ขณะรายงานค่าประมาณแบบ "เชิงสาเหตุ" วิธีแก้คือ LIML ซึ่งมีพฤติกรรมในตัวอย่างจำกัดดีกว่า หรือการทดสอบ Anderson-Rubin ซึ่งใช้ได้ไม่ว่าความแข็งแรงของเครื่องมือจะเป็นเท่าใด
เครื่องมือจำนวนมากทำให้เกิดอคติ การใส่ค่าล่าช้าของทุกอย่างเข้าไปใน เพื่อเพิ่ม ในขั้นแรกจะลากค่าประมาณกลับไปหา OLS โดยตรง หาก ไม่เล็กน้อย ให้ใช้ LIML, jackknife IV (JIVE) หรือขั้นแรกแบบมีการทำให้เป็นปกติ
ไม่สามารถทดสอบเงื่อนไขการตัดออกได้ ไม่ใช่ด้วย Sargan และไม่ใช่ด้วยสิ่งใดเลย เงื่อนไขนี้ปกป้องด้วยเหตุผลเฉพาะด้าน และรูปแบบการปกป้องที่ซื่อตรงคือการวิเคราะห์ความไว: การละเมิดต้องใหญ่เพียงใดจึงจะพลิกข้อสรุปได้?
ประเด็นสำคัญ

- การหักล้างอคติแก้ไขอคติจาก การค้นหา แต่ไม่ทำอะไรกับอคติใน ค่าสัมประสิทธิ์ นี่คือความล้มเหลวคนละแบบและต้องใช้เครื่องมือคนละชนิด
- อคติจากภาวะเอนโดจีนิตีไม่หายไปเมื่อขนาดตัวอย่างเพิ่มขึ้น ค่าสัมประสิทธิ์ที่แน่นหนา บูตสแตรปอย่างดี และตรวจสอบด้วย walk-forward ยังอาจผิดอย่างเป็นระบบได้
- การถดถอย Gamma ในการสอบเทียบ Almgren-Chriss เป็นกรณีจริงที่มีอยู่ภายในองค์กร พร้อมเครื่องมือที่ระบุชื่อไว้ (การเติมคำสั่งของคุณเอง) และข้อมูลที่บันทึกไว้แล้วโดยไปป์ไลน์ TCA
- รายงาน ในขั้นแรกก่อนค่าสัมประสิทธิ์ 2SLS หากต่ำกว่า 10 ค่าสัมประสิทธิ์นั้นไม่ใช่หลักฐาน และการพูดเช่นนั้นคือผลลัพธ์ที่เผยแพร่ได้