Ist Ihre optimierte Allokation überangepasst? Eine praktische Checkliste
Sie haben den Optimierer laufen lassen. Er hat einen sauberen Satz von Gewichten zurückgegeben, der Backtest sieht überzeugend aus, und die realisierte Volatilität des resultierenden Portfolios liegt erfreulich unter dem Durchschnitt seiner Bestandteile. Jetzt bleibt nur die eine entscheidende Frage: Ist diese Allokation ein echtes Signal, oder ist sie eine Beschreibung der spezifischen Kurshistorie, die Sie zufällig hineingegeben haben?
Wenn Sie wissen möchten, wie Sie überprüfen können, ob ein Portfoliooptimierungsergebnis nicht überangepasst ist, lautet die Antwort nicht: ein einzelner Test. Es ist ein wiederholbares Verfahren — ändern Sie die Eingaben absichtlich, beobachten Sie, was mit den Gewichten passiert, und entscheiden Sie erst dann, ob Sie Kapital einsetzen. Dieser Artikel liefert Ihnen dieses Verfahren und zeigt, wo RSJ Portfolio hineinpasst.
Das Gefährliche daran ist, dass Overfitting selten wie ein Fehler aussieht. Minimum Volatilität, Maximum Sharpe Ratio, Minimum Semi-Varianz, Conditional Value at Risk — jedes dieser Ziele wird aus verrauschten Daten bereitwillig eine selbstsicher wirkende Allokation produzieren. Der Optimierer tut genau das, worum Sie ihn gebeten haben. Das Problem ist, worum Sie ihn gebeten haben.
Warum Overfitting der stille Killer optimierter Portfolios ist
Ein Optimierer minimiert oder maximiert ein Ziel über die Stichprobe, die Sie ihm geben. Wenn die Anzahl der Assets im Verhältnis zur Anzahl der Beobachtungen groß ist, oder wenn das Schätzfenster zufällig einen ruhigen, ungewöhnlich unkorrelierten Abschnitt der Markthistorie enthält, kann die Lösung diesen Abschnitt präzise abbilden und schlecht generalisieren.
Korrelationsbasierte Strategien sind besonders exponiert. Die gesamte Prämisse — in Kandidaten zu allokieren, die schwach korrelieren oder deren Abwärtsbewegungen schwach korrelieren — beruht auf der Annahme, dass die Korrelationsstruktur eine Eigenschaft der Assets ist, nicht des Fensters. Schwache Korrelationen, die in einem bestimmten Zeitraum gefunden werden, bleiben häufig nicht bestehen. Wenn sie zusammenbrechen, wird das Portfolio, das diversifiziert aussah, zu einer konzentrierten Wette im Diversifikationskostüm.
Nichts davon spricht gegen die Mathematik. Es spricht dagegen, einem einzelnen Durchlauf zu vertrauen. Verifikation ist kein Misstrauen; sie ist ein Stresstest der Annahmen, bevor Kapital eingesetzt wird. Wenn Sie den Hintergrund dazu möchten, wie Korrelation und Volatilität über lange Horizonte zusammenspielen, haben wir das separat behandelt in Correlation and Volatility: A Long-Term Investor’s Guide — dieser Artikel konzentriert sich auf die Validierung.
Wie ein robustes Optimierungsergebnis aussieht
Bevor Sie irgendwelche Prüfungen durchführen, hilft es zu wissen, wonach Sie suchen. Eine nicht überangepasste Allokation weist tendenziell diese Eigenschaften auf:
- Stabilität über Zeitfenster hinweg. Teilen Sie die Historie in zwei Hälften, optimieren Sie jede Hälfte und vergleichen Sie. Die Gewichte sollten sich bewegen, aber nicht transformieren.
- Angemessener Umschlag. Wenn eine kleine Änderung des Datumsbereichs eine vollständige Neuverteilung erzwingt, jagt der Optimierer Rauschen, nicht Struktur.
- Keine Abhängigkeit von einem einzelnen Asset. Ein diversifiziertes Ergebnis sollte nicht zusammenbrechen, wenn Sie seinen größten Bestandteil entfernen.
- Überleben über Schätzer und Ziele hinweg. Dieselbe grobe Allokation sollte unter einem anderen Risikomodell und einem anderen Ziel entstehen.
- Keine Abhängigkeit von extremen Nebenbedingungen. Wenn das Ergebnis nur existiert, weil Sie jedes Gewicht auf 5 % begrenzt haben, leistet die Nebenbedingung die Arbeit — nicht Ihr Signal.
Der vierte Punkt ist derjenige, den die meisten überspringen, und er ist der informativste. RSJ Portfolio unterstützt acht Risikomodelle neben mehreren Zielen, was bedeutet, dass Sie eine Lösung unter beispielsweise einem Sample-Covariance-Schätzer und einem Shrinkage-Schätzer gegengeprüfen können, ohne die Anwendung zu verlassen. Wenn zwei vernünftige Schätzer heftig widersprechen, haben Sie etwas Wichtiges über Ihre Daten gelernt — und besser jetzt als nach dem Trade.
Ein robustes Ergebnis sollte auch standhalten, wenn Sie das Ziel austauschen. Minimum Volatilität und Minimum Semi-Varianz stellen subtil unterschiedliche Fragen an dieselben Daten. Eine echte Niedrigkorrelationsstruktur zeigt sich üblicherweise unter beiden. Ein periodenspezifisches Artefakt oft nicht.
Ein schrittweiser Verifikations-Workflow mit RSJ Portfolio
Der praktische Weg führt über die Anwendung. Sie könnten das selbst verdrahten — End-of-Day-Kurse abrufen, eine Kovarianzmatrix aufbauen, den Optimierer fünfmal aus einem Notebook heraus neu laufen lassen und die Ausgaben von Hand abgleichen. Das ist der harte Weg, und es ist genau die Art von Arbeit, die RSJ Portfolio beseitigen soll. Hier ist der Workflow, wie er tatsächlich abläuft.
Schritt 1: Eine Baseline festlegen
Suchen Sie im Tab Selection nach Symbolen und bauen Sie Ihre Kandidatenliste auf. Wechseln Sie dann zum Tab Recommendation und führen Sie den Optimierer mit einer bewusst schlichten Konfiguration aus:
- Ziel: Minimum Volatilität
- Risikoschätzer: Sample Covariance
- Gewichts-Nebenbedingungen: Long-only, keine bindende Obergrenze
Notieren Sie diese Allokation. Dies ist Ihre Kontrolle. Jeder spätere Durchlauf wird damit verglichen, halten Sie den Export also ordentlich.
Schritt 2: Erneut über verschiedene Datumsbereiche ausführen
Legen Sie den Datumsbereich im Tab Configuration fest, teilen Sie dann Ihre Historie in zwei Hälften — einen früheren Zeitraum und einen jüngeren — und optimieren Sie jede separat. Exportieren Sie beide Gewichtsvektoren und vergleichen Sie sie.
import pandas as pd
base = pd.read_csv("weights_early.csv", index_col="symbol")["weight"]
recent = pd.read_csv("weights_recent.csv", index_col="symbol")["weight"]
delta = (recent - base).abs().sort_values(ascending=False)
print(delta.head(10))
print(f"total absolute turnover: {delta.sum():.3f}")
Lesen Sie den Anfang dieser Liste sorgfältig. Eine Handvoll Namen, die sich um ein paar Prozentpunkte verschieben, ist normal. Ein Name, der von 2 % auf 22 % geht, weil sich das Fenster verschoben hat, ist ein Warnsignal, und die Zahl des gesamten absoluten Umschlags sagt Ihnen, wie weitverbreitet das Problem ist.
Schritt 3: Den Risikoschätzer und das Ziel ändern
Führen Sie dieselbe Kandidatenliste und denselben Datumsbereich erneut aus, aber wechseln Sie den Risikoschätzer — von Sample Covariance zu einem Shrinkage- oder Faktormodell — und wechseln Sie dann das Ziel zu Minimum Semi-Varianz, Hierarchical Risk Parity oder Conditional Value at Risk.
Sie suchen nicht nach identischen Gewichten. Sie suchen nach derselben Form: denselben groben Gruppen von Beständen, derselben ungefähren Reihenfolge. Wenn Minimum Volatilität 40 % in einem Namen will und Conditional Value at Risk 3 % will, sind sich die beiden Modelle uneinig darüber, wo das Risiko tatsächlich liegt, und die ehrliche Schlussfolgerung ist, dass Ihre Schätzung fragil ist.
Schritt 4: Exportieren und Out-of-Sample messen
Exportieren Sie die Allokation und bewerten Sie sie auf einem Fenster, das der Optimierer nie gesehen hat. Das bedeutet den jüngsten Zeitraum für ein Modell, das auf älteren Daten angepasst wurde — niemals umgekehrt.
import numpy as np
import pandas as pd
def oos_metrics(weights: pd.Series, prices: pd.DataFrame) -> dict:
returns = prices.pct_change().dropna()
port = returns[weights.index] @ weights
ann_vol = port.std() * np.sqrt(252)
return {
"ann_vol": ann_vol,
"sharpe": (port.mean() * 252) / ann_vol,
"downside_vol": port[port < 0].std() * np.sqrt(252),
"max_drawdown": (1 + port).cumprod().div(
(1 + port).cumprod().cummax()).sub(1).min(),
}
Führen Sie dies für jede Variante aus, die Sie in den Schritten 2 und 3 exportiert haben. Wenn die Baseline im In-Sample-Zeitraum gewinnt und in jedem Out-of-Sample-Zeitraum verliert, haben Sie keine Allokation gefunden — Sie haben eine Kurvenanpassung gefunden.
Schritt 5: Die Eingaben prüfen
Schlechte Eingaben erzeugen selbstsicheren Unsinn. Prüfen Sie im Tab Configuration den Datenanbieter, den lokalen Cache, die lokale Währung und den Datumsbereich, und bestätigen Sie, dass die Bereinigungseinstellungen Ihren Absichten entsprechen. Wenn Ihr Portfolio in mehreren Währungen notiert ist, spielt auch der Konvertierungspfad eine Rolle, denn inkonsistente Währungsbehandlung kann Korrelationen auf eine Weise verzerren, die wie Signal aussieht.
Eine nützliche Frage, die Sie hier stellen sollten: Wenn ich den Anbieter wechsle oder den lokalen Cache neu aufbaue, bewegen sich die Gewichte dann materiell? Wenn ja, ist Ihr Ergebnis nachgelagert zu einer Datenverarbeitungsentscheidung statt zu einer Markttatsache. Die vollständige Pipeline ist auf der data and currencies page und im user guide dokumentiert.
Die Ergebnisse interpretieren: Warnsignale und Randfälle
Sobald die Durchläufe vorliegen, ist die Interpretation meist unkompliziert. Achten Sie auf diese:
- Große Gewichtsschwankungen allein durch eine Änderung des Datumsbereichs. Das häufigste und zuverlässigste Overfitting-Signal.
- Volatilität deutlich niedriger als die individuellen Volatilitäten der Bestandteile, gepaart mit instabilen Korrelationen. Die niedrige Zahl stammt aus Schätzungen, die nicht halten werden.
- Schlecht konditionierte Kovarianz. Wenn die Assets die Beobachtungen zahlenmäßig übertreffen, wird die Matrix instabil. Prüfen Sie sie direkt:
import numpy as np
cov = returns.cov().values
n_assets, n_obs = cov.shape[0], len(returns)
print(f"assets={n_assets}, observations={n_obs}")
print(f"condition number={np.linalg.cond(cov):,.0f}")
Eine Konditionszahl im Tausenderbereich, bei wenigen Beobachtungen relativ zu Assets, ist Ihr Stichwort, zu Shrinkage oder einem Faktormodell zu wechseln — beide als Risikoschätzer im Produkt verfügbar.
- Eine schwere Single-Asset-Allokation. Fragen Sie, ob die niedrige Korrelation dieses Assets echt oder ein Artefakt des Fensters ist. Führen Sie erneut aus, mit diesem Asset ausgeschlossen, und sehen Sie, ob die Diversifikation überlebt.
- Hierarchical Risk Parity als Plausibilitätsprüfung. HRP ist tendenziell toleranter gegenüber Schätzfehlern als vollständige Kovarianzinversion, weshalb es ein nützliches Gegengewicht darstellt. Wir haben die Mechanik erklärt in What Is Hierarchical Risk Parity? A Plain-Language Explanation.
Wie RSJ Portfolio Ihnen hilft, Overfitting zu vermeiden
Der Vorteil ist kein magischer Knopf — es ist, dass die obige Sensitivitätsanalyse Minuten statt eines Nachmittags dauert.
- Mehrere Risikomodelle und Ziele machen es trivial, zu testen, ob ein Ergebnis schätzerabhängig ist. Der Wechsel von Sample Covariance zu Shrinkage oder von Minimum Volatilität zu maximum Sharpe ratio ist ein Dropdown, keine Neufassung.
- Der lokale Cache und die Kursbereinigungspipeline halten die Eingaben konsistent und reproduzierbar, sodass Sie, wenn sich Gewichte ändern, wissen, dass es der Parameter war, nicht der Datenabruf.
- Exporte lassen Sie Allokationen in Ihr eigenes Backtesting-Framework überführen, für die Out-of-Sample-Arbeit, die die Anwendung nicht für Sie erledigen sollte.
- Der user guide dokumentiert jede Methode und jeden Parameter im Detail — Installation und Lizenzierung, Selection, Recommendation, Configuration und das dahinterstehende statistische Konzept — sodass Sie die Annahmen sehen, die Sie akzeptieren.
FAQ
Was ist Overfitting in der Portfoliooptimierung?
Overfitting tritt auf, wenn ein Optimierungsmodell Rauschen in historischen Daten statt echtes Signal erfasst, was zu Allokationen führt, die Out-of-Sample schlecht abschneiden. Es resultiert oft daraus, dass zu viele Parameter relativ zur Datenmenge verwendet werden, oder daraus, dass ein Modell gewählt wird, das zufällig einen bestimmten Zeitraum gut abbildet.
Wie kann ich testen, ob mein optimiertes Portfolio überangepasst ist?
Führen Sie die Optimierung auf verschiedenen historischen Fenstern erneut aus, ändern Sie das Risikomodell oder die Zielfunktion, und prüfen Sie, ob die resultierenden Allokationen stabil sind. Wenn kleine Änderungen der Eingaben zu großen Änderungen der Gewichte führen, ist das Ergebnis wahrscheinlich überangepasst.
Hat RSJ Portfolio eingebaute Overfitting-Prüfungen?
RSJ Portfolio hat keinen einzelnen „Overfitting-Check"-Knopf, aber es bietet die Werkzeuge für eine Sensitivitätsanalyse: mehrere Risikomodelle, mehrere Ziele und die Möglichkeit, Ergebnisse für Out-of-Sample-Tests zu exportieren. Der user guide erklärt, wie man Ergebnisse interpretiert und Parameter anpasst.
Was sind häufige Anzeichen dafür, dass eine optimierte Allokation überangepasst ist?
Häufige Anzeichen sind extreme Gewichtskonzentrationen, hoher Umschlag bei leichter Änderung des Datumsbereichs und eine Performance, die stark von der Wahl des Risikomodells oder Ziels abhängt. Eine robuste Allokation sollte über vernünftige Variationen der Eingaben hinweg relativ stabil sein.
Fazit: Eine Checkliste für selbstsichere Allokation
Hier ist die Checkliste, komprimiert:
- Legen Sie einen Baseline-Durchlauf mit schlichten Parametern fest.
- Führen Sie erneut auf mindestens zwei disjunkten Datumsbereichen aus und vergleichen Sie die Gewichte.
- Führen Sie erneut unter einem anderen Risikoschätzer und einem anderen Ziel aus.
- Exportieren Sie alles und berechnen Sie Out-of-Sample-Volatilität, Sharpe, Abwärtsvolatilität und Drawdown.
- Prüfen Sie die Eingaben — Anbieter, Cache, Währung, Bereinigungseinstellungen — bevor Sie das Modell beschuldigen.
Keine Optimierung ist immun gegen Overfitting. Was eine verteidigbare Allokation von einer glücklichen unterscheidet, ist, ob Sie diesen Prozess durchgeführt haben, bevor Sie Kapital eingesetzt haben, und ob Sie aufgeschrieben haben, was Sie gefunden haben.
RSJ Portfolio ist eine Windows-Desktop-Anwendung, die aus historischen End-of-Day-Kursen ein statistisch optimiertes Aktienportfolio aufbaut, unter Verwendung moderner Portfoliotheorie mit auswählbaren Zielen, Risikoschätzern und Gewichts-Nebenbedingungen. Eine Einzelplatzlizenz ist verfügbar.
Laden Sie das Installationsprogramm von der downloads page herunter — die SHA-512-Prüfsumme wird neben dem versionierten Dateinamen veröffentlicht, sodass Sie sie vor der Ausführung verifizieren können:
sha512sum RSJ-Portfolio-Setup-<version>.exe
Beginnen Sie dann mit dem getting started guide und dem user guide vor Ihrer ersten Optimierung. Testen Sie das Ergebnis auf fünf Arten, bevor Sie ihm einmal vertrauen.
Verwandte Beiträge
- What Is Hierarchical Risk Parity? A Plain-Language Explanation
- Correlation and Volatility: A Long-Term Investor’s Guide
- Minimum Volatility vs Maximum Sharpe Ratio: Which to Choose?