Faktor 2: Volba vah portfolia
Investoři mohou optimalizovat volbu vah tak, aby dosáhli nejvyššího rizikově upraveného výnosu — měřeného Sharpovým poměrem portfolia.
V případě, kdy celková hodnota portfolia směřuje pouze do dvou aktiv, stačí určit jedinou váhu: váha druhého aktiva se rovná jedné minus váha prvního aktiva.
Vyzkoušíme si to na portfoliu složeném z amerických akcií a amerických dluhopisů. Použijeme přístup hrubé síly — otestujeme velké množství možných vah a ponecháme tu, která přináší nejvyšší hodnotu Sharpova poměru portfolia (za předpokladu nulové bezrizikové sazby).
Toto cvičení je součástí kurzu
Úvod do analýzy portfolia v R
Pokyny k cvičení
- Vytvoř vektor
gridpomocí funkceseq(), který začíná na 0, končí na 1 a má krok 0,01. - Inicializuj prázdný vektor
vsharpese stejnou délkou jakogrid. Oblíbený způsob je vytvořit vektor obsahující hodnoty NA pomocí funkce rep(). Tyto hodnoty NA nahradíš v cyklu, který vytvoříš v dalším kroku. - V cyklu
forvypočítej Sharpův poměr pro každou z možných vah vgrid. První příkaz uvnitř cyklu vybere i-tý prvek zgrida uloží ho do objektuweight, který se při každé iteraci mění. - Sleduj, jak se výnos portfolia mění se změnou váhy. Vytvoř objekt
preturnsjako součetweightkrátreturns_equitiesa(1-weight)krátreturns_bonds. - Poté nahraď hodnoty NA ve
vsharpeanualizovaným Sharpovým poměrem (funkceSharpeRatio.annualized()) propreturns. - Doplň funkci pro vykreslení grafu, kde na ose x jsou vyneseny možné váhy (
grid) a na ose y hodnoty Sharpova poměru.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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)