ÎncepețiÎncepe gratuit

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

Vezi cursul

Instrucțiuni pentru exercițiu

  • Creează un obiect de specificare a portofoliului folosind numele activelor din setul de date index_returns și denumește obiectul port_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")
Editează și rulează codul