The Other Way a Regression Lies: Endogeneity, 2SLS, and the Gamma Calibration Problem
Esistono due modi strutturalmente diversi in cui una regressione può mentirti e questo blog finora ne ha attaccato solo uno.
Il primo è il bias di selezione nella ricerca: hai eseguito diecimila test retrospettivi, hai mantenuto il meglio e il numero che stai osservando è il massimo di una distribuzione di rumore piuttosto che di un effetto. Questo è l'oggetto dell'indice di Sharpe sgonfio e del suo coronamento onesto negativo. La soluzione è valutare la ricerca.
Il secondo è la distorsione del coefficiente stesso, su una singola regressione su cui non hai mai effettuato alcuna ricerca. Se il regressore è correlato al termine di errore, l’OLS è distorto e incoerente e, a differenza del rumore di campionamento, questo non si riduce con la dimensione del campione. Più dati rendono più stretto il numero sbagliato. Nessuna quantità di bootstrap, walk-forward o deflazione lo tocca, perché nessuno di questi metodi mette in discussione l’identificazione, ma solo la selezione.
Questo articolo riguarda il secondo fallimento e non si tratta di una preoccupazione astratta. L'articolo sulla calibrazione Almgren-Chriss si adatta all'impatto permanente regredendo le variazioni di prezzo medio di 5 minuti sul flusso netto degli acquirenti, ottiene un di pochi punti percentuali e un coefficiente che si sposta di 2-5 volte tra un giorno e l'altro, e nomina l'endogeneità come prima ragione strutturale: "Il flusso risponde al prezzo tanto quanto il prezzo risponde al flusso. I trader di momentum acquistano perché il prezzo è aumentato; un ingenuo OLS di rendimenti sul flusso rileva la loro reazione e la attribuisce all'impatto." Nomina anche la soluzione pulita: i tuoi riempimenti, esogeni per costruzione.
Questo è un problema di variabili strumentali con uno strumento denominato e dati già interni. Di seguito sono riportati lo stimatore, la diagnostica e l'esperimento.
Endogeneità in un paragrafo

OLS stima la causale In solo sotto . Tre cose lo rompono. Distorsione da variabili omesse: se guida entrambi E ed è inosservato, vive nell'errore, , E forze — nella microstruttura, l’arrivo di informazioni non osservate determina insieme volume e volatilità. Errore di misura: con proxy rumoroso , , sempre attenuato verso lo zero: il flusso aggTrades netto è un proxy del vero flusso di ordini firmati in un mercato frammentato e la parte che non vedi mai è l'errore di misurazione. Simultaneità: già affermata in forma più netta e concreta nella calibrazione dell'impatto di Almgren-Chriss, che è il problema motivante per tutto ciò che segue.
La soluzione IV

Uno strumento deve soddisfare due condizioni:
- Pertinenza: . Testabile e devi testarlo.
- Esclusione: — colpisce solo attraverso . Non testabile. Mai. È un argomento economico, non una statistica.
Per uno strumento e un regressore endogeno lo stimatore è un rapporto di due effetti in forma ridotta (lo stimatore di Wald):
Con controlli e strumenti multipli usi 2SLS. Fase 1: regredire la variabile endogena su strumenti e controlli, e mantenere i valori adattati - per costruzione contengono solo variazioni esogene e guidate dallo strumento. Fase 2: corri . In forma matriciale, con :
La trappola che cattura chiunque la lanci a mano: se ne esegui letteralmente due lstsq chiamate, gli errori standard della fase 2 sono errati. è un regressore generato e la varianza residua deve essere calcolata dall'originale , non quello montato. Gli errori standard ingenui in due passaggi sono troppo piccoli, quindi il tuo -le statistiche sono troppo grandi e rifiuterai eccessivamente. Utilizza una vera implementazione 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
L'esperimento: gamma OLS contro gamma 2SLS

La regressione in esame è l'adattamento a impatto permanente dell'articolo di Almgren-Chriss:
è endogeno per l'argomento di simultaneità di cui sopra. Lo strumento è i tuoi riempimenti nella finestra: i riempimenti del tuo produttore sono attivati dal tuo programma di quotazione e dalla politica di inventario, non dal percorso dei prezzi di mercato, quindi sono una fonte di variazione del flusso degli ordini che è plausibilmente non correlata con la componente momentum-reazione dell'errore. La restrizione di esclusione (che i tuoi riempimenti spostano la metà solo attraverso il loro contributo al flusso netto) è il presupposto su cui discutere, ed è più debole esattamente quando la tua quotazione è essa stessa guidata dal segnale. Se le tue quotazioni sono condizionate da una previsione dei prezzi a breve orizzonte, lo strumento è contaminato e questo progetto fallisce. I riempimenti derivanti da una pura politica di gestione dell'inventario o di acquisizione degli spread sono il caso pulito.
I dati di riempimento provengono dal record TCA descritto in implementation shortfall e DIY TCA — lo stesso registro che fornisce il campione di adattamento per slippage curve from your own fills. Controlli: ritardati e realizzato la volatilità nella finestra.
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"])
Quattro numeri decidono se valeva la pena farlo: l'OLS , il 2SLS , la prima fase e il divario tra i due coefficienti, ovvero la quota della stima OLS che è stata una reazione allo slancio piuttosto che un impatto.
Se la prima fase torna sotto 10, questo è il risultato: i propri riempimenti sono una frazione del flusso netto troppo piccola con una risoluzione di 5 minuti per essere identificata , e il resoconto onesto è negativo nello stile del negativo onesto. Uno strumento debole negativo è una scoperta reale: indica che l’endogeneità nell’adattamento gamma non è risolvibile con queste dimensioni e orizzonte del campione e che le stime dei costi pre-negoziazione si basano sull’OLS comportano una tendenza al rialzo inevitabile.
Diagnostica

Primo stadio F (strumenti deboli). Regola empirica Staiger-Stock: . I valori critici di Stock-Yogo per un regressore endogeno sono più rigidi: per una dimensione IV massima del 10%, con uno strumento, 19.93 con due, 22.30 con tre; per dimensione 15%, 8,96 / 11,59 / 12,83; per il 20%, 6,66 / 8,75 / 9,54.
Durbin-Wu-Hausman (è addirittura necessaria la IV). Se OLS è coerente è anche più efficiente, quindi prova prima di cambiare. La forma di aumento residuo è quella pratica: esegui la fase 1, mantieni , quindi eseguire la regressione strutturale OLS con aggiunto come regressore. Un coefficiente significativo su è la prova dell'endogeneità.
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 (sovraidentificazione). Con strumenti per testare la validità congiunta: , dove il deriva dalla regressione dei residui 2SLS su tutti gli strumenti e i controlli esogeni. L'avvertenza conta più della statistica: Sargan rileva solo gli strumenti che non sono validi in diversi modi. Se ogni strumento è correlato con la stessa variabile omessa, il test passa in modo pulito e non ti dice nulla.
Strumenti che esistono nella microstruttura crittografica

Trovare uno strumento valido è l’intera difficoltà, e gli strumenti di supporto azionario-aziendale-finanza (copertura degli analisti, scudi fiscali, flussi di cassa straordinari) sono inerti qui. In realtà si applicano due classi:
| Variabile endogena | Strumento | Motivazione |
|---|---|---|
| Flusso netto di acquirenti | I tuoi riempimenti | Guidato dalla tua politica di quotazione e di inventario, non dal percorso dei prezzi del mercato: esogeno per costruzione se le tue quotazioni non sono condizionate dal segnale |
| Portata/volume aggregato | Flussi meccanici dei cambi: ribilanciamento degli indici, finestre di regolamento dei finanziamenti, cascate di liquidazione programmate | La tempistica è stabilita dalle regole di scambio, non dall'arrivo delle informazioni |
Insidie

Gli strumenti deboli non falliscono rumorosamente. Con un primo stadio debole, 2SLS è sbilanciato verso OLS in campioni finiti, approssimativamente
A mantieni il 25% del bias OLS mentre riporti una stima "causale". I rimedi sono il LIML, che ha un comportamento migliore a campione finito, o il test di Anderson-Rubin, che è valido indipendentemente dalla forza dello strumento.
Distorsione da molti strumenti. . Gettare ritardi di tutto per potenziare il primo stadio riporta il preventivo direttamente a OLS. Se non è trascurabile, utilizzare LIML, jackknife IV (JIVE), o un primo stadio regolarizzato.
La restrizione di esclusione non può essere testata. Né da Sargan, né da niente. Viene difeso con il ragionamento di dominio, e la forma onesta di tale difesa è un’analisi di sensibilità: quanta violazione sarebbe necessaria per ribaltare la conclusione?
Da asporto

- La deflazione corregge i bias della ricerca. Non fa nulla per la distorsione del coefficiente. Sono fallimenti diversi e necessitano di strumenti diversi.
- Il bias di endogeneità non svanisce con la dimensione del campione. Un coefficiente rigoroso, ben avviato e convalidato dal walk forward può ancora essere sistematicamente sbagliato.
- La regressione gamma nella calibrazione Almgren-Chriss è un'istanza interna dal vivo, con uno strumento denominato (riempimenti propri) e i dati già registrati dalla pipeline TCA.
- Segnalare la prima fase prima del coefficiente 2SLS. Al di sotto di 10, il coefficiente non è una prova, e dirlo è il risultato pubblicabile.
Autori
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.