Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Maak een vector grid met seq() die begint bij 0, eindigt bij 1, met een stapgrootte van 0,01.
  • Initialiseer een lege vector vsharpe met dezelfde lengte als grid. 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 van grid en slaat dit op in het object weight, dat bij elke iteratie verandert.
  • Je wilt zien hoe het portefeuillerendement verandert bij een veranderend gewicht. Maak een object preturns dat gelijk is aan de som van weight maal returns_equities, en (1-weight) maal returns_bonds.
  • Vervang daarna de NA's in vsharpe door de geannualiseerde Sharpe-ratio (SharpeRatio.annualized()) van preturns.
  • 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)
Code bewerken en uitvoeren