Impunerea constrângerilor asupra ponderilor
Investitorii sunt adesea supuși unor constrângeri privind valorile maxime admise pentru ponderile portofoliului. Aceste constrângeri pot fi, de fapt, un avantaj: o pondere maximă limitează concentrarea portofoliului în anumite active. Există însă și un dezavantaj – același randament țintă poate deveni imposibil de atins sau poate fi obținut doar cu prețul unei volatilități mai mari.
Reține din exercițiul anterior că funcția portfolio.optim() îți permite să setezi constrângeri asupra ponderilor prin argumentul reshigh. Acesta acceptă un vector cu ponderile maxime pentru fiecare activ.
În acest exercițiu, vei crea trei portofolii cu constrângeri diferite asupra ponderilor maxime. Este important să cunoști structura rezultatului returnat de portfolio.optim(). Această funcție creează o listă cu patru componente: (i) $pw: ponderile portofoliului, (ii) $px: randamentele portofoliului global, (iii) $pm: randamentul așteptat al portofoliului, (iv) $ps: abaterea standard a randamentelor portofoliului.
Acest exercițiu face parte din cursul
Introducere în analiza portofoliului în R
Instrucțiuni pentru exercițiu
- Creează trei vectori de ponderi maxime pentru fiecare activ (coloană) din
returns, folosind funcțiarep(). Primul vector va conține ponderi maxime de 100%, al doilea de 10%, iar al treilea de 5%. Numește-imax_weights1,max_weights2, respectivmax_weights3. - Creează un portofoliu optim cu ponderi maxime de 100%, numit
opt1. - Creează un portofoliu optim cu ponderi maxime de 10%, numit
opt2. - Creează un portofoliu optim cu ponderi maxime de 5%, numit
opt3. - Calculează câte active au o pondere mai mare de 1% în fiecare portofoliu. Accesează ponderile folosind
$pwdupă numele portofoliului. - Afișează volatilitățile (abaterile standard
$ps) ale celor trei portofolii create.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Create vectors of maximum weights
max_weights1 <- rep(1, ncol(returns))
max_weights2 <- ___
max_weights3 <- ___
# Create an optimum portfolio with max weights of 100%
opt1 <- portfolio.optim(___, reshigh = ___)
# Create an optimum portfolio with max weights of 10%
# Create an optimum portfolio with max weights of 5%
# Calculate how many assets have a weight that is greater than 1% for each portfolio
sum(opt1$pw > .01)
sum(___$pw > .01)
sum(___$pw > .01)
# Print portfolio volatilites
opt1$ps
___$__
___$__