Aan de slagGa gratis aan de slag

De efficiënte grens berekenen met een raster van doeldrendementen

Zoals je hebt gezien, is één aanpak om de efficiënte grens te berekenen eerst het raster van doeldrendementen te definiëren en vervolgens, voor elk doeldrendement, de portefeuille te vinden waarvan het verwachte rendement gelijk is aan het doeldrendement met de laagst mogelijke variantie.

Maar wat is een redelijk raster van doeldrendementen? Je stelt het maximale doeldrendement in op het maximale gemiddelde rendement van de aandelen. Idealiter stel je het minimale doeldrendement in op het rendement van de minimumvariantieportefeuille. Omdat je dit rendement van de minimumvariantieportefeuille nog niet kent, maak je een raster met het minimum van de gemiddelde rendementen van alle aandelen.

In deze oefening gebruik je een for-loop om je raster van potentiële portefeuillegemiddelden, standaardafwijkingen en wegingen te berekenen.

Deze oefening maakt deel uit van de cursus

Introductie tot portefeuilleanalyse in R

Cursus bekijken

Oefeninstructies

  • Bereken de kolomgemiddelden van returns (met colMeans()), en noem dit stockmu.
  • Maak een reeks (seq()) van lengte 50, die begint bij een risicovrije rente van 1% en eindigt bij de maximumwaarde van stockmu, noem deze grid.
  • Initialiseer twee lege vectoren met dezelfde lengte als grid met rep(), waarin je de portefeuillegemiddelden en standaardafwijkingen opslaat. Noem deze vpm en vpsd.
  • Initialiseer een lege matrix van 50 rijen en 30 kolommen. Noem deze mweights. Je kunt hiervoor de functie matrix() gebruiken.
  • Maak een for-loop die begint bij de eerste waarde van grid en eindigt bij de laatste. De for-loop moet een portefeuille opt aanmaken op basis van returns met een doeldrendement van grid.
  • Bij elke iteratie vult de for-loop de vectoren vpm ($pm), vpsd ($ps) met hun respectieve waarden uit opt.
  • Sla de portefeuilleverhoudingen regel voor regel op in mweights ($pw).

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Calculate each stocks mean returns


# Create a grid of target values
grid <- seq(from = ___, to = ___, length.out = ___)

# Create empty vectors to store means and deviations
vpm <- vpsd <- 

# Create an empty matrix to store weights
mweights <- matrix(NA, 50, 30)

# Create your for loop
for(i in 1:length(grid)) {
  opt <- portfolio.optim(x = ___, pm = ___[i])
  vpm[i] <- ___$__
  vpsd[i] <- ___$__
  mweights[i, ] <- ___$__
}
Code bewerken en uitvoeren