Maximizează funcția de utilitate pătratică
În videoclipul despre provocările optimizării portofoliului, ai văzut cum se rezolvă o problemă de optimizare a utilității pătratice cu pachetul quadprog. Acest exercițiu îți arată cum să rezolvi aceeași problemă folosind pachetul PortfolioAnalytics. Reamintește-ți că formularea utilității pătratice conține doi termeni: unul pentru randamentul mediu al portofoliului și altul pentru varianța portofoliului, ponderat cu un parametru de aversiune față de risc, lambda.
Acest exercițiu face parte din cursul
Analiză intermediară a portofoliului în R
Instrucțiuni pentru exercițiu
- Creează un obiect de specificare a portofoliului folosind numele activelor din setul de date
index_returnsși denumește obiectulport_spec. - Adaugă o constrângere de investiție integrală, astfel încât suma ponderilor să fie egală cu 1, la obiectul
port_spec. - Adaugă o constrângere de tip „numai long", astfel încât ponderea unui activ să fie între 0 și 1, la obiectul
port_spec. - Adaugă un obiectiv de maximizare a randamentului mediu al portofoliului la obiectul
port_spec. - Adaugă un obiectiv de minimizare a varianței portofoliului la obiectul
port_spec. Aversiunea față de risc trebuie setată la 10. - Rulează optimizarea. Această problemă poate fi rezolvată de un solver de programare pătratică, deci specifică
optimize_method = "ROI".
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Create the portfolio specification
port_spec <- portfolio.spec(assets = ___)
# Add a full investment constraint such that the weights sum to 1
port_spec <- add.constraint(portfolio = ___, type = ___)
# Add a long only constraint such that the weight of an asset is between 0 and 1
port_spec <- add.constraint(portfolio = ___, type = ___)
# Add an objective to maximize portfolio mean return
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)
# Add an objective to minimize portfolio variance
port_spec <- add.objective(portfolio = port_spec, type = ___, name = ___, risk_aversion = ___)
# Solve the optimization problem
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = "ROI")