Quant's Gesetz der Zuteilung: Wenn Post-Change PnL ist auf, war es die Veränderung. Quant's Gesetz der Zuteilung: Wenn Post-Change PnL ist auf, war es die Veränderung. Ich arbeite im quantitativen Handel und baue voll automatisierte Forschungsumgebungen und Handelssysteme, die mir helfen, von Marktdaten zu Produktionshandelsstrategien zu Performance-Analysen zu wechseln.Eine der wichtigsten Anforderungen solcher Systeme ist, dass ich meine Ideen schnell testen und schnell iterieren kann, um die Gesamthandelsleistung zu verbessern. ist eine sehr offensichtliche Metrik, um zu sagen, ob ich es besser mache als zuvor oder nicht. PnL Wenn Sie jemals eine Live-Handelsstrategie ausgeführt haben, werden Sie dieses tägliche Ritual kennen: Öffnen Sie Dashboards, um Füllungen, Latenzen, Inventar und – unvermeidlich – Peek bei PnL zu überprüfen. Märkte sind nicht stationär, Füllkluster, Volatilitätsregime drehen sich um, Mikrostrukturen verschieben sich, und die Verteilung der Ergebnisse ist fettig. Wenn Sie "optimieren", indem Sie auf PnL-Pfade reagieren, verfolgen Sie am Ende Lärm. fool yourself Dieser Artikel gibt a Ansicht, wie man PnL-Chasing durch — so dass Ihre Iterationsschleife mehr Signal pro Zeiteinheit erhält. practical statistical hypothesis testing Warum PnL eine laute Metrik ist PnL ist ein aus vielen zufälligen Komponenten: aggregiert Ihre tägliche PnL-Dispersion kann an einem News-y-Tag verdoppelt werden, auch wenn Ihr System unverändert ist. Mikrosekundenzeitpunkt, Warteschlangeposition, Gebührenschichten, versteckte vs. beleuchtete Interaktion – alles injiziert Zufall in die Handelsergebnisse. Ein paar frühe Gewinne werden später zu einer größeren notionalen Exposition zusammengefasst (oder umgekehrt), wodurch die Kurve überzeugend aussieht, ohne das zugrunde liegende Durchschnittsergebnis pro Handel zu ändern. Änderungen an Inventarkappen, Zitatbreiten, internen Kreuzungen oder Routing können PnLs in entgegengesetzte Richtungen bewegen und sich gegenseitig stornieren oder verstärken. PnL ist ein großartiges Ziel, um das Geschäft zu verfolgen, aber nicht unbedingt eine geeignete Metrik, um Forschungsänderungen in kurzen Fenstern zu akzeptieren / abzulehnen. Was wir Wollen wissen Dau Dau Wenn wir eine Änderung senden (z.B. eine neue Funktion im Signal, eine andere Zitatlogik, eine andere Ausführungsregel), wollen wir antworten: Wird die beobachtete Verbesserung wahrscheinlich andauern oder ist es etwas, was wir zufällig gesehen haben? Is the observed improvement likely to persist, or is it something we saw by chance? Dies bringt uns in die Welt der statistischen Hypothesenprüfung, wo wir die statistische Bedeutung der beobachteten Ergebnisse in Frage stellen. „By chance“ bedeutet: Diese Wahrscheinlichkeit ist die Kleine p-Werte bedeuten „das wäre selten, wenn es keine wirkliche Wirkung gäbe.“ Große p-Werte bedeuten „das, was Sie gesehen haben, ist unter Lärm üblich“. Under a world where the change to the true mean outcome, how often would we see a difference at least as large as what we observed? tut nichts p-value tut nichts Ein praktisches Beispiel: Zwei Strategien, die Anders, aber nicht Sehen Sie Sehen Sie Lassen Sie uns so tun, als hätten wir eine Änderung versandt und einige Trades auf einer Strategie vor und nach der Änderung erhalten (entweder aus Backtest oder aus dem Live-Handel). Strategie A: Vor der Veränderung Strategie B: Nach der Veränderung Unten habe ich zwei synthetische PnL-Serien pro Handel generiert. —genau die Art von Bild, das Teams versucht, den Sieg zu erklären. Aber können wir wirklich vertrauen, was wir sehen und daraus Schlussfolgerungen ziehen?Nach allem, ist PnL nicht das ultimative Ziel einer Handelsstrategie?Wir werden testen, ob der durchschnittliche PnL pro Handel wirklich unterscheidet, indem wir einen gemeinsamen statistischen Test unten laufen. diverge visibly Der Code, den ich benutzte, um die Handlungen herzustellen und einen statistischen Test durchzuführen, ist unten: import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy import stats import seaborn as sns sns.set(); rng = np.random.default_rng(49) # generate PnLs per trade n = 1200 pnl_A = rng.normal(loc=0.0, scale=1.0, size=n) pnl_B = rng.normal(loc=0.0, scale=1.0, size=n) # generate cumulative PnLs cum_A = pnl_A.cumsum() cum_B = pnl_B.cumsum() # run a statistical test t_stat, p_value = stats.ttest_ind(pnl_A, pnl_B, equal_var=False) print(f"mean_A={pnl_A.mean():.4f}, mean_B={pnl_B.mean():.4f}") print(f"Welch t-statistic={t_stat:.3f}, p-value={p_value:.3f}") plt.figure(figsize=(12,7)) plt.plot(np.arange(1, n+1), cum_A, label="Strategy A") plt.plot(np.arange(1, n+1), cum_B, label="Strategy B") plt.ylabel("Cumulative PnL", fontsize=15); plt.xlabel("Trade #", fontsize=15); plt.legend(["Cumulative PnL — Strategy A", "Cumulative PnL — Strategy B"], fontsize=15) plt.tight_layout(); plt.savefig("cumulative_pnl_A_vs_B.png", dpi=160); plt.show(); Hier sind die Zahlen, die es herausgibt: mean_A=0.0611, mean_B=0.0037 Welch t-statistic=1.380, p-value=0.168 Wir sehen die beiden Standard-Ausgänge eines statistischen Tests – einen t-statistischen und einen p-Wert. Ich werde mehr über sie weiter unten in der Geschichte erzählen. um zu sagen, dass der durchschnittliche PnL pro Handel unterschiedlich ist. Dennoch sehen die beiden kumulativen Linien ziemlich weit voneinander ab. there is not enough evidence Was ist gerade passiert? (Demystifizierende Hypothese Test) Persönlich mochte ich diesen Ansatz nicht sehr, als ich zum ersten Mal über statistische Hypothese-Tests lernte, weil die meisten Tutorials die Idee dahinter nicht erklären und Ihnen nur eine Menge Dinge aufzeichnen lassen. Obwohl ich damit arbeiten und einige Ergebnisse berechnen konnte, indem ich blind dem How-To-Algorithmus folgte und die Dinge in massiven Tabellen ansah, war der Moment, in dem ich die Mechanismen gelernt habe, um es abzuleiten und woher alles tatsächlich kommt, eine große Erleichterung für mich. 1) Die Frage, die wir stellen Nullhypothese (H0): Der wahre durchschnittliche PnL pro Handel ist vor und nach der Änderung gleich. Alternative (H1): Sie unterscheiden sich (beidseitig) oder eine ist größer (einseitig), je nach Ihrer Frage. 2) Die Statistiken, die wir berechnen In seinem Kern, die ist es: t-statistic Unterschied in der Stichprobe bedeutet durch den Standardfehler dieses Unterschieds geteilt. geteilt durch . difference in sample means the standard error of that difference Wenn die beiden Proben bedeuten, dass sie weit voneinander entfernt sind , der t-stat wird groß in der Größe. Wenn sie nahe im Verhältnis zum Lärm sind, ist der t-stat klein. Wie laut sie sind 3) Woher der p-Wert kommt Unter H0 (keine reale Differenz) folgt die t-Statistik einer bekannten Verteilung (a mit einem gewissen Grad der Freiheit). Es ist einfach: t-distribution p-value die Wahrscheinlichkeit, unter H0, einen t-stat zu beobachten, der mindestens so extrem (großer Wert eines t-stat) ist wie der, den Sie erhalten haben. the probability, under H₀, of observing a t-stat at least as extreme (large value of a t-stat) as the one you got. Das sind alle diese Tabellen (die Sie möglicherweise in verschiedenen Hypothese-Test-Anleitungen konfrontiert haben) tun - Kleiner p-Wert bedeutet, dass Ihre beobachtete Differenz selten wäre, wenn es keine wirkliche Wirkung gäbe. looking up a quantile 4) Wie Sie die tatsächlichen Zahlen lesen, die durch den obigen Python-Code erzeugt werden Hier ist, was diese Zahlen Ihnen sagen: t ≈ 1.380 sagt: Der beobachtete Unterschied im durchschnittlichen PnL pro Handel zwischen A und B beträgt 1.380 Standardfehler von Null entfernt. p ≈ 0,168 (beidseitig) sagt: Wenn es wirklich keinen Unterschied in den Mitteln gäbe, würden Sie zufällig einen Unterschied sehen, der mindestens so groß ist, etwa 16-17% der Zeit. 5) Warum die Charts uns täuschen Die kumulative PnL ist eine Mit Tausenden von Trades trennen sich zufällige Spaziergänge regelmäßig durch auffällige Beträge – auch wenn die Mittel identisch sind. Unsere Gehirne sind eingestellt, um Hänge und Trennung zu erkennen, aber nicht zu viel, um Varianz richtig zu integrieren. Der T-Test zwingt Sie, den durchschnittlichen Unterschied zu wiegen . random walk against the per-trade dispersion 6) Was wäre hier „wichtig“ gewesen? Praktisch gesehen würden Sie p-Wert bei 0,05 sehen, wenn der absolute von t-statistisch 1,96 ist (nur 5% der möglichen t-statistischen Werte sind darüber hinaus). Wenn Sie Varianz und Mustergrößenstruktur gleich halten, benötigen Sie etwa 42% größeren Durchschnittsunterschied (weil 1.96 / 1.38 ≈ 1.42) um die 5% zweiseitige Bar zu erreichen. "Aber PnL ist es, was die Rechnungen zahlt." ...wir werden die PnL nicht ablehnen.Wir sind : separating roles PnL sagt Ihnen, ob das Unternehmen als Ganzes funktioniert. Hypothese-Tests sagen Ihnen, ob diese spezifische Änderung wahrscheinlich außerhalb der Probe hilft, die Sie gerade gesehen haben. Wenn die beiden nicht einverstanden sind, haben Sie etwas gelernt: Vielleicht war die Umgebung ungewöhnlich günstig, vielleicht eine Routing-Tweak verstärkte Exposition, vielleicht haben Sie mehrere Änderungen versandt. Wirkung zu haben. Zunahme Implementierungsmuster, das ich empfehle (schnelle Iteration ohne Selbsttäuschung) Per-Trade PnL ist gut, in Hochfrequenz- / Marktmaßnahmen ist es üblich, Aggregationen wie Per-Intervall PnL (z. B. 1-Minut, 5-Minut) zu verwenden, um Inventar, Gebühren und Risikogruppen zu reflektieren - und die Serienkorrelation zu reduzieren. For a mean-effect question, Welch’s t-test is a good default. If tails are very heavy or serial correlation is strong, switch to: Choose the statistic. (cluster by day, by venue, by symbol group), or Cluster-robust tests (label-shuffling), or Randomization / permutation tests (resample blocks to respect autocorrelation). Bootstrap Optionales Stoppen („Wir werden jede Stunde schauen und schicken, wenn p < 0,05) bläst falsche Positive auf. Verwalten Sie mehrere Vergleiche. Wenn Sie 20 Knöpfe ausprobieren, wird einer durch Glück „gewonnen“. Verwenden Sie falsche Entdeckungsrate (Benjamini-Hochberg) oder Bonferroni in Kontexten mit hohen Einsätzen. Halten Sie ein zentrales Protokoll aller Tests, die Sie laufen. Teilen Sie die Märkte oder die Zeit, verdoppeln Sie nicht die Funktionen über den Zug / den Test und seien Sie explizit über das Einfrieren der Termine. Ein p-Wert kann für eine Million Trades winzig sein, aber der Effekt ist nach Gebühren und Risiko wirtschaftlich bedeutungslos. Überwachen Sie die Stabilität. Eine echte Kante sollte Spaltungen überleben: durch das Symbol Liquiditätsbehälter, durch die Zeit des Tages, durch das Volatilitätsregime. Zurück zu unserem Beispiel: Was Sie schließen sollten Angesichts der oben genannten Zahlen (t ≈ 1,380, p ≈ 0,168): Es gibt nicht genügend Beweise dafür, dass Strategie Bs durchschnittliche PnL pro Handel von Strategie A unterscheidet. Die ziemliche Divergenz in kumulativem PnL ist mit Zufall unter gleichen Durchschnittsprozessen kompatibel. Entweder sammeln Sie mehr Daten (vorbereiten Sie eine größere Stichprobe), stärken Sie die Hypothese (bessere Features, Risikokontrolle) oder führen Sie ein sauberes A / B (isolieren Sie Verwirrung). Wegen des Häufige Fallstricke (ich habe sie alle gemacht, so dass Sie nicht müssen) Peeking beim Test wiederholt und stoppen, wenn der p-Wert unter 0.05 sinkt. Verwenden Sie feste Horizont- oder sequenzielle Methoden, die Peeking berücksichtigen, sonst erhöhen Sie falsche Positive. Mit „per-fill“ Ergebnissen, wenn Füllungen stark korreliert sind. Sie denken, Sie haben 100k Proben, aber Sie könnten wirklich 2k unabhängige Ereignisse haben. Vergleich kumulativer Kurven zwischen Perioden mit unterschiedlichem Volumen / Liquidität und nennen Sie es einen Gewinn. Eine winzige Kante kann durch Gebühren, Verzögerung oder Inventarrisiko ausgelöscht werden. Wenn Sie 20 Merkmale anpassen und die besten behalten, muss Ihr P-Wert für diese Auswahl korrigiert werden. Eine Mnemonik für den T-Test, der tatsächlich steckt Wenn Sie versucht sind, ein PnL-Chart zu sehen, denken Sie daran: t = „wie weit die beiden Probenmittel sind“ ÷ „wie unsicher diese Mittel sind“. t = “how far the two sample means are” ÷ “how uncertain those means are.” Wenn Sie Ihre Stichprobengröße verdoppeln, schrumpft der Nenner (Unsicherheit); triviale Unterschiede hören auf, "signifikant" zu sehen. Ende der Notizen Ich hoffe, Sie haben eine gewisse Intuition, warum es nicht offensichtlich ist, die Veränderungen in Ihrer Handelsstrategie zu beurteilen, indem Sie nur den PnL-Unterschied betrachten, welche statistischen Tools verwendet werden können, um den Forschungsprozess robuster zu machen, und möglicherweise einige Klarheit darüber, was hinter all diesen Begriffen liegt, die in statistischen Hypothese-Tests verwendet werden, und wie Sie sie tatsächlich abgeben können, ohne blind die Anweisungen des Lehrbuchs zu befolgen. Viele Forschungsteams weil sie Glück für Verbesserung verwechseln. Sie kreisen durch Dashboard-gesteuerte Anpassungen, bis das Diagramm gut aussieht, versenden es, und verbringen dann Monate damit, den Schaden zu beseitigen. Sie brauchen keine schweren Statistiken, um es besser zu machen. Sie müssen nur die Hypothese formulieren, eine vernünftige Analyseeinheit auswählen, einen Test verwenden, der das Signal in Bezug auf Unsicherheit misst, mehrere Test- und Stoppregeln respektiert und auf der Grundlage beider Statistiken entscheidet Teams bauen komplexere Frameworks auf, die ihrem Zweck entsprechen, aber dies ist ein guter Anfang. fail to iterate und Tun Sie dies, und Ihre Iterationsschleife wird ruhiger, schneller und kompostierender. Diese Veröffentlichung verwendet nur öffentlich verfügbare Informationen und ist zu Bildungszwecken, nicht zu Investitionsberatungen.Alle Meinungen und Meinungen sind meine eigenen und repräsentieren nicht die von meinen ehemaligen / aktuellen Arbeitgebern oder anderen Parteien.