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
Övningsinstruktioner
- Skapa ett portföljspecifikationsobjekt med tillgångsnamnen från datamängden
index_returnsoch namnge objektetport_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")