Factorul 2: Alegerea ponderilor portofoliului
Investitorii pot optimiza alegerea ponderilor pentru a obține cel mai mare randament ajustat la risc, măsurat prin indicele Sharpe al portofoliului.
În cazul special în care întreaga valoare a portofoliului este investită în doar două active, există o singură pondere de determinat, deoarece ponderea celui de-al doilea activ este egală cu unu minus ponderea primului activ.
Să aplicăm acest lucru pentru un portofoliu investit în acțiuni americane și obligațiuni americane. Vom folosi metoda forței brute: testăm un număr mare de ponderi posibile și o păstrăm pe cea care maximizează indicele Sharpe al portofoliului (presupunând o rată fără risc egală cu zero).
Acest exercițiu face parte din cursul
Introducere în analiza portofoliului în R
Instrucțiuni pentru exercițiu
- Creează un vector numit
gridfolosindseq(), care începe de la 0, se termină la 1 și are un increment de 0,01. - Inițializează un vector gol
vsharpecu aceeași lungime cagrid. O metodă populară este să creezi un vector cu valori NA folosind funcția rep(). Aceste valori NA vor fi înlocuite în bucla pe care o vei crea în pasul următor. - În bucla
for, vei calcula indicele Sharpe pentru fiecare pondere posibilă dingrid. Prima comandă din buclă selectează al i-lea element dingridși îl stochează în obiectulweight, care se modifică la fiecare iterație. - Vrei să vezi cum se schimbă randamentul portofoliului odată cu modificarea ponderii. Creează un obiect
preturnsegal cu suma dintreweightînmulțit cureturns_equitiesși(1-weight)înmulțit cureturns_bonds. - Apoi, înlocuiește valorile NA din
vsharpecu indicele Sharpe anualizat (SharpeRatio.annualized()) al luipreturns. - Completează funcția de grafic astfel încât ponderile posibile (
grid) să fie reprezentate pe axa x, iar indicii Sharpe pe axa y.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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)