Driver 2: De keuze van portefeuillegewichten
Beleggers kunnen het gewicht optimaliseren om de hoogste risicogecorrigeerde opbrengst te behalen, gemeten met de Sharpe-ratio van de portefeuille.
In het bijzondere geval dat je de totale portefeuillewaarde in slechts twee assets belegt, is er maar één gewicht te bepalen, omdat het gewicht van de tweede asset gelijk is aan één min het gewicht van de eerste asset.
Laten we dit doen voor een portefeuille met Amerikaanse aandelen en Amerikaanse obligaties. We gebruiken een brute force-benadering: we proberen een groot aantal mogelijke gewichten en nemen het gewicht dat de hoogste waarde voor de Sharpe-ratio van de portefeuille oplevert (uitgaande van een risicovrije rente van nul).
Deze oefening maakt deel uit van de cursus
Introductie tot portefeuilleanalyse in R
Oefeninstructies
- Maak een vector
gridmetseq()die begint bij 0, eindigt bij 1, met een stapgrootte van 0,01. - Initialiseer een lege vector
vsharpemet dezelfde lengte alsgrid. Een veelgebruikte manier is een vector met NA's maken met de functie rep(). Je vervangt deze NA's in de lus die je zo maakt. - In de for-lus bereken je de Sharpe-ratio voor elk mogelijk gewicht in
grid. Het eerste commando in de for-lus selecteert het i-de element vangriden slaat dit op in het objectweight, dat bij elke iteratie verandert. - Je wilt zien hoe het portefeuillerendement verandert bij een veranderend gewicht. Maak een object
preturnsdat gelijk is aan de som vanweightmaalreturns_equities, en(1-weight)maalreturns_bonds. - Vervang daarna de NA's in
vsharpedoor de geannualiseerde Sharpe-ratio (SharpeRatio.annualized()) vanpreturns. - Vul de plotfunctie aan waarbij de mogelijke gewichten (
grid) op de x-as en de Sharpe-ratio's op de y-as worden geplot.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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)