← العودة إلى قائمة المقالات
August 10, 2026
5 دقائق للقراءة

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

هناك طريقتان مختلفتان بنيوياً يمكن أن تخدعك بهما الانحدارات، ولم تتناول هذه المدونة حتى الآن سوى واحدة منهما.

الأولى هي تحيز الاختيار في البحث: أجريت عشرة آلاف اختبار رجعي، واحتفظت بالأفضل، والرقم الذي تنظر إليه هو أقصى قيمة لتوزيع الضوضاء وليس أثراً حقيقياً. هذا هو موضوع نسبة شارب المصححة وذروته النتيجة السلبية الصادقة. والإصلاح هو تسعير البحث.

الثانية هي التحيز في المعامل نفسه، في انحدار واحد لم تبحث بين بدائل له أصلاً. إذا كان المتغير التفسيري مرتبطاً بحد الخطأ، فإن OLS متحيز وغير متسق — وعلى خلاف ضوضاء المعاينة، لا ينكمش هذا التحيز مع زيادة حجم العينة. المزيد من البيانات يجعل الرقم الخاطئ أكثر إحكاماً. لا يفيد معه أي قدر من bootstrap أو walk-forward أو التصحيح، لأن أياً من هذه الأساليب لا يشكك في التعريف السببي، بل في الاختيار فقط.

يتناول هذا المقال الإخفاق الثاني، وهو ليس مصدر قلق نظري هنا. فمقال معايرة Almgren-Chriss يلائم الأثر الدائم γ\gamma عبر انحدار تغيرات السعر الوسطي لمدة 5 دقائق على تدفق المتداولين الصافي، ويحصل على R2R^2 يبلغ بضعة بالمئة وعلى معامل يتغير بمقدار 2-5x بين الأيام، ويسمي الداخلية السبب البنيوي الأول: "يستجيب التدفق للسعر بقدر ما يستجيب السعر للتدفق. يشتري متداولو الزخم لأن السعر ارتفع؛ لذلك يلتقط OLS الساذج للعوائد على التدفق رد فعلهم وينسبه إلى الأثر." كما يسمي الإصلاح النظيف — عمليات التنفيذ الخاصة بك، وهي خارجية بحكم البناء.

هذه مشكلة متغيرات أداتية لها أداة مسماة وبيانات موجودة لديك بالفعل. فيما يلي المقدّر والتشخيصات والتجربة.

الداخلية في فقرة واحدة

قوى متشابكة تخلق الداخلية

يقدّر OLS المعامل السببي β1\beta_1 في Yi=β0+β1Xi+εiY_i = \beta_0 + \beta_1 X_i + \varepsilon_i فقط عندما يتحقق الشرط E[εiXi]=0\mathbb{E}[\varepsilon_i \mid X_i] = 0. هناك ثلاثة أشياء تكسره. تحيز المتغير المحذوف: إذا كان WW يقود كلاً من XX وYY ولم يكن ملحوظاً، فإنه يوجد في الخطأ، εi=γWi+ui\varepsilon_i = \gamma W_i + u_i، ويؤدي Cov(Xi,Wi)0\text{Cov}(X_i, W_i) \neq 0 إلى Cov(Xi,εi)0\text{Cov}(X_i, \varepsilon_i) \neq 0 — ففي البنية الدقيقة للسوق يؤدي وصول المعلومات غير المرصود إلى تحريك الحجم والتقلب معاً. خطأ القياس: مع وكيل صاخب 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)، وهو دائماً يتضاءل باتجاه الصفر — فتدفق aggTrades الصافي وكيل لتدفق الأوامر الحقيقي ذي الإشارة عبر سوق مجزأة، والجزء الذي لا تراه أبداً هو خطأ قياس. التزامن: سبق عرضه بصيغة أشد وأكثر تحديداً في معايرة أثر Almgren-Chriss، وهي المشكلة المحفزة لكل ما يلي.

حل IV

أداة تعزل أثراً سببياً في السوق

يجب أن تستوفي الأداة ZZ شرطين:

  1. الملاءمة: Cov(Zi,Xi)0\text{Cov}(Z_i, X_i) \neq 0. يمكن اختبارها، ويجب عليك اختبارها.
  2. الاستبعاد: Cov(Zi,εi)=0\text{Cov}(Z_i, \varepsilon_i) = 0 — تؤثر ZZ في YY من خلال XX فقط. لا يمكن اختبارها. أبداً. إنها حجة اقتصادية وليست إحصاءً.

عندما تكون هناك أداة واحدة ومتغير تفسيري داخلي واحد، يكون المقدّر نسبة أثرين في الصيغة المختزلة (مقدّر والد):

β^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}}}

مع وجود متغيرات ضابطة وأدوات متعددة تستخدم 2SLS. المرحلة الأولى: ارجع المتغير الداخلي على الأدوات والمتغيرات الضابطة، Xi=π0+πZZi+πCCi+viX_i = \pi_0 + \boldsymbol{\pi}_Z' \mathbf{Z}_i + \boldsymbol{\pi}_C' \mathbf{C}_i + v_i، واحتفظ بالقيم الملائمة X^i\hat{X}_i — فهي، بحكم البناء، لا تحتوي إلا على تباين تقوده الأداة وخارجي. المرحلة الثانية: شغّل Yi=β0+β1X^i+βCCi+εiY_i = \beta_0 + \beta_1 \hat{X}_i + \boldsymbol{\beta}_C' \mathbf{C}_i + \varepsilon_i. وبصيغة المصفوفات، مع 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}.

الفخ الذي يصطاد كل من يكتب هذا يدوياً: إذا نفذت حرفياً استدعاءي lstsq، فستكون الأخطاء المعيارية للمرحلة الثانية خاطئة. إن X^i\hat{X}_i متغير تفسيري مولّد، ويجب حساب تباين البواقي من XX الأصلي، لا من الملائم. الأخطاء المعيارية الساذجة لخطوتين أصغر من اللازم، ولذلك تكون إحصاءات tt أكبر من اللازم وسترفض الفرضية أكثر مما ينبغي. استخدم تطبيق 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

التجربة: غاما OLS مقابل غاما 2SLS

مقارنة مساري تقدير

الانحدار قيد الاختبار هو ملاءمة الأثر الدائم من مقال 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}} داخلي وفق حجة التزامن أعلاه. والأداة هي عمليات التنفيذ الخاصة بك في النافذة: عمليات تنفيذك كصانع سوق تُفعّلها جدولة عروضك وسياسة مخزونك، لا مسار سعر السوق، ولذلك فهي مصدر لتباين تدفق الأوامر يحتمل أن يكون غير مرتبط بمكوّن رد فعل الزخم في الخطأ. وقيد الاستبعاد — أن عمليات التنفيذ الخاصة بك تحرك السعر الوسطي فقط عبر مساهمتها في التدفق الصافي — هو الافتراض الذي ينبغي مناقشته، ويكون أضعف ما يكون تحديداً عندما تكون عروضك نفسها مدفوعة بإشارة. إذا كانت عروضك مشروطة بتنبؤ سعري قصير الأجل، تتلوث الأداة ويفشل هذا التصميم. أما عمليات التنفيذ الناتجة عن سياسة خالصة لإدارة المخزون أو اقتناص الفارق فهي الحالة النظيفة.

تأتي بيانات التنفيذ من سجل TCA الموصوف في الانحراف عن سعر التنفيذ وTCA ذاتي الصنع — وهو السجل نفسه الذي يوفّر عينة الملاءمة لـ منحنيات الانزلاق من عمليات التنفيذ الخاصة بك. المتغيرات الضابطة: ΔS\Delta S المتأخر والتقلب المحقق في النافذة.

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، وFF للمرحلة الأولى، والفجوة بين المعاملين — وهي حصة تقدير OLS التي كانت رد فعل للزخم بدلاً من الأثر.

إذا جاءت قيمة FF للمرحلة الأولى أقل من 10، فهذه هي النتيجة: عمليات التنفيذ الخاصة بك تشكل جزءاً صغيراً جداً من التدفق الصافي عند دقة 5 دقائق بحيث لا يمكن تحديد γ\gamma، والكتابة الصادقة هي نتيجة سلبية على غرار النتيجة السلبية الصادقة. والنتيجة السلبية لأداة ضعيفة اكتشاف حقيقي — فهي تخبرك بأن داخلية ملاءمة غاما لا يمكن إصلاحها عند حجم العينة وهذا الأفق، وأن تقديرات تكاليف ما قبل التداول المبنية على غاما OLS تحمل تحيزاً تصاعدياً لا يمكن إزالته.

التشخيصات

حلقات تحقق حول مسار سببي

FF للمرحلة الأولى (الأدوات الضعيفة). قاعدة Staiger-Stock التقريبية: F>10F > 10. القيم الحرجة لـ Stock-Yogo أشد لمتغير تفسيري داخلي واحد — عند حد أقصى لحجم IV يبلغ 10%، يلزم F>16.38F > 16.38 مع أداة واحدة، و19.93 مع أداتين، و22.30 مع ثلاث؛ وعند حجم 15%، 8.96 / 11.59 / 12.83؛ وعند 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 (هل نحتاج إلى IV أصلاً؟). إذا كان OLS متسقاً فهو أيضاً أكثر كفاءة، لذا اختبر قبل التبديل. صيغة إضافة البواقي هي العملية: شغّل المرحلة الأولى، واحتفظ بـ v^i=XiX^i\hat{v}_i = X_i - \hat{X}_i، ثم شغّل الانحدار البنيوي لـ OLS مع إضافة v^i\hat{v}_i كمتغير تفسيري. وجود معامل مهم لـ v^i\hat{v}_i دليل على الداخلية.

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 (اختبار القيود الزائدة). عندما تكون الأدوات q>pq > p يمكنك اختبار الصلاحية المشتركة: J=nRε^Z2χ2(qp)J = n \cdot R^2_{\hat{\varepsilon} \sim \mathbf{Z}} \sim \chi^2(q - p)، حيث تأتي R2R^2 من انحدار بواقي 2SLS على جميع الأدوات والمتغيرات الخارجية. لكن التحفظ أهم من الإحصاء: لا يكتشف Sargan إلا الأدوات غير الصالحة بطرق مختلفة. فإذا كانت كل أداة مرتبطة بالمتغير المحذوف نفسه، ينجح الاختبار بوضوح ولا يخبرك بشيء.

أدوات موجودة في البنية الدقيقة للعملات المشفرة

صدمة مستقلة في شبكة سوق العملات المشفرة

العثور على أداة صالحة هو الصعوبة كلها، أما الأدوات المعتادة في تمويل الشركات والأسهم (تغطية المحللين، والدروع الضريبية، والتدفقات النقدية المفاجئة) فهي خاملة هنا. هناك فئتان تنطبقان فعلاً:

المتغير الداخلي الأداة المبرر
تدفق المتداولين الصافي عمليات التنفيذ الخاصة بك تقوده جدولة عروضك وسياسة مخزونك، لا مسار سعر السوق — خارجي بحكم البناء إذا لم تكن عروضك مشروطة بإشارة
التدفق / الحجم الإجمالي تدفقات ميكانيكية من المنصة: إعادة موازنة المؤشر، ونوافذ تسوية التمويل، وتسلسلات التصفية المجدولة يحدد التوقيت قواعد المنصة، لا وصول المعلومات

المزالق

مسارات خفية تقوض الأداة

الأدوات الضعيفة لا تفشل بصوت مرتفع. مع مرحلة أولى ضعيفة، يكون 2SLS متحيزاً نحو OLS في العينات المحدودة، تقريباً

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

عند F=5F = 5 تحتفظ بـ 25% من تحيز OLS بينما تبلغ عن تقدير "سببي". تشمل الحلول LIML، الذي يتمتع بسلوك أفضل في العينات المحدودة، أو اختبار Anderson-Rubin، وهو صالح بغض النظر عن قوة الأداة.

تحيز كثرة الأدوات. Bias2SLS(q/n)BiasOLS\text{Bias}_{2\text{SLS}} \approx (q/n) \cdot \text{Bias}_{\text{OLS}}. إن إضافة فترات التأخر لكل شيء إلى Z\mathbf{Z} لرفع FF للمرحلة الأولى يعيد التقدير مباشرة إلى OLS. إذا لم تكن q/nq/n مهملة، فاستخدم LIML أو IV بطريقة jackknife (JIVE) أو مرحلة أولى منتظمة.

لا يمكن اختبار قيد الاستبعاد. لا بواسطة Sargan ولا بأي شيء آخر. يتم الدفاع عنه بمنطق المجال، والشكل الصادق لهذا الدفاع هو تحليل حساسية: ما حجم الانتهاك اللازم لقلب الاستنتاج؟

الخلاصات

مسار سببي موثوق عبر بيانات صاخبة

  • يصحح التصحيح تحيز البحث. ولا يفعل شيئاً لتحيز المعامل. إنهما إخفاقان مختلفان ويحتاجان إلى أدوات مختلفة.
  • لا يختفي تحيز الداخلية مع زيادة حجم العينة. يمكن لمعامل محكم ومختبر جيداً بالـ bootstrap ومتحقق منه بطريقة walk-forward أن يظل خاطئاً منهجياً.
  • انحدار غاما في معايرة Almgren-Chriss هو حالة حية داخلية، لها أداة مسماة (عمليات التنفيذ الخاصة بك) وبيانات مسجلة بالفعل في خط أنابيب TCA.
  • أبلغ عن FF للمرحلة الأولى قبل معامل 2SLS. تحت 10، لا يمثل المعامل دليلاً، وقول ذلك هو النتيجة القابلة للنشر.
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

ابقَ متقدماً على السوق

اشترك في نشرتنا الإخبارية للحصول على رؤى حصرية حول تداول الذكاء الاصطناعي وتحليلات السوق وتحديثات المنصة.

نحترم خصوصيتك. يمكنك إلغاء الاشتراك في أي وقت.