Aan de slagGa gratis aan de slag

Maximaliseer een kwadratische nutsfunctie

In de video over uitdagingen bij portefeuille-optimalisatie zag je hoe je een kwadratisch nutsoptimalisatieprobleem oplost met het pakket quadprog. In deze oefening leer je hoe je een kwadratisch nutsprobleem oplost met het PortfolioAnalytics-pakket. Onthoud dat de kwadratische nutsformulering twee termen heeft: één voor het gemiddelde rendement van de portefeuille en één voor de variantie van de portefeuille, met een risicomijdingsparameter lambda.

Deze oefening maakt deel uit van de cursus

Gevorderde portefeuilleanalyse in R

Cursus bekijken

Oefeninstructies

  • Maak een portefeuillespecificatieobject met de activa-namen uit de index_returns-gegevensset en noem dit object port_spec.
  • Voeg een full investment-constraint toe zodat de gewichten optellen tot 1 aan het port_spec-object.
  • Voeg een long only-constraint toe zodat het gewicht van een activum tussen 0 en 1 ligt aan het port_spec-object.
  • Voeg een doelstelling toe om het gemiddelde portefeuillerendement te maximaliseren aan het port_spec-object.
  • Voeg een doelstelling toe om de portefeuillevariantie te minimaliseren aan het port_spec-object. Zet de risicomijding op 10.
  • Voer de optimalisatie uit. Dit probleem kan worden opgelost met een kwadratische programmeeroplosser, dus specificeer optimize_method = "ROI"

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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")
Code bewerken en uitvoeren