Los een eenvoudig portefeuille-optimalisatieprobleem op
In deze eerste oefening leer je een eenvoudig portefeuille-optimalisatieprobleem op te lossen met PortfolioAnalytics. Je leert hoe je een portfoliospecificatie-object maakt, beperkingen en doelstellingen toevoegt, en het optimalisatieprobleem oplost. Het portefeuilleprobleem is het samenstellen van een minimumvariantieportefeuille met volledige-investering en alleen-long beperkingen. De doelstelling is om de portefeuillevariantie te minimaliseren. Er zijn twee beperkingen in dit probleem: de volledige-investeringsbeperking betekent dat de gewichten moeten optellen tot 1, en de alleen-long beperking betekent dat alle gewichten groter dan of gelijk aan 0 moeten zijn (dus geen shortposities toegestaan).
Deze oefening maakt deel uit van de cursus
Gevorderde portefeuilleanalyse in R
Oefeninstructies
- Maak een portfoliospecificatie-object met activanamen uit de
index_returns-gegevensset en noem het object met de portfoliospecificatieport_spec. - Voeg een volledige-investeringsbeperking toe aan het object
port_speczodat de gewichten optellen tot 1. - Voeg een alleen-long beperking toe aan het object
port_speczodat het gewicht van een actief tussen 0 en 1 ligt. - Voeg een doelstelling toe om de standaarddeviatie van de portefeuille te minimaliseren aan het object
port_spec. - Los het portefeuille-optimalisatieprobleem op met
optimize_method = "ROI". Sla de resultaten van de optimalisatie op in een object met de naamopt.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Create the portfolio specification
port_spec <- portfolio.spec(colnames(___))
# 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 minimize portfolio standard deviation
port_spec <- add.objective(portfolio = ___, type = "___", name = "___")
# Solve the optimization problem
opt <- optimize.portfolio(___, portfolio = ___, optimize_method = "___")