Kom igångKom igång gratis

Drivkraft 2: Valet av portföljvikter

Investerare kan optimera valet av vikt för att uppnå den högsta riskjusterade avkastningen, mätt som portföljens Sharpe-kvot.

I det särskilda fallet där hela portföljvärdet investeras i enbart två tillgångar finns det bara en vikt att bestämma, eftersom vikten på den andra tillgången är ett minus vikten på den första.

Låt oss göra detta för en portfölj investerad i amerikanska aktier och amerikanska obligationer. Vi använder en brute force-metod där vi testar ett stort antal möjliga vikter och behåller den vikt som ger det högsta värdet på portföljens Sharpe-kvot (med antagandet om en riskfri ränta på noll).

Den här övningen är en del av kursen

Introduktion till portföljanalys i R

Visa kurs

Övningsinstruktioner

  • Skapa en vektor kallad grid med hjälp av seq() som börjar på 0, slutar på 1 och ökar med steg om 0,01.
  • Initiera en tom vektor vsharpe med samma längd som grid. Ett vanligt sätt att göra detta är att skapa en vektor med NA-värden med funktionen rep(). Du ersätter dessa NA-värden i loopen som du skapar i nästa steg.
  • I for-loopen beräknar du Sharpe-kvoten för var och en av de möjliga vikterna i grid. Det första kommandot i for-loopen väljer det i:te elementet i grid och lagrar det i objektet weight, som ändras i varje iteration.
  • Du vill se hur portföljens avkastning förändras när vikten varierar. Skapa ett objekt preturns som är lika med summan av weight gånger returns_equities och (1-weight) gånger returns_bonds.
  • Ersätt sedan NA-värdena i vsharpe med den annualiserade Sharpe-kvoten (SharpeRatio.annualized()) för preturns.
  • Fyll i plottfunktionen där möjliga vikter (grid) plottas på x-axeln och Sharpe-kvoterna på y-axeln.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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)
Redigera och kör kod