LoslegenKostenlos starten

Treiber 2: Die Wahl der Portfoliogewichte

Anleger können die Gewichte so optimieren, dass sie die höchste risikobereinigte Rendite erzielen, gemessen am Sharpe-Ratio des Portfolios.

Im Spezialfall, dass der gesamte Portfoliowert nur in zwei Anlagen investiert wird, gibt es nur ein einziges Gewicht zu bestimmen, denn das Gewicht der zweiten Anlage entspricht eins minus dem Gewicht der ersten Anlage.

Lass uns das für ein Portfolio aus US-Aktien und US-Anleihen tun. Wir verwenden dazu den Brute-Force-Ansatz: Wir probieren eine große Anzahl möglicher Gewichte aus und behalten das Gewicht, das den höchsten Wert für die Sharpe-Ratio des Portfolios liefert (bei angenommenem risikofreiem Zinssatz von null).

Diese Übung ist Teil des Kurses

<Kurs>Einführung in die Portfolioanalyse in R</Kurs>
Kurs ansehen

Übungsanweisungen

  • Erstelle einen Vektor namens grid mit seq(), der bei 0 beginnt, bei 1 endet und in Schritten von 0,01 erhöht wird.
  • Initialisiere den leeren Vektor vsharpe mit derselben Länge wie grid. Eine gängige Methode ist, einen Vektor mit NAs über die Funktion rep() zu erzeugen. Diese NAs ersetzt du in der Schleife, die du als Nächstes erstellst.
  • In der for-Schleife berechnest du die Sharpe-Ratio für jedes der möglichen Gewichte in grid. Der erste Befehl in der for-Schleife wählt das i-te Element von grid aus und speichert es im Objekt weight, das sich in jeder Iteration ändert.
  • Du willst sehen, wie sich die Portfoliorendite mit einem veränderten Gewicht entwickelt. Erstelle ein Objekt preturns, das der Summe aus weight mal returns_equities und (1-weight) mal returns_bonds entspricht.
  • Als Nächstes ersetzt du die NAs in vsharpe durch die annualisierte Sharpe-Ratio (SharpeRatio.annualized()) von preturns.
  • Vervollständige die Plot-Funktion, in der die potenziellen Gewichte (grid) auf der x-Achse und die Sharpe-Ratios auf der y-Achse dargestellt werden.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# Create a grid
grid <- seq(from = ___, to = ___, by = ___)

# Initialize an empty vector for Sharpe ratios
vsharpe <- rep(NA, times = ___ )

# Create a for loop to calculate Sharpe ratios
for(i in 1:length(grid)) {
    weight <- ___[i]
    preturns <- ___ * ___ + (1 - ___) * ___
    vsharpe[i] <- SharpeRatio.annualized(___)
}

# Plot weights and Sharpe ratio
plot(___, ___, xlab = "Weights", ylab= "Ann. Sharpe ratio")
abline(v = grid[vsharpe == max(vsharpe)], lty = 3)
Code bearbeiten und ausführen