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
Övningsinstruktioner
- Skapa en vektor kallad
gridmed hjälp avseq()som börjar på 0, slutar på 1 och ökar med steg om 0,01. - Initiera en tom vektor
vsharpemed samma längd somgrid. 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 igridoch lagrar det i objektetweight, som ändras i varje iteration. - Du vill se hur portföljens avkastning förändras när vikten varierar. Skapa ett objekt
preturnssom är lika med summan avweightgångerreturns_equitiesoch(1-weight)gångerreturns_bonds. - Ersätt sedan NA-värdena i
vsharpemed den annualiserade Sharpe-kvoten (SharpeRatio.annualized()) förpreturns. - 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)