Kom igångKom igång gratis

Maximera kvadratisk nyttofunktion

I videon om utmaningar med portföljoptimering såg du hur man löser ett kvadratiskt nyttooptimeringsproblem med paketet quadprog. Den här övningen visar hur du löser samma typ av problem med paketet PortfolioAnalytics. Kom ihåg att den kvadratiska nyttoformuleringen har två termer: en för portföljens genomsnittliga avkastning och en för portföljvariansen med en riskaversionsparameter, lambda.

Den här övningen är en del av kursen

Portföljanalys på avancerad nivå i R

Visa kurs

Övningsinstruktioner

  • Skapa ett portföljspecifikationsobjekt med tillgångsnamnen från datamängden index_returns och namnge objektet port_spec.
  • Lägg till en full investeringsbegränsning så att vikterna summerar till 1 i port_spec-objektet.
  • Lägg till en begränsning om enbart långa positioner så att vikten för varje tillgång är mellan 0 och 1 i port_spec-objektet.
  • Lägg till ett mål om att maximera portföljens genomsnittliga avkastning i port_spec-objektet.
  • Lägg till ett mål om att minimera portföljvariansen i port_spec-objektet. Riskaversionen ska sättas till 10.
  • Kör optimeringen. Det här problemet kan lösas av en kvadratisk programmeringslösare, så ange optimize_method = "ROI".

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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")
Redigera och kör kod