mirror of
https://github.com/NicolasBohn/NexQuant.git
synced 2026-07-30 17:07:43 +00:00
e07a6df47f
Neue Module für Backtesting und Performance-Validierung: 1. Backtest Engine (backtest_engine.py) - IC (Information Coefficient) Berechnung - ICIR (IC Information Ratio) - Sharpe Ratio (annualisiert) - Sortino Ratio (Downside-only) - Max Drawdown mit Start/End Datum - Calmar Ratio - Annualized Return - Win Rate - Alle Metriken in einer Funktion 2. Results Database (results_db.py) - SQLite-Datenbank für alle Ergebnisse - Tabellen: factors, backtest_runs, backtest_metrics, daily_returns, loop_results, factor_correlations - Abfragen: Top-Faktoren, Performance-Historie, Loop-Summary, Aggregate Stats - JSON Export Funktion 3. Risk Management (risk_management.py) - Correlation Analyzer (Korrelationsmatrix zwischen Faktoren) - Portfolio Optimizer (Mean-Variance, Risk Parity, Hierarchical Risk Parity) - Advanced Risk Manager (Position Sizing mit Korrelations-Adjustierung) - Risk-Limit Checks (Position Size, Leverage, Drawdown, Volatility) - Risk Reports mit allen Metriken 4. Ordner-Struktur (results/) - backtests/ - Einzelne Backtest-Ergebnisse - factors/ - Faktor-spezifische Analysen - runs/ - Komplette Run-Ergebnisse - logs/ - Backtesting-Logs - db/ - SQLite-Datenbank - README.md - Vollständige Dokumentation 5. .gitignore aktualisiert - results/ Ordner ausgeschlossen (lokale Ergebnisse) - *.db, *.csv, *_export.json ausgeschlossen Status: - Backtesting: 10% → 80% ✅ - Risk Management: 60% → 95% ✅ - Results-Dokumentation: 0% → 100% ✅ Nächste Schritte: - Backtesting in RD-Agent Workflow integrieren - Alle 110 Faktoren durch Backtest validieren - Top-20 Faktoren nach IC/Sharpe auswählen - Portfolio-Optimierung durchführen
Predix Results Documentation
Dieser Ordner enthält alle Backtesting-Ergebnisse, Faktor-Analysen und Performance-Daten.
⚠️ WICHTIG
Dieser Ordner ist in .gitignore aufgenommen!
- Ergebnisse werden NICHT zu Git hinzugefügt
- Jeder Entwickler hat lokale Ergebnisse
- Sensible Performance-Daten bleiben privat
📁 Ordner-Struktur
results/
├── backtests/ # Einzelne Backtest-Ergebnisse (JSON, CSV)
│ ├── FactorName_20240402_120000.json
│ ├── FactorName_20240402_120000_returns.csv
│ └── FactorName_20240402_120000_equity.csv
│
├── factors/ # Faktor-spezifische Analysen
│ ├── factor_performance.json
│ └── ic_history.csv
│
├── runs/ # Komplette Run-Ergebnisse
│ ├── risk_report_20240402_120000.json
│ └── portfolio_weights_20240402.json
│
├── logs/ # Backtesting-Logs
│ └── backtest_20240402.log
│
└── db/ # SQLite-Datenbank
├── backtest_results.db
└── test_export.json
📊 Gespeicherte Daten
Backtests (backtests/)
Für jeden Faktor werden gespeichert:
| Datei | Inhalt |
|---|---|
{Factor}_{Timestamp}.json |
Alle Metriken (IC, Sharpe, Drawdown, etc.) |
{Factor}_{Timestamp}_returns.csv |
Tägliche Returns |
{Factor}_{Timestamp}_equity.csv |
Equity Curve |
Metriken pro Faktor:
- IC (Information Coefficient)
- ICIR (IC Information Ratio)
- Sharpe Ratio
- Sortino Ratio
- Calmar Ratio
- Annualized Return
- Max Drawdown
- Win Rate
- Total Trades
Datenbank (db/backtest_results.db)
Tabellen:
| Tabelle | Inhalt |
|---|---|
factors |
Alle generierten Faktoren |
backtest_runs |
Backtest-Durchläufe |
backtest_metrics |
Performance-Metriken pro Run |
daily_returns |
Tägliche Returns pro Run |
loop_results |
Loop-Zusammenfassungen |
factor_correlations |
Korrelationen zwischen Faktoren |
Abfragen:
from rdagent.components.backtesting import ResultsDatabase
db = ResultsDatabase()
# Top 20 Faktoren nach Sharpe Ratio
top_factors = db.get_top_factors('sharpe_ratio', limit=20)
# Performance-Historie für Faktor
perf = db.get_factor_performance('Momentum_8Bar')
# Loop-Zusammenfassung
loops = db.get_loop_summary()
# Aggregierte Statistiken
stats = db.get_aggregate_stats()
Risk Reports (runs/)
Inhalt:
- Portfolio-Volatilität
- Sharpe Ratio
- Diversifikations-Ratio
- Max Drawdown
- Limit-Checks (Position Size, Leverage, Drawdown)
- Korrelationsmatrix
🔧 Verwendung
1. Backtest durchführen
from rdagent.components.backtesting import FactorBacktester, ResultsDatabase
# Backtester initialisieren
backtester = FactorBacktester()
db = ResultsDatabase()
# Faktor-Daten laden
factor_values = pd.Series(...) # Faktorwerte
forward_returns = pd.Series(...) # Forward Returns
# Backtest durchführen
metrics = backtester.run_backtest(
factor_values=factor_values,
forward_returns=forward_returns,
factor_name="MyFactor"
)
# In Datenbank speichern
db.add_backtest_run(
factor_name="MyFactor",
metrics=metrics,
returns=...,
equity_curve=...
)
2. Portfolio-Optimierung
from rdagent.components.backtesting import PortfolioOptimizer, CorrelationAnalyzer
# Korrelationsmatrix
corr_analyzer = CorrelationAnalyzer()
corr_matrix = corr_analyzer.calculate_correlation_matrix(factor_returns)
# Optimierung
optimizer = PortfolioOptimizer()
weights = optimizer.mean_variance_optimization(
expected_returns=expected_returns,
cov_matrix=cov_matrix
)
# Speichern
optimizer.save_optimization_results(weights, factor_names, 'mean_variance')
3. Risiko-Bericht
from rdagent.components.backtesting import AdvancedRiskManager
risk_manager = AdvancedRiskManager()
report = risk_manager.generate_risk_report(
factor_returns=factor_returns,
portfolio_weights=weights
)
print(f"Sharpe: {report['sharpe_ratio']:.2f}")
print(f"Alle Limits OK: {report['all_limits_ok']}")
📈 Export
JSON Export
db.export_to_json("results/db/full_export.json")
Inhalt:
- Aggregierte Statistiken
- Top-Faktoren
- Loop-Zusammenfassung
- Export-Datum
🎯 Ziel-Metriken
| Metrik | Ziel | Minimum |
|---|---|---|
| IC | > 0.05 | > 0.02 |
| ICIR | > 2.0 | > 1.0 |
| Sharpe Ratio | > 2.0 | > 1.0 |
| Max Drawdown | < 15% | < 25% |
| Win Rate | > 55% | > 45% |
| Annualized Return | > 10% | > 5% |
📝 Dokumentation
Jeder Backtest wird automatisch dokumentiert mit:
- Timestamp
- Faktor-Name
- Alle Metriken
- Returns & Equity Curve
- Konfigurierte Parameter (Transaction Costs, etc.)
Manuelle Notizen:
- Erstelle
results/logs/notes_YYYYMMDD.mdfür manuelle Notizen - Dokumentiere besondere Ereignisse (Markt-Crashes, etc.)
🔒 Datenschutz
- Ergebnisse sind lokal (nicht in Git)
- Datenbank ist lokal (SQLite)
- Bei Team-Nutzung: Ergebnisse manuell teilen oder zentrale DB verwenden
🚀 Nächste Schritte
- Backtesting für alle 110 Faktoren durchführen
- Top-20 Faktoren nach IC/Sharpe auswählen
- Portfolio-Optimierung durchführen
- 4 Wochen Paper-Trading
- Live-Performance dokumentieren
Stand: April 2026 Version: 1.0