Signal Postmortem
Übersicht
Signal Postmortem erfasst und analysiert die Ergebnisse von Handelssignalen, die von der Edge-Pipeline, Screenern und anderen Skills generiert wurden. Es vergleicht die prognostizierte Richtung mit den realisierten Renditen nach 5 und 20 Tagen, kategorisiert die Ergebnisse (echter Treffer, Fehlalarm, verpasste Chance, Regime-Fehlanpassung) und generiert Rückmeldungen für die Gewichtungsanpassung des Edge-Signal-Aggregators sowie Einträge für das Skill-Verbesserungs-Backlog.
Verwendung
- Nachdem ein Trade geschlossen wurde und Sie das Ergebnis erfassen möchten
- Bei der Überprüfung einer Charge von Signalen, die ihre Haltedauer (5 oder 20 Tage) erreicht haben
- Zur Identifizierung systematischer Fehlalarm-Muster bei bestimmten Skills
- Zur Generierung von Rückmeldungen für die Kalibrierung der Gewichtungen des Edge-Signal-Aggregators
- Beim Aufbau eines Skill-Verbesserungs-Backlogs auf Basis von Entscheidungsqualitätskennzahlen
- Für regelmäßige (wöchentliche/monatliche) Signalqualitätsprüfungen
Voraussetzungen
- Python 3.9+
- FMP-API-Key (optional, zum Abrufen realisierter Renditen, falls nicht manuell angegeben)
- Standardbibliothek +
requestsfür API-Aufrufe - Eingabe: Signaldatensätze im JSON-Format (vom Edge-Signal-Aggregator oder von Screener-Ausgaben)
API-Key-Einrichtung (Optional)
Wenn Sie Kursdaten automatisch für die Renditeberechnung abrufen möchten, richten Sie den FMP-API-Key ein:
export FMP_API_KEY=Ihr_API_Schlüssel_hier
Alternativ können Sie den Schlüssel über die Befehlszeile mit --api-key IHR_SCHLÜSSEL übergeben. Ohne API-Key können Sie Ergebnisse manuell erfassen, indem Sie --exit-price und --exit-date angeben.
Arbeitsablauf
Schritt 1: Signaldatensätze vorbereiten
Sammeln Sie geschlossene oder ausgereifte Signaldatensätze. Jeder Datensatz sollte Folgendes enthalten:
signal_id: Eindeutige Kennungticker: Aktiensymbolsignal_date: Datum, an dem das Signal generiert wurdepredicted_direction: LONG oder SHORTsource_skill: Welcher Skill das Signal generiert hatentry_price: Preis bei Signalerstellung (optional, für manuelle Überschreibung)
# Beispiel: Signale auflisten, die für eine Postmortem-Analyse bereit sind (5+ Tage alt)
python3 skills/signal-postmortem/scripts/postmortem_recorder.py \
--list-ready \
--signals-dir state/signals/ \
--min-days 5
Schritt 2: Ergebnisse erfassen
Führen Sie den Postmortem-Recorder aus, um realisierte Renditen abzurufen und Ergebnisse zu klassifizieren.
python3 skills/signal-postmortem/scripts/postmortem_recorder.py \
--signals-file state/signals/aggregated_signals_2026-03-10.json \
--holding-periods 5,20 \
--output-dir reports/
Für die manuelle Erfassung von Ergebnissen (wenn Kursdaten bereits verfügbar sind):
python3 skills/signal-postmortem/scripts/postmortem_recorder.py \
--signal-id sig_aapl_20260310_abc \
--exit-price 178.50 \
--exit-date 2026-03-15 \
--outcome-notes "Bei Ziel geschlossen, +3,2 % in 5 Tagen" \
--output-dir reports/
Schritt 3: Ergebnisse klassifizieren
Der Recorder klassifiziert jedes Signal automatisch in eine von vier Kategorien:
| Kategorie | Definition |
|---|---|
| TRUE_POSITIVE | Die prognostizierte Richtung entsprach dem Vorzeichen der realisierten Rendite |
| FALSE_POSITIVE | Die prognostizierte Richtung war entgegengesetzt zur realisierten Rendite |
| MISSED_OPPORTUNITY | Signal wurde nicht umgesetzt, wäre aber profitabel gewesen |
| REGIME_MISMATCH | Signal scheiterte aufgrund einer Marktregime-Änderung |
Klassifizierungsregeln sind in references/outcome-classification.md dokumentiert.
Schritt 4: Rückmeldungsdateien generieren
Generieren Sie Rückmeldungen für nachgelagerte Verbraucher:
# Vorschläge zur Gewichtungsanpassung für den Edge-Signal-Aggregator generieren
python3 skills/signal-postmortem/scripts/postmortem_analyzer.py \
--postmortems-dir reports/postmortems/ \
--generate-weight-feedback \
--output-dir reports/
# Einträge für das Skill-Verbesserungs-Backlog generieren
python3 skills/signal-postmortem/scripts/postmortem_analyzer.py \
--postmortems-dir reports/postmortems/ \
--generate-improvement-backlog \
--output-dir reports/
Schritt 5: Zusammenfassungsstatistiken anzeigen
Generieren Sie aggregierte Statistiken nach Skill, nach Ticker und nach Zeitraum:
python3 skills/signal-postmortem/scripts/postmortem_analyzer.py \
--postmortems-dir reports/postmortems/ \
--summary \
--group-by skill,month \
--output-dir reports/
Ausgabeformat
Postmortem-Datensatz (JSON)
{
"schema_version": "1.0",
"postmortem_id": "pm_sig_aapl_20260310_abc",
"signal_id": "sig_aapl_20260310_abc",
"ticker": "AAPL",
"signal_date": "2026-03-10",
"source_skill": "edge-signal-aggregator",
"predicted_direction": "LONG",
"entry_price": 172.50,
"realized_returns": {
"5d": 0.032,
"20d": 0.058
},
"exit_price": 178.50,
"exit_date": "2026-03-15",
"holding_days": 5,
"outcome_category": "TRUE_POSITIVE",
"regime_at_signal": "RISK_ON",
"regime_at_exit": "RISK_ON",
"outcome_notes": "Sauberer Ausbruch, durch kleinen Rücksetzer gehalten",
"recorded_at": "2026-03-17T10:30:00Z"
}
Gewichtungsrückmeldung (JSON)
{
"schema_version": "1.0",
"generated_at": "2026-03-17T10:35:00Z",
"analysis_period": {
"from": "2026-02-01",
"to": "2026-03-15"
},
"skill_adjustments": [
{
"skill": "vcp-screener",
"current_weight": 1.0,
"suggested_weight": 0.85,
"reason": "15 % Fehlalarmrate im RISK_OFF-Regime",
"sample_size": 42
}
],
"confidence": "MEDIUM",
"min_sample_threshold": 20
}
Eintrag im Skill-Verbesserungs-Backlog (YAML)
- skill: vcp-screener
issue_type: false_positive_cluster
severity: medium
evidence:
false_positive_rate: 0.15
sample_size: 42
regime_correlation: RISK_OFF
suggested_action: "Regimefilter hinzufügen oder Signalkonfidenz in RISK_OFF reduzieren"
generated_by: signal-postmortem
generated_at: "2026-03-17T10:35:00Z"
Zusammenfassungsbericht (Markdown)
Berichte werden im Verzeichnis reports/ mit Dateinamen wie postmortem_summary_YYYY-MM-DD.md gespeichert.
Ressourcen
scripts/postmortem_recorder.py-- Erfasst einzelne Signalergebnissescripts/postmortem_analyzer.py-- Generiert Rückmeldungen und zusammenfassende Statistikenreferences/outcome-classification.md-- Klassifizierungsregeln und Randfällereferences/feedback-integration.md-- Wie Rückmeldungen in nachgelagerte Skills integriert werden
Wichtige Prinzipien
- Ehrliche Zuordnung -- Jedes Ergebnis wird zur Rechenschaft seinem Quell-Skill zugeordnet
- Regime-Bewusstsein -- Der Regime-Kontext wird erfasst, um Skill-Versagen von Marktregimewechseln zu unterscheiden
- Mindeststichprobengröße -- Gewichtungsanpassungen erfordern 20+ Signale für statistische Gültigkeit
- Rückkopplungsschleife schließen -- Ergebnisse fließen zurück, um sowohl die Signalaggregation als auch die Skill-Qualität zu verbessern