So verifizieren Sie die Ausgabe Ihres Portfolio-Optimierers
Sie führen den Optimierer aus, erhalten einen Vektor von Gewichtungen, und nun sollen Sie Kapital darauf allokieren. Das Unangenehme daran ist, dass die Ausgabe keine Erklärung enthält: Sie sagt Ihnen, was Sie halten sollen, aber nie warum. Genau in dieser Lücke lebt die Verifikation.
Dieser Artikel ist eine praktische Checkliste zur Verifikation von Ergebnissen von Portfolio-Optimierern – kein philosophisches Plädoyer für das Vertrauen in Modelle. Er zeigt, wie ein verteidigungsfähiges Ergebnis aussieht, wie man jede Behauptung überprüft und wo plausibel wirkende Allokationen üblicherweise schiefgehen. RSJ Portfolio, eine Windows-Desktop-Anwendung, die optimierte Aktienportfolios aus historischen End-of-Day-Kursen erstellt, dient als durchgängiges Beispiel, weil sie das Zielkriterium, den Risikoschätzer und die Gewichtungsbeschränkungen offenlegt, anstatt sie zu verbergen.
Warum Verifikation bei Portfolio-Optimierern wichtig ist
Optimierer sind standardmäßig Blackboxen. Kurse gehen hinein, Gewichtungen kommen heraus, und der Weg dazwischen – Kovarianzschätzung, Umgang mit Beschränkungen, Datenbereinigung – ist unsichtbar, sofern das Werkzeug ihn nicht bewusst offenlegt.
Die Fehlermodi sind leise, nicht laut:
- Survivorship Bias in der Kandidatenliste entfernt still und heimlich die Unternehmen, die auf null gegangen sind, und lässt jeden Backtest besser aussehen als die Realität.
- Veraltete Kurse blähen die scheinbare Unabhängigkeit zweier Assets auf, die nach unterschiedlichen Kalendern gehandelt wurden.
- Währungsinkongruenzen verwandeln eine echte Korrelation in ein Artefakt der Wechselkursbewegung.
- Look-Ahead-Leakage in einem Bereinigungsschritt verwandelt eine Prognose in eine Erinnerung.
Nichts davon erzeugt eine Fehlermeldung. Sie erzeugen ein Portfolio, das vernünftig aussieht und falsch ist.
Verifikation ist kein Misstrauen. Sie ist der Schritt, in dem Sie genügend Belege zusammentragen, um die Allokation vor sich selbst zu rechtfertigen – und vor jedem anderen, der sie absegnen muss. Mehr Datenquellen und mehr Automatisierung haben stille Fehler nicht seltener gemacht; sie haben sie leiser gemacht, weshalb eine wiederholbare Checkliste die Intuition schlägt.
Wie eine verifizierbare Optimierer-Ausgabe aussieht
Ein Beweis sind nicht die endgültigen Gewichtungen. Ein Beweis ist das vollständige Tupel, das sie erzeugt hat:
- Die Methode – welches Optimierungsziel gelöst wurde.
- Das Risikomodell – wie Kovarianz oder Abwärtsrisiko geschätzt wurde.
- Das Renditemodell – was, falls überhaupt etwas, die erwarteten Renditen getrieben hat.
- Die Beschränkungen – Positionslimits und alle weiteren Gewichtungsbeschränkungen.
- Die Daten – Anbieter, Symbole, Datumsbereich, Bereinigungseinstellungen, Basiswährung.
- Der Zustand – aus welchem lokalen Cache der Lauf gelesen hat.
Sie suchen nach zwei Eigenschaften. Erstens Reproduzierbarkeit: Ein erneuter Lauf mit denselben Eingaben und denselben Parametern sollte dieselbe Allokation ergeben. Zweitens Nachvollziehbarkeit: Das Werkzeug sollte Ihnen Zwischendiagnosen zeigen – Korrelationsstruktur, Risikoschätzungen, welche Beschränkungen tatsächlich binden – und nicht nur die endgültige Antwort.
RSJ Portfolio ist um auswählbare, sichtbare Elemente herum aufgebaut. Das Zielkriterium ist eine Wahl zwischen Minimum Volatility, Maximum Sharpe Ratio, Minimum Semi Variance, Hierarchical Risk Parity und Conditional Value at Risk. Der Risikoschätzer ist eine Wahl zwischen acht Risikomodellen, wobei Renditemodelle und Gewichtungsbeschränkungen daneben auswählbar sind. Der statistische Hintergrund dieser Entscheidungen ist im Kapitel „Concept" des Benutzerhandbuchs dokumentiert, und die Datenverarbeitung – Anbieter, Kursbereinigung, lokaler Cache, Mehrwährungsumrechnung – ist separat dokumentiert.
Diese Dokumentation ist wichtig, denn „der Optimierer hat es gesagt" ist kein Beweis. „Der Optimierer hat die Volatilität unter einer Shrinkage-Kovarianzschätzung minimiert, mit einer Positionsobergrenze von 5 %, über diese Symbolliste, diesen Datumsbereich und diese Bereinigungseinstellungen" ist einer.
Schritt-für-Schritt-Verifikation mit RSJ Portfolio
Der folgende Workflow setzt eine Windows-Installation für einen einzelnen Benutzer voraus. Verifizieren Sie vor allem anderen, dass Sie installiert haben, was Sie zu installieren glauben: Der Windows-Installer auf der Downloads-Seite hat einen versionierten Dateinamen, und daneben wird ein SHA-512-Hash veröffentlicht.
# Use the exact versioned filename you downloaded from the Downloads page.
sha512sum RSJPortfolioSetup-<version>.exe
# Compare the output against the SHA-512 published on that page.
Wenn die Hashes übereinstimmen, wenden Sie sich der Allokation selbst zu.
Schritt 1: Bestätigen Sie die Datenpipeline
Öffnen Sie das Kapitel „Configuration" des Benutzerhandbuchs und gleichen Sie Ihre eigenen Einstellungen damit ab. Sie wollen die Antwort auf vier Fragen kennen und später festhalten:
- Welcher Datenanbieter hat die Kurse geliefert?
- Welche Kursbereinigungseinstellungen waren aktiv?
- Welche lokale Währung war ausgewählt?
- Welchen Datumsbereich hat der Lauf abgedeckt?
Der lokale Cache gehört zu diesem Bild, er ist kein Implementierungsdetail. Ein Cache, der bereinigte Daten aus einer früheren Konfiguration enthält, ist der Unterschied zwischen zwei Läufen, die vergleichbar sind, und zwei Läufen, die nur vergleichbar aussehen.
Schritt 2: Überprüfen Sie die Auswahl
Die Selection-Ansicht ist der Ort, an dem Sie Symbole suchen und die Kandidatenliste aufbauen. Verifizieren Sie, dass die Liste, die gelaufen ist, die Liste ist, die Sie laufen lassen wollten:
- Keine Symbole stillschweigend entfernt – ein delisteter oder umbenannter Ticker, der nicht geladen werden kann, schrumpft Ihr Universum ohne Ankündigung.
- Keine versehentlichen Duplikate oder Aktiengattungen, die Sie nicht beabsichtigt haben.
- Die Kandidatenanzahl entspricht Ihren Erwartungen, bevor Sie irgendetwas drücken.
Ein Universum, das still um 15 % geschrumpft ist, verändert die Korrelationsstruktur – und damit die Allokation – stärker als die meisten Parameteranpassungen.
Schritt 3: Prüfen Sie die Empfehlung
Öffnen Sie die Recommendation-Ansicht. Hier werden die Parameter des Optimierers und die resultierende Allokation gemeinsam dargestellt – die gewählte Methode, das Risikomodell, das Renditemodell, die Beschränkungen und die Gewichtungen.
Lesen Sie sie als eine Reihe zu prüfender Behauptungen, nicht als Urteil. Spiegelt die Allokation tatsächlich die Methode wider, die Sie gewählt haben? Ein Minimum-Volatility-Lauf sollte nicht von Ihren volatilsten Titeln dominiert werden; ein Hierarchical-Risk-Parity-Lauf sollte nicht wie eine konzentrierte Wette auf einen Cluster aussehen. Wenn die Antwort nicht allein aus der Ansicht ersichtlich ist, liefert Ihnen der Export die Daten, um sie numerisch zu prüfen.
Dies ist auch der Moment, um zu bestätigen, dass der Kernmechanismus des Produkts seine Aufgabe erfüllt: RSJ Portfolio allokiert auf Kandidaten, die schwach korrelieren – oder deren Abwärtsseite schwach korreliert –, wodurch es die Portfoliovolatilität reduziert. Wenn Ihre Ausgabe auf Titel konzentriert ist, von denen Sie bereits wussten, dass sie sich gemeinsam bewegen, stimmt etwas weiter oben in der Kette nicht. Den vollständigen Workflow können Sie auf der Produktseite sehen, bevor Sie installieren.
Schritt 4: Prüfen Sie die Korrelationsstruktur auf Plausibilität
Ziehen Sie die Gewichtungen und eine Kursmatrix heran und berechnen Sie die Grundlagen selbst nach. Unabhängige Arithmetik ist billig, und sie fängt die meisten stillen Fehler ab.
import numpy as np
import pandas as pd
# weights.csv: symbol,weight — rename columns to match your export.
w = pd.read_csv("weights.csv", index_col="symbol")["weight"]
prices = pd.read_csv("prices.csv", index_col="date", parse_dates=True)[w.index]
rets = prices.pct_change().dropna()
cov = rets.cov() * 252 # annualized
port_vol = float(np.sqrt(w.values @ cov.values @ w.values))
print(f"recomputed annualized volatility: {port_vol:.2%}")
corr = rets.corr()
off_diag = corr.values[np.triu_indices_from(corr, k=1)]
print(f"mean pairwise correlation: {off_diag.mean():.2f}")
downside = rets[rets < 0].corr()
off_down = downside.values[np.triu_indices_from(downside, k=1)]
print(f"mean downside correlation: {np.nanmean(off_down):.2f}")
Wenn die mittlere paarweise Korrelation der ausgewählten Titel nahe am Mittelwert Ihrer gesamten Kandidatenliste liegt, wird die Prämisse schwacher Korrelation nicht genutzt. Wenn die Abwärtskorrelation hoch ist, während die headline-Korrelation niedrig ist, haben Sie den Grund gefunden, ein abwärtsbewusstes Zielkriterium zu bevorzugen.
Schritt 5: Führen Sie einen erneuten Lauf mit einem anderen, aber vernünftigen Parametersatz durch
Ändern Sie eine Sache – den Risikoschätzer oder eine Beschränkung – und führen Sie erneut aus. Vergleichen Sie dann.
import pandas as pd
a = pd.read_csv("audit/run-a/weights.csv", index_col="symbol")["weight"]
b = pd.read_csv("audit/run-b/weights.csv", index_col="symbol")["weight"]
delta = (b - a).dropna().sort_values(key=abs, ascending=False)
print(delta.head(10))
Das Ziel ist nicht Stabilität um ihrer selbst willen. Das Ziel ist, dass Richtung und Größe der Änderung erklärbar sind. Eine Positionsobergrenze zu verschärfen sollte Ihre größten Positionen reduzieren. Der Wechsel zu einem abwärtsfokussierten Risikomodell sollte zugunsten von Titeln mit besserem Abwärtsverhalten umschichten. Ein unerklärlicher Sprung bedeutet, dass ein Parameter, den Sie nicht berücksichtigt haben, die Arbeit macht.
Schritt 6: Exportieren und Gegenprüfen
RSJ Portfolio unterstützt Exporte, was Schritt 4 und Schritt 5 erst ohne manuelles Übertragen möglich macht. Exportieren Sie die Allokation und die Laufparameter, bewahren Sie sie zusammen auf und archivieren Sie sie. Wenn Sie eine vollständig unabhängige Bestätigung wünschen, geben Sie die exportierten Gewichtungen und Ihre eigene Kursreihe in die obige Berechnung ein und vergleichen Sie.
Ergebnisse interpretieren und Sonderfälle behandeln
Vier Situationen erklären die meisten verwirrenden Ausgaben:
- Nahezu singuläre Kovarianzmatrix. Wenn die Anzahl der Assets sich der Anzahl der Beobachtungen nähert, wird die Schätzung instabil und der Optimierer nutzt Rauschen aus. Ein robuster Risikoschätzer mildert dies ab – weshalb RSJ Portfolio acht Risikomodelle statt eines einzigen anbietet.
- Währungseffekte. Wenn Ihr Portfolio mehrere Währungen umfasst, verifizieren Sie den Umrechnungspfad und bestätigen Sie, dass die Einstellung der lokalen Währung diejenige ist, in der Sie berichten wollen. Mehrwährungsportfolios werden ausführlich in Multi-Currency Portfolios: Getting the Price Data Right behandelt.
- Look-Ahead-Bias. Bestätigen Sie, dass der Datumsbereich vor dem Datum endet, für das Sie optimieren, und dass Bereinigungsschritte nicht in die Zukunft greifen. Die Checkliste dafür finden Sie in How to Check If a Portfolio Optimizer Uses Look-Ahead Bias.
- Konzentriertes Risiko. Eine hohe Sharpe Ratio gepaart mit niedriger Volatilität kann aus einer Handvoll Positionen stammen. Prüfen Sie das effektive N (der Kehrwert der Summe der quadrierten Gewichtungen) und ob Beschränkungen binden. Wenn Ihre Obergrenze aktiv ist, teilt Ihnen der Optimierer mit, dass er von etwas mehr wollte.
Eine Konsistenzprüfung verbindet das Ganze: Wenn Sie ein abwärtsbewusstes Zielkriterium wie Minimum Semi Variance oder Conditional Value at Risk gewählt haben, sollte sich die Ausgabe anders verhalten als ein Minimum-Volatility-Lauf auf demselben Universum. Wenn nicht, erreichen die Parameter den Solver nicht so, wie Sie denken.
Häufige Fallstricke bei der Verifikation von Optimierer-Ergebnissen
Der Ausgabe vertrauen, ohne den Datenbereich zu prüfen. Ein kurzes oder veraltetes Fenster erzeugt instabile Gewichtungen, die isoliert betrachtet in Ordnung aussehen.
Das Risikomodell ignorieren. Stichprobenkovarianz und Shrinkage-Schätzer können aus identischen Eingaben materiell unterschiedliche Allokationen erzeugen. Verifizieren Sie, welcher gelaufen ist, bevor Sie irgendetwas interpretieren.
Beschränkungen übersehen. Eine bindende Beschränkung erzwingt eine Allokation, die konstruktionsbedingt suboptimal aussieht. Bestätigen Sie, dass jede Beschränkung beabsichtigt ist und nicht aus einer früheren Sitzung geerbt wurde.
Ausführungskosten vergessen. RSJ Portfolio konzentriert sich auf die Allokation. Transaktionskosten und Rebalancing-Häufigkeit liegen bei Ihnen – eine „bessere" Allokation, die mehr Umschlag erzeugt, als Sie sich leisten können auszuführen, ist nicht besser.
Determinismus voraussetzen. Manche Methoden können zufällige oder reihenfolgeabhängige Komponenten enthalten. Wenn Sie bit-identische Wiederholungsläufe benötigen, verifizieren Sie die Reproduzierbarkeit ausdrücklich, anstatt sie anzunehmen.
Einen wiederholbaren Verifikations-Workflow aufbauen
Der Wert der Verifikation kommt daher, sie jedes Mal gleich durchzuführen. Ein minimaler Workflow:
# run-manifest.yaml — one file per run, archived next to the export.
# The labels here mirror what the Recommendation view shows; keep them in sync.
run_id: 2026-10-14-lowvol-base
objective: minimum_volatility
risk_model: <the risk model you selected>
return_model: <the return model you selected>
constraints:
max_weight: <your cap>
universe:
symbols_expected: 120
data:
provider: <configured provider>
base_currency: <your local currency>
date_range: <start>..<end>
cleaning: <your cleaning settings>
Dann:
- Halten Sie das Manifest für jeden Lauf fest, zusammen mit den exportierten Gewichtungen.
- Verwenden Sie den lokalen Kurs-Cache wieder, damit Vergleiche zwischen Läufen dieselben bereinigten Daten lesen.
- Automatisieren Sie die Plausibilitätsprüfungen – Volatilität, Konzentration, mittlere paarweise Korrelation – und protokollieren Sie die Werte.
- Führen Sie ein Änderungsprotokoll der Parameteränderungen und ihrer gemessenen Wirkung auf die Allokation.
Die Exportfunktion von RSJ Portfolio existiert genau deshalb, damit Ergebnisse für Audits archiviert werden können, statt erinnert werden zu müssen.
FAQ
Woran erkenne ich, ob mein Optimierer Look-Ahead-Bias verwendet?
Look-Ahead-Bias tritt auf, wenn Zukunftsinformationen in die Optimierung gelangen. Verifizieren Sie, dass der Datenbereich vor dem Optimierungsdatum endet und dass die Datenbereinigung – das Füllen fehlender Werte, das Ausrichten von Kalendern – keine zukünftigen Daten verbraucht. Die Konfigurationseinstellungen von RSJ Portfolio lassen Sie den Datumsbereich und die Bereinigungsschritte direkt steuern. Eine ausführlichere Erläuterung finden Sie in How to Check If a Portfolio Optimizer Uses Look-Ahead Bias.
Was ist der Unterschied zwischen Minimum Volatility und Minimum Semi Variance?
Minimum Volatility minimiert die Gesamtstandardabweichung der Portfoliorenditen und behandelt Aufwärts- und Abwärtsbewegungen gleich. Minimum Semi Variance bestraft nur Abweichungen nach unten, was besser dazu passt, wie die meisten Anleger Risiko tatsächlich erleben. RSJ Portfolio bietet beide als auswählbare Zielkriterien an, neben Maximum Sharpe Ratio, Hierarchical Risk Parity und Conditional Value at Risk.
Kann ich die Ausgabe des Optimierers verifizieren, ohne ihn erneut auszuführen?
Teilweise. Sie können die berichtete Methode, das Risikomodell, die Beschränkungen und die Allokation auf interne Konsistenz prüfen. Eine vollständige Verifikation erfordert in der Regel einen erneuten Lauf mit denselben Eingaben, um die Reproduzierbarkeit zu bestätigen. RSJ Portfolio legt alle Parameter offen und unterstützt Exporte, was dieses Audit unkompliziert statt archäologisch macht.
Wie geht RSJ Portfolio mit fehlenden oder fehlerhaften Daten um?
Es enthält eine Kursbereinigungspipeline, die Daten von den unterstützten Anbietern verarbeitet, und die Bereinigungseinstellungen sind konfigurierbar. Der lokale Cache speichert bereinigte Daten, sodass wiederholte Läufe konsistente Eingaben wiederverwenden, anstatt sie erneut abzurufen und zu bereinigen. Das Kapitel „Data and currencies" des Benutzerhandbuchs behandelt die Pipeline, die unterstützten Anbieter und den Umrechnungspfad für Mehrwährungsportfolios.
Fazit
Verifikation ist kein separates Wissenschaftsprojekt, das an die Portfoliokonstruktion angebaut wird – sie ist der Teil des Prozesses, der einen Gewichtungsvektor in eine Entscheidung verwandelt, die Sie verteidigen können. Halten Sie die Methode, das Risikomodell, die Beschränkungen und die Daten fest; berechnen Sie die Grundlagen selbst nach; ändern Sie einen Parameter und sehen Sie, ob sich die Ausgabe aus einem Grund bewegt, den Sie benennen können.
RSJ Portfolio macht dieses Audit möglich, indem es das Zielkriterium, den Risikoschätzer und die Gewichtungsbeschränkungen auswählbar und sichtbar hält und Ergebnisse exportiert, die Sie archivieren und unabhängig prüfen können. Es ist eine Windows-Anwendung mit Lizenz für einen einzelnen Benutzer; die Preisseite erläutert, was die Lizenz umfasst, die Downloads-Seite enthält den Installer und seinen veröffentlichten SHA-512, und das Benutzerhandbuch führt auf Englisch und Deutsch durch Konfiguration und Interpretation. Beginnen Sie mit einem kleinen Universum, führen Sie die Checkliste einmal durch, und lassen Sie das Manifest zur Gewohnheit werden, bevor die Positionen groß werden.
Verwandte Beiträge
- How to Build a Low Correlation Stock Portfolio Step by Step
- Multi-Currency Portfolios: Getting the Price Data Right
- Hierarchical Risk Parity vs Mean Variance Optimization