Optimalisatie voor één periode
Er zijn twee functies om de optimalisatie uit te voeren: optimize.portfolio() en optimize.portfolio.rebalancing(). Deze oefening richt zich op optimalisatie voor één periode en in de volgende oefening gebruik je optimize.portfolio.rebalancing() voor optimalisatie met periodieke herbalancering. optimize.portfolio() ondersteunt optimalisatie voor één periode. Belangrijke argumenten zijn R voor de rendementen van de activa, portfolio voor het portfolio-specificatieobject, en optimize_method om de optimalisatiemethode te kiezen waarmee je het probleem oplost. In veel gevallen is het handig om trace = TRUE te gebruiken om extra informatie op te slaan voor elke iteratie/proef van de optimalisatie.
De volgende optimalisatiemethoden worden ondersteund:
DEoptim: Differential evolutionrandom: Willekeurige portefeuillesGenSA: Generalized Simulated Annealingpso: Particle swarm optimizationROI: R Optimization Infrastructure voor lineaire en kwadratische programmeringsoplossers
De optimalisatiemethode die je kiest, hangt af van het type probleem dat je oplost. Een probleem dat als een kwadratisch programmeringsprobleem kan worden geformuleerd, los je bijvoorbeeld op met een kwadratische programmeeroplosser, terwijl een niet-convex probleem moet worden opgelost met een globale oplosser zoals DEoptim.
In deze oefening definiëren we het portfolio-optimalisatieprobleem om het gemiddelde rendement te maximaliseren en de standaardafwijking van de portefeuille te minimaliseren met een risicobudget op basis van standaardafwijking, waarbij het minimale percentage risico 5% is en het maximale percentage risico 10%, onder de voorwaarden van volledig geïnvesteerd en alleen long-posities. De risicobudgetdoelstelling vereist een globale oplosser, dus lossen we het probleem op met willekeurige portefeuilles. De set willekeurige portefeuilles, rp, wordt voor deze oefening gegenereerd met 500 permutaties.
Deze oefening maakt deel uit van de cursus
Gevorderde portefeuilleanalyse in R
Oefeninstructies
De portfolio-specificatie is al aangemaakt en heet port_spec. In je werkruimte staan ook de rendementen, asset_returns.
- Voer een optimalisatie voor één periode uit met
traceopTRUEen gebruik"random"als optimalisatiemethode. Ken de output van de optimalisatie toe aan een variabeleopt. - Print de output van de optimalisatie.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Run a single period optimization using random portfolios as the optimization method
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = ___, rp = rp, trace = TRUE)
# Print the output of the single-period optimization