← Zurück zu den Artikeln
August 2, 2026
5 min read

Double Machine Learning: Einen Kausalen Parameter Schätzen, Statt Renditen Vorhusagen

Double Machine Learning: Einen Kausalen Parameter Schätzen, Statt Renditen Vorhusagen
#causal-inference
#double-ML
#treatment-effect
#econometrics
#quant

Jeder Modellierungsartikel in diesem Blog stellt bislang die gleiche Art von Frage: Gegeben Features, sage eine Zahl voraus, dann validiere, dass die Vorhersage außerhalb der Stichprobe überlebt. Spread-Modelle sagen Spread voraus. Füll-Modelle sagen Füllwahrscheinlichkeit voraus. Der gesamte Validierungsapparat — purgiertes Walk-Forward, deflatierter Sharpe, Look-Ahead-Taxonomie — existiert, um zu prüfen, ob eine Vorhersage echt ist.

Dieser Artikel stellt eine andere Art von Frage, und es ist das eine Maschine, die der Blog noch nie hatte: Schätze einen einzelnen skalaren Parameter mit kausaler Interpretation und hänge einen Standardfehler daran, der die Tatsache überlebt, dass ein flexibles ML-Modell verwendet wurde, um dorthin zu gelangen.

Das ist keine rhetorische Unterscheidung. "Warteposition sagt Füllwahrscheinlichkeit voraus" ist trivial wahr und operativ nutzlos — natürlich tut es das, beide werden von Tiefe und Volatilität angetrieben. "Eine Position im Warteschlange weiter vorwärts zu rücken verursacht eine Änderung von θ\theta in der Füllwahrscheinlichkeit bei festem Marktzustand" ist eine Zahl, die Sie in eine Order-Placement-Politik einfügen können. Das erste ist eine Regression-Anpassung. Das zweite erfordert einen Schätzer, der nicht im Standard-ML-Toolkit existiert, da Regularisierung und Overfitting in einer flexiblen ersten Stufe genau den Koeffizienten beeinflussen, der Ihnen wichtig ist.

Double Machine Learning (Chernozhukov, Chetverikov, Demirer, Duflo, Hansen, Newey & Robins, 2018) ist der Schätzer, der das behebt. Jeder quantitative Trader hat es gehört: Korrelation ist keine Kausalität. DML ist der Teil, der nach diesem Satz kommt.

Warum Naive Regression Scheitert

Ein versteckter Marktzustand-Konfundierer treibt sowohl Warteschlange-Platzierung als auch Füllergebnisse und erzeugt eine täuschende naive Assoziation

Formulieren Sie die Frage im eigenen Territorium des Blogs. Wir wollen den kausalen Effekt der Warteposition auf die Füllwahrscheinlichkeit:

  • YiY_i: ob die ruhende Limit-Order bei Beobachtung ii innerhalb des Horizonts gefüllt wurde.
  • DiD_i: Warteposition bei Platzierung (normalisiert durch Levelgröße).
  • XiX_i: die Konfundierer — realisierte Volatilität, quotierte Spread, Tiefe-Ungleichgewicht, Levelgröße, Tageszeit, Regime-Label. Dies sind die Marktzustands-Variablen, die der Blog bereits in Spread-Modellierung mit Machine Learning berechnet.

Der kausale Parameter ist θ0\theta_0 in

Yi=Diθ0+g0(Xi)+ϵiY_i = D_i \theta_0 + g_0(X_i) + \epsilon_i

wobei g0(Xi)g_0(X_i) die (möglicherweise komplexe, nichtlineare) Beziehung zwischen Marktzustand und Füllergebnis erfasst.

Die Behandlung ist nicht zufällig zugewiesen. Sie sind nah an der Front der Warteschlange weil das Level dünn war, oder weil Sie während einer ruhigen Phase platziert haben, oder weil das Orderbuch zu Ihren Gunsten unausgewogen war. Die gleichen Bedingungen treiben unabhängig davon, ob Sie gefüllt werden. Das ist die Konfundierung.

Ansatz 1: Konfundierer ignorieren. Regressiere YY allein auf DD. Die Schätzung absorbiert den Effekt jedes Konfundierers, der mit beiden korreliert ist. Lehrbuch-omitted-variable-bias: dünne Levels geben Ihnen sowohl einen guten Warteschlangenplatz als auch eine hohe Füllrate, also übertreiben Sie den Wert des Platzes selbst.

Ansatz 2: Lineare Regression mit Kontrollen. Regressiere YY auf DD und XX. Dies funktioniert nur, wenn g0(X)g_0(X) wirklich linear ist. Buchdynamik ist es nicht — die Füll/Volatilitäts-Beziehung hat Schwellen, das Tiefe-Ungleichgewicht wechselt je nach Regime das Vorzeichen. Fehlspezifikation von g0g_0 führt Bias wieder ein.

Ansatz 3: ML-Vorhersage. Passen Sie ein Gradient-Boosted-Modell an (D,X)(D, X) an. Sie erhalten gute Out-of-Sample-Diskriminierung und keinerlei kausale Interpretation. Das Modell erfasst jedes vorhersagende Muster, kausal oder nicht; Regularisierung schrumpft den Beitrag der Behandlung auf Arten, die θ\theta biasen; und es gibt keinen Standardfehler, dem Sie vertrauen können.

Dies ist die Kernspannung. ML ist gut in Vorhersage, aber naive Anwendung auf einen kausalen Parameter erzeugt verzerrte, nicht-normaler, unzuverlässige Schätzungen.

Das Partiell Lineare Modell

Zwei synchronisierte Residualisierungs-Kanäle entfernen störende Marktzustände, bevor saubere Residualströme an einer orthogonalen kausalen Schätzung treffen

DML operates within a structural framework. Das Arbeitstier ist die partiell lineare Regression (PLR):

Y=Dθ0+g0(X)+U,E[UX,D]=0Y = D\theta_0 + g_0(X) + U, \quad \mathbb{E}[U \mid X, D] = 0

D=m0(X)+V,E[VX]=0D = m_0(X) + V, \quad \mathbb{E}[V \mid X] = 0

  • θ0\theta_0 ist der kausale Parameter von Interesse.
  • g0(X)g_0(X) ist eine Störfunktion — der Teil des Ergebnisses, der durch Marktzustand erklärt wird.
  • m0(X)m_0(X) ist eine weitere Störfunktion — die bedingte Erwartung der Behandlung gegeben Marktzustand (die "Propensity" in einem Continuous-Treatment-Setting).
  • UU und VV sind strukturelle Residuen.

Die grundlegende Einsicht: θ0\theta_0 ist niederdimensional, aber g0g_0 und m0m_0 können beliebig komplex sein. Wir wollen ML für die Störfunktionen verwenden und dennoch gültige Inferenz auf dem Skalar liefern.

Warum "Doppelt"?

Zwei ML-Modelle, nicht eines:

  1. Ergebnismodell: ^(X)E[YX]\hat{\ell}(X) \approx \mathbb{E}[Y \mid X] — sage das Ergebnis allein aus Marktzustand voraus.
  2. Behandlungsmodell: m^(X)E[DX]\hat{m}(X) \approx \mathbb{E}[D \mid X] — sage die Behandlung allein aus Marktzustand voraus.

Bilde Residuen

Y~i=Yi^(Xi),D~i=Dim^(Xi)\tilde{Y}_i = Y_i - \hat{\ell}(X_i), \quad \tilde{D}_i = D_i - \hat{m}(X_i)

und schätze θ0\theta_0 durch Regression von Y~\tilde{Y} auf D~\tilde{D}:

θ^0=iD~iY~iiD~i2\hat{\theta}_0 = \frac{\sum_i \tilde{D}_i \tilde{Y}_i}{\sum_i \tilde{D}_i^2}

Das ist Frisch-Waugh-Lovell auf Steroiden: Partial-out die Konfundierer mit ML statt linearer Projektion, dann lies den Behandlungseffekt aus der residualen Variation ab.

Neyman-Orthogonalität: Warum Es Funktioniert

Der naive Partial-Out-Ansatz (schätze g0g_0, subtrahiere, regrediere) scheitert, da ML-Schätzfehler in g^0\hat{g}_0 direkt in θ^0\hat\theta_0 übergehen. Der DML-Score ist so konstruiert, dass er Neyman-orthogonal ist — unempfindlich gegenüber kleinen Störungen in den Störfunktionen.

Der orthogonale Score für PLR:

ψ(W;θ,η)=[Y(X)θ(Dm(X))][Dm(X)]\psi(W; \theta, \eta) = \big[Y - \ell(X) - \theta(D - m(X))\big] \cdot \big[D - m(X)\big]

wobei η=(,m)\eta = (\ell, m). Die Orthogonalitätsbedingung ist

ηE[ψ(W;θ0,η)]η=η0=0\left. \frac{\partial}{\partial \eta} \mathbb{E}\big[\psi(W; \theta_0, \eta)\big] \right|_{\eta = \eta_0} = 0

Intuitiv verwendet der Score nur die Variation in DD und YY, die unabhängig von XX ist, und Fehler in einer Störfunktion werden durch die andere ausgeglichen. Wenn m^\hat{m} die Behandlung leicht überschätzt, ist D~\tilde{D} etwas zu klein, aber der entsprechende Fehler in Y~\tilde{Y} durch Fehlschätzung von \ell drückt in eine kompensierende Richtung. Der Bias wird zweiter Ordnung — das Produkt zweier Fehler erster Stufe — statt erster Ordnung.

Formal, wenn beide Störschätzer mit Rate n1/4n^{-1/4} konvergieren (mild; die meisten vernünftigen ML-Methoden erfüllen das), dann

N(θ^0θ0)dN(0,σ2)\sqrt{N}(\hat{\theta}_0 - \theta_0) \xrightarrow{d} \mathcal{N}(0, \sigma^2)

also konvergiert θ^0\hat\theta_0 mit parametrischer Rate und ist asymptotisch normal.

Cross-Fitting: Warum Es Hier Pflicht Ist

Orthogonalität allein reicht nicht. Wenn die Störmodelle auf denselben Zeilen angepasst werden, die zur Schätzung von θ0\theta_0 verwendet werden, verunreinigt Overfitting der ersten Stufe die zweite Stufe — und der spezifische Schaden ist worth precisely zu nennen, da er nicht der Schaden ist, an den Sie gewöhnt sind. Anderswo zeigt Overfitting als aufgeblasener Validierungsscore: Sie bemerken es, Sie diskontieren es, Sie gehen weiter. Hier zeigt es als verschobene Punktschätzung für θ0\theta_0, mit einem Konfidenzintervall, das immer noch schmal ist und immer noch auf der falschen Zahl zentriert. Es gibt keinen Score, der verdächtig wäre. Der Schätzer lügt einfach ruhig.

Cross-Fitting bricht die Abhängigkeit: Die Stör-Vorhersagen jeder Beobachtung kommen aus einem Modell, das ohne sie trainiert wurde, und θ0\theta_0 wird aus den gepoolten Held-out-Residuen geschätzt. Die Mechanik ist gewöhnliche K-Fold-Maschinerie, abgedeckt in Spread-Modellierung mit Machine Learning; was unten wichtig ist, ist, welche Folds Sie ihm geben.

Der DML-Algorithmus Schritt für Schritt

Eingabe: Daten {(Yi,Di,Xi)}i=1N\{(Y_i, D_i, X_i)\}_{i=1}^N, ML-Methoden M\mathcal{M}_\ell und Mm\mathcal{M}_m, Folds KK.

Schritt 1 — Partitionierung: Teile {1,,N}\{1, \ldots, N\} in KK disjunkte Folds.

Schritt 2 —Cross-Fit Störmodelle: Für k=1,,Kk = 1, \ldots, K, trainiere ^(k)\hat{\ell}^{(-k)} und m^(k)\hat{m}^{(-k)} auf dem Komplement von Fold kk, dann berechne Y~i=Yi^(k)(Xi)\tilde{Y}_i = Y_i - \hat{\ell}^{(-k)}(X_i) und D~i=Dim^(k)(Xi)\tilde{D}_i = D_i - \hat{m}^{(-k)}(X_i) für iIki \in I_k.

Schritt 3 — Schätzung:

θ^0=(i=1ND~i2)1i=1ND~iY~i\hat{\theta}_0 = \left(\sum_{i=1}^N \tilde{D}_i^2\right)^{-1} \sum_{i=1}^N \tilde{D}_i \tilde{Y}_i

Schritt 4 — Inferenz:

σ^2=1Ni=1N(Y~iθ^0D~i)2D~i2/(1Ni=1ND~i2)2\hat{\sigma}^2 = \frac{1}{N} \sum_{i=1}^N \big(\tilde{Y}_i - \hat{\theta}_0 \tilde{D}_i\big)^2 \tilde{D}_i^2 \bigg/ \left(\frac{1}{N} \sum_{i=1}^N \tilde{D}_i^2\right)^2

mit Intervallen θ^0±zα/2σ^/N\hat{\theta}_0 \pm z_{\alpha/2} \cdot \hat{\sigma} / \sqrt{N}.

Das Konfidenzintervall ist gültig für genau eine Frage

Dies ist der Vorbehalt, der entscheidet, ob ein DML-Ergebnis etwas wert ist, und hier fallen die meisten angewandten Verwendungen der Methode stillschweigend auseinander.

Die obige Asymptotische Normalität ist eine Aussage über eine vorab spezifizierte Behandlung, eine vorab spezifizierte Konfundierer-Menge, einen vorab spezifizierten Score. Fixieren Sie diese im Voraus, führen Sie den Schätzer einmal, und das Intervall bedeutet, was es sagt. Probieren Sie drei Behandlungen, oder vier Konfundierer-Mengen, oder tauschen Sie Lerner, bis der p-Wert besser aussieht, und Sie betreiben nicht mehr Inferenz — Sie führen eine Suche, und der gemeldete p-Wert ist der p-Wert eines Maximums, nicht eines Zugs.

Der Blog hat bereits gemessen, was das tut. In der deflated Sharpe ratio Studie erzeugen Suchen über pure Rauschen mit null echtem Edge eine naive False-Discovery-Rate von 1.000 — der unadjustierte Test feuert jedes einzelne Mal — während der median naive p-Wert des Gewinners in der Nähe von 0.0007 liegt. Nichts an Neyman-Orthogonalität schützt Sie davor. Orthogonalität behebt den Bias aus Störschätzung; sie sagt nichts über den Bias aus Spezifikationssuche. Ein DML-p-Wert von 1e-05, erhalten nachdem sechs Spezifikationen versucht wurden, verdient genau dieselbe Bonferroni/Holm/BHY-Behandlung wie jeder andere Gewinner, der aus einem Raster gezogen wurde, mit MM auf die Anzahl der Spezifikationen gesetzt, die Sie tatsächlich ausgeführt haben.

Dies hat direkte praktische Konsequenzen für die Komfort-Merkmale der Tools. DoubleMLData akzeptiert eine Liste in d_cols gibt gerne drei Behandlungseffekte in einer Zusammenfassungstabelle zurück:

dml_data_multi = dml.DoubleMLData(
    df, y_col='filled', d_cols=['queue_pos', 'toxicity', 'spread_at_post'],
    x_cols=confounder_cols,
)

Drei Zeilen, drei p-Werte und ein Multiples-Testing-Problem, das die Zusammenfassungstabelle nicht erwähnt. Wenn Sie alle drei lesen, passen Sie alle drei an. Wenn nur einer die vorab registrierte Frage war, sagen Sie das, und behandeln Sie die anderen beiden explizit als explorativ.

Cross-Fitting auf Zeitreihen: Purge, Embargo, Custom Folds

Rotierende Zeitreihen-Folds verwenden Purge-Lücken und Embargo-Zonen, bevor Out-of-Fold-Residuen in einer kausalen Schätzung zusammenlaufen

Standard-DML geht von i.i.d.-Beobachtungen aus. Buchdaten sind es nicht, und der Versagensmodus ist der, den der Blog bereits ausführlich dokumentiert hat: benachbarte Zeilen teilen überlappende Forward-Fenster, also lecken ein gewöhnliches TimeSeriesSplit die Antwort immer noch über die Fold-Grenze. Siehe Spread-Modellierung mit Machine Learning für die purged, embargoed Walk-Forward-Implementierung und den Grund, warum eine Lücke von mindestens horizon Zeilen erforderlich ist, und die Look-Ahead-Bias-Taxonomie für den vollständigen Katalog von Leaks und ihren gemessenen Größen.

Der wirklich DML-spezifische Teil ist, wie Sie purged Folds an den Schätzer übergeben, da set_sample_splitting einen Vertrag hat, der Leute stolpern lässt:

import numpy as np
import doubleml as dml

def purged_folds(n: int, n_splits: int, horizon: int):
    """Expandierende-Window-Folds mit einer Purge/Embargo-Lücke von `horizon` Zeilen.

    Gleiche Konstruktion wie das purged Walk-Forward CV im Spread-Modellierungs-
    artikel: die Lücke entfernt die Überlappung zwischen dem Forward-Fenster
    einer Trainingszeile und einer Validierungszeile.
    """
    fold_size = n // (n_splits + 1)
    for k in range(1, n_splits + 1):
        train_end = fold_size * k
        val_start = train_end + horizon
        val_end = val_start + fold_size
        if val_end > n:
            break
        yield np.arange(0, train_end - horizon), np.arange(val_start, val_end)

folds = list(purged_folds(len(df), n_splits=5, horizon=HORIZON))

dml_plr = dml.DoubleMLPLR(dml_data, ml_l=ml_l, ml_m=ml_m)
dml_plr.set_sample_splitting([folds])
dml_plr.fit()

Zwei Dinge, von denen Sie wissen sollten, keineswegs offensichtlich aus den Bibliotheks-Doks:

  1. Purged Walk-Forward-Folds decken nicht jede Zeile ab. Die Purge-Lücken und der anfängliche Trainingsblock sind niemals Test-Fold von jemandem, also wird θ0\theta_0 aus streng weniger als NN Residuen geschätzt. Das ist korrektes Verhalten, kein Bug, aber es bedeutet, dass das effektive NN in der Varianzformel die Anzahl der gepoolten Test-Zeilen ist — überprüfen Sie es, statt anzunehmen.
  2. n_rep Wiederholungen sind hier nicht kostenlos. Mit zufälligem K-Fold ist die Wiederholung von Cross-Fitting und Mittelung eine billige Varianzreduktion. Mit einem deterministischen zeitlich geordneten Split gibt es nur ein Splitting, also n_rep kauft nichts und verbirgt nichts; Stabilität muss stattdessen aus dem erneuten Laufen auf verschiedenen Datenfenstern kommen.

Für Panel-Strukturen (viele Symbole im selben Zeitraum) unterstützt DoubleML cluster-robuste Standardfehler — Cluster auf Symbol, nicht auf Zeit, und siehe Multi-Symbol-Validierung für die Position des Blogs, wann ein cross-instrument Ergebnis tatsächlich etabliert ist.

Der Gemessene Fall: Warteposition und Füllwahrscheinlichkeit

Order-Positionen in einer FIFO-Warteschlange konvergieren zu einem DML-adjustierten Wartepositionseffekt mit einem Confidence-Halo

Dies ist die eine kausale Frage im Artikel, bei der das Projekt bereits die Daten hat, und sie sollte ausgeführt werden, nicht nur gestellt. Wartepositionsanalyse deckt bereits Positionsschätzung, FIFO-Mechanik, Drain-Raten und Zeit-zu-Füll auf echten Buchdaten; Füll-Simulation deckt Füllwahrscheinlichkeitsmodellierung und die Kalibrierungsschleife gegen Live-Füllungen. Beide produzieren ein vorhersagendes Modell von Füllungen. DML verwandelt dieselben Eingaben in eine kausale Schätzung.

Die Spezifikation, vorab registriert vor dem Betrachten der Schätzung:

  • Ergebnis YY: gefüllt innerhalb HORIZON Snapshots (binär).
  • Behandlung DD: normalisierte Warteposition bei Platzierung.
  • Konfundierer XX: realisierte 1s-Volatilität, quotierte Spread in bps, Tiefe-Ungleichgewicht, Levelgröße bei Post, Distanz von Mid in Ticks, Tageszeit-Kodierung, Regime-Label.
from sklearn.ensemble import GradientBoostingRegressor
import doubleml as dml

confounder_cols = [
    'rv_1s', 'spread_bps', 'depth_imbalance', 'level_size',
    'dist_from_mid_ticks', 'tod_sin', 'tod_cos', 'regime',
]

dml_data = dml.DoubleMLData(
    df, y_col='filled', d_cols='queue_pos_norm', x_cols=confounder_cols,
)

ml_l = GradientBoostingRegressor(n_estimators=300, max_depth=5)
ml_m = GradientBoostingRegressor(n_estimators=300, max_depth=5)

dml_plr = dml.DoubleMLPLR(dml_data, ml_l=ml_l, ml_m=ml_m, score='partialling out')
dml_plr.set_sample_splitting([folds])
dml_plr.fit()

print(dml_plr.summary)
dml_plr.sensitivity_analysis()
print(dml_plr.sensitivity_summary)

Das zu berichtende Ergebnis ist ein Vier-Spalten-Vergleich, nicht ein einzelner Koeffizient: die naive OLS-Schätzung von YY auf DD allein, die Linearkontroll-Schätzung von YY auf DD und XX, die DML-Schätzung mit ihrem Standardfehler, und der Robustness-Wert aus der Sensitivitätsanalyse — wie stark ein unbeobachteter Konfundierer sein müsste, um den Effekt zu zunichte zu machen. Die Lücke zwischen den naiven und DML-Spalten ist die Größe des echten Interesses: sie ist, wie viel des scheinbaren Werts der Warteposition Marktzustand in Verkleidung war.

Ein Null- oder negativer θ\theta hier ist ein veröffentlichbarer Ergebnis und passt besser zu diesem Blog als ein sauberes Positives. Wenn der kausale Effekt der Warteposition zusammenbricht, sobald Volatilität und Levelgröße teilweise herausgerechnet werden, ist das ein direkter Befund über Order-Placement-Politik: Der Platz ist nicht das, was die Füllung verdient, die Bedingungen, unter denen Sie den Platz erhalten haben, sind es.

Kausale Faktoranalyse

Der Standardansatz zum Faktor-Investing ist assoziativ: Sortieren nach einer Kennzeichnung, Long-Short-Portfolios bilden, beobachten, dass Renditen unterschiedlich sind. DML ermöglicht einen anderen Test — Schätzung des direkten kausalen Effekts einer Kennzeichnung auf Renditen, herausrechnen der konfundierenden Effekte der anderen Kennzeichnungen. Wenn der Effekt unter DML verschwindet, ist der Faktor nicht unabhängig kausal; er ist ein Proxy.

Dies ist eine zweite, unabhängige Form von Faktor-Skepsis, und es ist wert, explizit zu sein, wie sie sich auf die bezieht, die der Blog bereits veröffentlicht. Der deflated Sharpe ratio greift den Faktor-Zoo von der Selection-Seite an: Mit genügend Versuchen kann ein Faktor allein deshalb signifikant aussehen, weil Sie oft genug geschaut haben. DML greift ihn von der Konfundierung-Seite an: Ein Faktor kann auf einem einzigen ehrlichen Test signifikant aussehen und immer noch ein Proxy für etwas anderes in der konditionierenden Menge sein. Ein Faktor muss beide überleben, um interessant zu sein, und die beiden Versagensmodi sind unabhängig — einen zu bestehen sagt nichts über den anderen.

Was DML Nicht Kann

  1. Es erfordert, dass die Konfundierer beobachtet werden. Wenn eine unbeobachtete Variable sowohl Behandlung als auch Ergebnis antreibt, ist DML verzerrt, und keine ML-Sophistication behebt ein Identifikationsproblem. Sensitivitätsanalyse grenzt das Risiko ein; sie entfernt es nicht.

  2. Es schätzt einen durchschnittlichen Effekt. Wenn sich der Effekt der Warteposition stark über Regimes unterscheidet, ist die Punktschätzung der Durchschnitt über das Regime-Mix Ihrer Stichprobe. Für Heterogenität verwenden Sie das Interactive Regression Model (DoubleMLIRM) oder einen kausalen Wald.

  3. Es geht von einem strukturellen Modell aus. Die partiell lineare Spezifikation erfordert, dass die Behandlung auf eine bestimmte Weise in die Ergebnisgleichung eingeht. Wenn der wahre Prozess grundlegend anders ist, ist DML selbstsicher falsch.

  4. Es entdeckt keine kausale Struktur. DML schätzt den Effekt einer vorab spezifizierten Behandlung. Es sagt Ihnen nicht, welche Variablen Ursachen sind.

  5. Es befreit Sie nicht von Multiples Testing. Den Punkt oben zu wiederholen, weil er am häufigsten übersprungen wird: Orthogonalität de-biased Störschätzung, nicht Spezifikationssuche.

Praktische Hinweise

Stichprobengröße. DML benötigt, dass die Störmodelle mit n1/4n^{-1/4} konvergieren, was in der Praxis bedeutet, dass genügend Zeilen für die ML-Modelle vorhanden sind, um g0g_0 und m0m_0 überhaupt zu approximieren. Anstatt runden Zahlenschwellen zu vertrauen, etablieren Sie Eignung empirisch auf die Weise, wie Multi-Symbol-Validierung es tut — prüfen Sie, ob die Schätzung über Instrumente und Unterperioden standhält, und behandeln Sie Instabilität als das Signal, das es ist.

Lerner-Wahl. Die DML-spezifische Tatsache ist schmal aber nützlich: Bei n1/4n^{-1/4}-Konvergenz beeinflusst der Lerner die Effizienz von θ^0\hat\theta_0 (Intervallbreite), nicht seine Konsistenz. Welche Lerner sich lohnen, auf tabellarischen Marktdaten zu erreichen, und warum Gradient Boosting der Standard ist, ist bereits in Spread-Modellierung mit Machine Learning abgedeckt. Wenn θ^0\hat\theta_0 sich materiell über Lerner bewegt, ist das kein Menü zur Auswahl — es ist Beweis, dass die Störfunktionen schlecht geschätzt sind, und per dem Abschnitt oben, den freundlichsten zu wählen, verwandelt die Übung in eine Suche.

Fazit

DML gibt dem Blog etwas, das es nicht hatte: eine Möglichkeit, eine Markt-Mikrostruktur-Behauptung als kausalen Parameter mit verteidigbarem Standardfehler zu formulieren, statt als Vorhersage mit gutem Validierungsscore.

Die drei lasttragenden Ideen sind:

  • Orthogonalisieren Sie den Score, damit Fehler erster Stufe zur zweiten Ordnung kompensieren.
  • Cross-Fit Sie, mit purged und embargoed Folds auf Zeitreihendaten, damit Overfitting erster Stufe θ0\theta_0 nicht verschieben kann.
  • Spezifizieren Sie im Voraus, damit das Intervall, das Sie berichten, das Intervall ist, das Sie tatsächlich verdient haben.

Der Schätzer ist der einfache Teil. Die harten Teile sind unverändert: zu entscheiden, welche Konfundierer wichtig sind, zu argumentieren, dass die Identifikationsannahmen halten, und dem Drang zu widerstehen, die Spezifikation noch einmal zu laufen.


Referenzen

Die Abstammung von DML ist kurz und wert eine Zeile: Es ist Robinsons (1988) partiell lineares Modell mit ML, das die Kern-Schätzer ersetzt, Erreichen des semiparametrischen Effizienz-Bounds, mit einer Orthogonalitätsbedingung, die auf Neymans C(α\alpha)-Test zurückgeht und einen nahen Vetter in der Targeted-Learning (TMLE)-Literatur hat. Chernozhukov et al.'s Beitrag war zu zeigen, dass dies mit beliebigen ML-Lernern operationalisiert werden kann, wobei N\sqrt{N}-konsistente, asymptotisch normale Inferenz beibehalten wird.

  1. Chernozhukov, V., Chetverikov, D., Demirer, M., Duflo, E., Hansen, C., Newey, W., & Robins, J. (2018). Double/Debiased Machine Learning for Treatment and Structural Parameters. The Econometrics Journal, 21(1), C1-C68.
  2. Robinson, P. M. (1988). Root-N-Consistent Semiparametric Regression. Econometrica, 56(4), 931-954.
  3. Bach, P., Chernozhukov, V., Kurz, M. S., & Spindler, M. (2022). DoubleML — An Object-Oriented Implementation of Double Machine Learning in Python. Journal of Machine Learning Research, 23(53), 1-6.
  4. Facure, M. (2022). Causal Inference for the Brave and True. Chapter 22: Debiased/Orthogonal Machine Learning.
  5. Cahan, E., Bai, J., & Ng, S. (2024). Causal Factor Investing. Quantitative Finance.
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

Dem Markt einen Schritt voraus

Abonniere unseren Newsletter für exklusive KI-Trading-Einblicke, Marktanalysen und Plattform-Updates.

Wir respektieren deine Privatsphäre. Jederzeit abbestellbar.