Začněte nyníZačněte zdarma

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

Zobrazit kurz

Pokyny k cvičení

  • Vytvoř vektor grid pomocí funkce seq(), který začíná na 0, končí na 1 a má krok 0,01.
  • Inicializuj prázdný vektor vsharpe se stejnou délkou jako grid. 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 for vypočítej Sharpův poměr pro každou z možných vah v grid. První příkaz uvnitř cyklu vybere i-tý prvek z grid a uloží ho do objektu weight, který se při každé iteraci mění.
  • Sleduj, jak se výnos portfolia mění se změnou váhy. Vytvoř objekt preturns jako součet weight krát returns_equities a (1-weight) krát returns_bonds.
  • Poté nahraď hodnoty NA ve vsharpe anualizovaným Sharpovým poměrem (funkce SharpeRatio.annualized()) pro preturns.
  • 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)
Upravit a spustit kód