ÎncepețiÎncepe gratuit

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

Vezi cursul

Instrucțiuni pentru exercițiu

  • Creează un vector numit grid folosind seq(), care începe de la 0, se termină la 1 și are un increment de 0,01.
  • Inițializează un vector gol vsharpe cu aceeași lungime ca grid. 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ă din grid. Prima comandă din buclă selectează al i-lea element din grid și îl stochează în obiectul weight, care se modifică la fiecare iterație.
  • Vrei să vezi cum se schimbă randamentul portofoliului odată cu modificarea ponderii. Creează un obiect preturns egal cu suma dintre weight înmulțit cu returns_equities și (1-weight) înmulțit cu returns_bonds.
  • Apoi, înlocuiește valorile NA din vsharpe cu indicele Sharpe anualizat (SharpeRatio.annualized()) al lui preturns.
  • 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)
Editează și rulează codul