Recap: das aktuelle Euro-Modell
Stand: Lock euro-v0.5.0 @ 3d72209 (Intervention euro-shortgov-to-longgov-budget), Daten bis 2026-08-31.
Das Modell verteilt Geld jeden Monat auf fünf Euro-Bausteine: Cash, Bund 2 J., Bund 10 J., Gold und DAX. Es gibt dabei nicht jedem Baustein gleich viel Geld, sondern gleich viel Risiko, angepasst durch feste Risiko-Budgets und einen Trendfilter. Jede Änderung wird rückwirkend 2002–2026 getestet und nur übernommen, wenn sie den bisherigen Lock in allen Prüfregeln schlägt.
Alle Werte stammen aus dem Code (dalio_forecast/risk_parity.py, euro/config.py, euro/data.py, euro/gate.py, scripts/run_euro_baseline.py) und aus results/portfolio_lock_euro.json bzw. results/sleeves_euro.json. Keine Anlageberatung.
Aktueller Stand
Lock euro-v0.5.0
Gewichte (weekly-sleeves-1102, Rebalancing 2026-08-31)
Gewichte sind Modell-Output, keine Prognose und keine Anlageberatung.
results/portfolio_lock_euro.json (reference, absolute)results/sleeves_euro.json (weekly-sleeves-1102)scripts/run_euro_lock.py
1. Daten & Universum
Klartext-Formel: Monatsrenditen der 5 Bausteine; Cash-Rendite = Jahreszins in % / 1200.
| Name | Wert | Bedeutung |
|---|---|---|
broad_equity | DAX TR (^GDAXI) | Aktien |
short_gov | synth Bund 2J (BBK Svensson) | kurze Bundesanleihe, synthetisch aus Rendite |
long_gov | synth Bund 10J (BBK Svensson) | lange Bundesanleihe, synthetisch aus Rendite |
gold | WB Gold USD / ECB EURUSD | Gold in Euro = Gold USD / EURUSD |
cash | EONIA 1999-01..2019-09, €STR ab 2019-10 (Euribor nur vor 1999, im Fenster ungenutzt) | risikoloser Zins |
Takt | monatlich (Monatsende) | ein Rebalancing pro Monat |
Fenster OOS | 2002-02-28 … 2026-08-31, n = 295 | Testzeitraum ohne Blick in die Zukunft |
Alle Reihen sind in Euro; der Testzeitraum beginnt 2002, weil vorher 36 Monate Historie nötig sind.
Unklar/Hinweis: Ob der Cash-Satz eines Monats Monatsmittel oder Monatsendwert ist, ist im gelesenen Code (euro/data.py) nicht festgelegt.
- EZB Data Portal: €STR (EST.B.EU000A2X2A25.WT)
- EZB Data Portal: EONIA (EON.D.EONIA_TO.RATE)
- EZB Data Portal: Euribor 3M (FM.M.U2.EUR.RT.MM.EURIBOR3MD_.HSTA), nur vor 1999
- EZB Data Portal: Wechselkurs USD/EUR (EXR.M.USD.EUR.SP00.A)
- Bundesbank: Rendite Bund 2 J. (BBSIS.M.I.ZST.ZI.EUR.S1311.B.A604.R02XX.R.A.A._Z._Z.A)
- Bundesbank: Rendite Bund 10 J. (BBSIS.M.I.ZST.ZI.EUR.S1311.B.A604.R10XX.R.A.A._Z._Z.A)
- Weltbank Pink Sheet: Rohstoffpreise monatlich (Gold USD/oz), xlsx
- Yahoo Finance: DAX (^GDAXI)
euro/data.pyresults/portfolio_lock_euro.json
2. Renditen & Überschuss über Cash
Klartext-Formel: Anleihe-Rendite = Zins/12 − Duration × Zinsänderung + ½ Konvexität × Zinsänderung²; Überschuss = Rendite − Cash.
| Name | Wert | Bedeutung |
|---|---|---|
Rendite-Art | einfach: P_t / P_{t−1} − 1 | für DAX und Gold |
D, C | aus y_{t−1}, Laufzeit 2 bzw. 10 J. | Duration und Konvexität einer Par-Anleihe |
Rolldown | keiner | Anleihe wird monatlich mit konstanter Laufzeit neu gekauft |
Für Trendfilter und Bewertung zählt nur, was ein Baustein mehr als Cash verdient hat.
- Svensson (1994): Estimating and Interpreting Forward Interest Rates, NBER w4871 (Zinskurvenmodell der Bundesbank-Renditen)
- Duration (Überblick)
- Konvexität (Überblick)
euro/data.py (bond_month_return, synth_bond_returns)dalio_forecast/risk_parity.py (build_return_panel)
3. Kovarianz: EWMA + Ledoit-Wolf
Klartext-Formel: S = exponentiell gewichtete Kovarianz der letzten 36 Monate (neueste zählen mehr); Σ = Mischung aus S und nur ihrer Diagonale, mal 12 (annualisiert).
| Name | Wert | Bedeutung |
|---|---|---|
LOOKBACK T | 36 Monate | Fenster endet im Vormonat t−1 |
λ (EWMA) | 0,97 | Halbwertszeit ≈ 23 Monate |
Shrinkage-Ziel | diagonal_D | Korrelationen werden Richtung 0 gezogen |
δ | analytisch je Monat, in [0, 1] | Stärke der Glättung (Ledoit-Wolf) |
x̃ | Renditen minus Fenster-Mittelwert | Abweichungen |
Das Modell schätzt jeden Monat neu, wie stark die Bausteine schwanken und zusammenhängen.
- J.P. Morgan/Reuters (1996): RiskMetrics Technical Document (EWMA)
- Ledoit & Wolf (2004): A well-conditioned estimator for large-dimensional covariance matrices, DOI
dalio_forecast/risk_parity.py (ewma_sample_covariance, ledoit_wolf_diagonal)euro/config.py (EURO_EWMA_LAMBDA)
4. Trendfilter
Klartext-Formel: Liegt die 12-Monats-Rendite eines Bausteins unter der von Cash, wird sein Budget halbiert; Cash immer ×1.
| Name | Wert | Bedeutung |
|---|---|---|
TREND_LOOKBACK | 12 Monate | Zeilen t−12 … t−1, kein Blick auf Monat t |
TREND_BUDGET_MULT | 0,5 | Faktor für Bausteine im Abwärtstrend |
Cash | immer 1 | Cash wird nie gekürzt |
Was zuletzt schlechter als Cash lief, bekommt vorübergehend weniger Risiko.
- Moskowitz, Ooi & Pedersen (2012): Time Series Momentum, DOI
dalio_forecast/risk_parity.py (trend_budgets, TREND_LOOKBACK, TREND_BUDGET_MULT)
5. Risiko-Budgets
Klartext-Formel: Budget = Trendfaktor × fester Faktor × Inflationsfaktor, danach auf Summe 1 normiert.
| Name | Wert | Bedeutung |
|---|---|---|
Gold | ×1,5 | fester Zuschlag (euro-v0.3.0) |
long_gov | ×1,5 | fester Zuschlag (euro-v0.5.0) |
short_gov | ×0,5 | fester Abschlag (euro-v0.5.0) |
DAX, Cash | ×1 | kein fester Faktor |
Inflationsschnitt | long_gov ×0,5 bei HICP-yoy > 3,0 % | Inflation 2 Monate verzögert (Veröffentlichung); im Regime long_gov gesamt ×0,75 |
Reihenfolge | Trend → fest → HICP → normieren | laut scripts/run_euro_baseline.py |
Die Budgets sagen, welchen Anteil am Gesamtrisiko jeder Baustein tragen soll.
- Bridgewater: The All Weather Story (Risiko nach Wachstums-/Inflationsumfeldern verteilen)
- HICP-Reihe (FRED CP0000EZ19M086NEST, CSV), wie im Code verwendet
- Eurostat: HICP-Methodik
euro/config.py (EURO_BUDGET_MULT, EURO_INFLATION_CUT)scripts/run_euro_baseline.py (run)
6. Risk-Parity-Löser
Klartext-Formel: Gewichte so wählen, dass jeder Risikobeitrag RC_i im Verhältnis zu seinem Budget b_i steht (Anteil RC_i/σ_p ≈ b_i).
| Name | Wert | Bedeutung |
|---|---|---|
Cash-Vol-Floor | 2,5 % p.a. | Cash-Schwankung in Σ mindestens 2,5 %, Korrelationen bleiben; sonst landete fast alles in Cash |
EQUITY_CAP | 0,20 | DAX höchstens 20 % Gewicht |
Methode | SLSQP, Start 1/n, ftol 1e-9, max. 250 Iterationen | numerische Optimierung |
Fehlschlag | Vormonatsgewichte | falls der Löser nicht konvergiert |
n | 5 | Zahl der Bausteine |
Ergebnis: riskante Bausteine bekommen wenig Gewicht, ruhige viel – aber jeder trägt seinen Budget-Anteil am Risiko.
Unklar/Hinweis: Der Floor wirkt auf die Cash-Schwankung in Σ, nicht als Mindestgewicht.
- Maillard, Roncalli & Teïletche (2010): The Properties of Equally Weighted Risk Contribution Portfolios, DOI
- Risk Parity (Überblick)
- SciPy: minimize(method='SLSQP')
dalio_forecast/risk_parity.py (equal_rc_slsqp, apply_cash_vol_floor, EQUITY_CAP)
7. Kosten
Klartext-Formel: Netto-Rendite = Portfolio-Rendite − 5 bp × Umschichtung (Summe der Gewichtsänderungen).
| Name | Wert | Bedeutung |
|---|---|---|
FEE_RATE | 0,0005 (5 bp) | Kosten pro Einheit Umschichtung |
Turnover Ø | 6,79 % / Monat | durchschnittliche Umschichtung des Locks |
Jede Umschichtung kostet etwas; das ist in allen Kennzahlen schon abgezogen.
dalio_forecast/risk_parity.py (_apply_fee, FEE_RATE)results/portfolio_lock_euro.json (turnover_month_mean)
8. Bewertung & Gate v2
Klartext-Formel: Excess-Sharpe = Überschuss über Cash pro Jahr / Schwankung des Überschusses pro Jahr.
| Name | Wert | Bedeutung |
|---|---|---|
H1 / H2 | 2002-02-28..2014-04-30 / 2014-05-31..2026-08-31 | Hälften des Testzeitraums |
G1 | SE > Lock gesamt, in H1 und H2 | strikt besser in beiden Hälften |
G2 | geo. Überschuss ≥ 0,5 % p.a. und ≥ 0,75 × Lock | genug echte Mehrrendite |
G3 | Vol zwischen 0,83 % und 2,49 % | ±50 % um die Euro-Baseline-Vol |
G4 | Cash-Anteil Ø ≤ 0,40 | nicht nur in Cash flüchten |
G5 | MaxDD ≤ Lock × 1,10 | Verlust höchstens 10 % schlimmer |
G6 | SE > Phase-Gewichtung und > Inv-Vol | einfache Vergleichsportfolios schlagen |
1/N | nur berichtet (gap_to_1n) | blockiert nicht |
Ein Versuch wird nur übernommen, wenn alle sechs Prüfregeln erfüllt sind.
- Sharpe (1966): Mutual Fund Performance, DOI
- Sharpe (1994): The Sharpe Ratio, DOI
- Sharpe (1994): The Sharpe Ratio, frei lesbar (Stanford)
dalio_forecast/risk_parity.py (sharpe_excess_ann, excess_geo_ann)euro/gate.py (gate_decision_euro)results/portfolio_lock_euro.json (gate_thresholds)
Modell-Output, keine Anlageberatung.
Stand: 04.11.2026 12:02 (Wien), statische Kopie