Dalio Euro-Modell
LockGewichteVersucheRecapData

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

Excess-Sharpe0,947
H11,186
H20,720
MaxDD0,052
Vol p.a.2,00 %
Cash Ø0,347
geo. Überschuss1,80 %
gap_to_1n+0,093

Gewichte (weekly-sleeves-1102, Rebalancing 2026-08-31)

Cash37,7 %
Bund 2 J.33,0 %
Bund 10 J.14,3 %
Gold7,8 %
DAX7,2 %

Gewichte sind Modell-Output, keine Prognose und keine Anlageberatung.

Quellen
  • results/portfolio_lock_euro.json (reference, absolute)
  • results/sleeves_euro.json (weekly-sleeves-1102)
  • scripts/run_euro_lock.py

1. Daten & Universum

$$r_t=\big(r^{\text{DAX}}_t,\ r^{\text{Bund2}}_t,\ r^{\text{Bund10}}_t,\ r^{\text{Gold}}_t,\ r^{\text{Cash}}_t\big),\qquad r^{\text{Cash}}_t=\frac{\text{Satz}_t\,[\%\ \text{p.a.}]}{1200}$$

Klartext-Formel: Monatsrenditen der 5 Bausteine; Cash-Rendite = Jahreszins in % / 1200.

NameWertBedeutung
broad_equityDAX TR (^GDAXI)Aktien
short_govsynth Bund 2J (BBK Svensson)kurze Bundesanleihe, synthetisch aus Rendite
long_govsynth Bund 10J (BBK Svensson)lange Bundesanleihe, synthetisch aus Rendite
goldWB Gold USD / ECB EURUSDGold in Euro = Gold USD / EURUSD
cashEONIA 1999-01..2019-09, €STR ab 2019-10 (Euribor nur vor 1999, im Fenster ungenutzt)risikoloser Zins
Taktmonatlich (Monatsende)ein Rebalancing pro Monat
Fenster OOS2002-02-28 … 2026-08-31, n = 295Testzeitraum 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.

2. Renditen & Überschuss über Cash

$$r^{\text{Bund}}_t=\frac{y_{t-1}}{12}-D\,\Delta y_t+\tfrac12 C\,(\Delta y_t)^2,\qquad x_{i,t}=r_{i,t}-r^{\text{Cash}}_t$$

Klartext-Formel: Anleihe-Rendite = Zins/12 − Duration × Zinsänderung + ½ Konvexität × Zinsänderung²; Überschuss = Rendite − Cash.

NameWertBedeutung
Rendite-Arteinfach: P_t / P_{t−1} − 1für DAX und Gold
D, Caus y_{t−1}, Laufzeit 2 bzw. 10 J.Duration und Konvexität einer Par-Anleihe
RolldownkeinerAnleihe wird monatlich mit konstanter Laufzeit neu gekauft

Für Trendfilter und Bewertung zählt nur, was ein Baustein mehr als Cash verdient hat.

3. Kovarianz: EWMA + Ledoit-Wolf

$$S=\sum_{k=0}^{T-1}\frac{(1-\lambda)\lambda^{k}}{1-\lambda^{T}}\,\tilde x_{T-k}\tilde x_{T-k}^{\top},\qquad \Sigma=12\,\big[\delta\,\mathrm{diag}(S)+(1-\delta)\,S\big]$$

Klartext-Formel: S = exponentiell gewichtete Kovarianz der letzten 36 Monate (neueste zählen mehr); Σ = Mischung aus S und nur ihrer Diagonale, mal 12 (annualisiert).

NameWertBedeutung
LOOKBACK T36 MonateFenster endet im Vormonat t−1
λ (EWMA)0,97Halbwertszeit ≈ 23 Monate
Shrinkage-Zieldiagonal_DKorrelationen werden Richtung 0 gezogen
δanalytisch je Monat, in [0, 1]Stärke der Glättung (Ledoit-Wolf)
x̃Renditen minus Fenster-MittelwertAbweichungen

Das Modell schätzt jeden Monat neu, wie stark die Bausteine schwanken und zusammenhängen.

Quellen

4. Trendfilter

$$g_i=\prod_{s=t-12}^{t-1}(1+r_{i,s})-1,\qquad m^{\text{trend}}_i=\begin{cases}0{,}5 & g_i-g_{\text{Cash}}<0\\ 1 & \text{sonst}\end{cases}$$

Klartext-Formel: Liegt die 12-Monats-Rendite eines Bausteins unter der von Cash, wird sein Budget halbiert; Cash immer ×1.

NameWertBedeutung
TREND_LOOKBACK12 MonateZeilen t−12 … t−1, kein Blick auf Monat t
TREND_BUDGET_MULT0,5Faktor für Bausteine im Abwärtstrend
Cashimmer 1Cash wird nie gekürzt

Was zuletzt schlechter als Cash lief, bekommt vorübergehend weniger Risiko.

Quellen

5. Risiko-Budgets

$$b_i=\frac{\tfrac15\,m^{\text{trend}}_i\,m^{\text{fix}}_i\,m^{\text{HICP}}_i}{\sum_j \tfrac15\,m^{\text{trend}}_j\,m^{\text{fix}}_j\,m^{\text{HICP}}_j},\qquad m^{\text{HICP}}_{\text{long\_gov}}=0{,}5\ \text{falls HICP-yoy}_{t-2}>3\,\%$$

Klartext-Formel: Budget = Trendfaktor × fester Faktor × Inflationsfaktor, danach auf Summe 1 normiert.

NameWertBedeutung
Gold×1,5fester Zuschlag (euro-v0.3.0)
long_gov×1,5fester Zuschlag (euro-v0.5.0)
short_gov×0,5fester Abschlag (euro-v0.5.0)
DAX, Cash×1kein fester Faktor
Inflationsschnittlong_gov ×0,5 bei HICP-yoy > 3,0 %Inflation 2 Monate verzögert (Veröffentlichung); im Regime long_gov gesamt ×0,75
ReihenfolgeTrend → fest → HICP → normierenlaut scripts/run_euro_baseline.py

Die Budgets sagen, welchen Anteil am Gesamtrisiko jeder Baustein tragen soll.

6. Risk-Parity-Löser

$$\min_{w}\sum_{i,j}\Big(\frac{RC_i}{n\,b_i}-\frac{RC_j}{n\,b_j}\Big)^2,\quad RC_i=\frac{w_i(\Sigma w)_i}{\sqrt{w^{\top}\Sigma w}},\quad \sum_i w_i=1,\ w_i\ge0,\ w_{\text{DAX}}\le0{,}20$$

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).

NameWertBedeutung
Cash-Vol-Floor2,5 % p.a.Cash-Schwankung in Σ mindestens 2,5 %, Korrelationen bleiben; sonst landete fast alles in Cash
EQUITY_CAP0,20DAX höchstens 20 % Gewicht
MethodeSLSQP, Start 1/n, ftol 1e-9, max. 250 Iterationennumerische Optimierung
FehlschlagVormonatsgewichtefalls der Löser nicht konvergiert
n5Zahl 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.

7. Kosten

$$r^{\text{netto}}_t=w_t^{\top}r_t-\text{fee}\cdot\sum_i\lvert w_{i,t}-w_{i,t-1}\rvert$$

Klartext-Formel: Netto-Rendite = Portfolio-Rendite − 5 bp × Umschichtung (Summe der Gewichtsänderungen).

NameWertBedeutung
FEE_RATE0,0005 (5 bp)Kosten pro Einheit Umschichtung
Turnover Ø6,79 % / Monatdurchschnittliche Umschichtung des Locks

Jede Umschichtung kostet etwas; das ist in allen Kennzahlen schon abgezogen.

Quellen
  • dalio_forecast/risk_parity.py (_apply_fee, FEE_RATE)
  • results/portfolio_lock_euro.json (turnover_month_mean)

8. Bewertung & Gate v2

$$SE=\frac{12\,\overline{(r-r^{\text{Cash}})}}{\sqrt{12}\;\mathrm{sd}(r-r^{\text{Cash}})},\qquad \text{gap\_to\_1n}=SE-SE_{1/N}$$

Klartext-Formel: Excess-Sharpe = Überschuss über Cash pro Jahr / Schwankung des Überschusses pro Jahr.

NameWertBedeutung
H1 / H22002-02-28..2014-04-30 / 2014-05-31..2026-08-31Hälften des Testzeitraums
G1SE > Lock gesamt, in H1 und H2strikt besser in beiden Hälften
G2geo. Überschuss ≥ 0,5 % p.a. und ≥ 0,75 × Lockgenug echte Mehrrendite
G3Vol zwischen 0,83 % und 2,49 %±50 % um die Euro-Baseline-Vol
G4Cash-Anteil Ø ≤ 0,40nicht nur in Cash flüchten
G5MaxDD ≤ Lock × 1,10Verlust höchstens 10 % schlimmer
G6SE > Phase-Gewichtung und > Inv-Voleinfache Vergleichsportfolios schlagen
1/Nnur berichtet (gap_to_1n)blockiert nicht

Ein Versuch wird nur übernommen, wenn alle sechs Prüfregeln erfüllt sind.

Quellen

Modell-Output, keine Anlageberatung.

Stand: 04.11.2026 12:02 (Wien), statische Kopie