Jednorázová optimalizace
Pro spuštění optimalizace existují dvě funkce: optimize.portfolio() a optimize.portfolio.rebalancing(). Toto cvičení se zaměří na jednorázovou optimalizaci, v dalším cvičení pak použijeme optimize.portfolio.rebalancing() pro optimalizaci s pravidelným rebalancováním. optimize.portfolio() podporuje jednorázovou optimalizaci. Mezi klíčové argumenty patří R pro výnosy aktiv, portfolio pro objekt specifikace portfolia a optimize_method pro určení metody optimalizace použité k řešení problému. V mnoha případech je vhodné nastavit trace = TRUE, aby se ukládaly dodatečné informace pro každou iteraci/pokus optimalizace.
Podporované jsou tyto optimalizační metody:
DEoptim: Diferenciální evolucerandom: Náhodná portfoliaGenSA: Zobecněné simulované žíhánípso: Optimalizace hejnem částicROI: R Optimization Infrastructure pro solvery lineárního a kvadratického programování
Výběr optimalizační metody by měl vycházet z typu řešeného problému. Například problém, který lze formulovat jako úlohu kvadratického programování, by měl být řešen odpovídajícím solverem, zatímco nekonvexní problém by měl být řešen globálním solverem, jako je DEoptim.
V tomto cvičení definujeme optimalizační problém portfolia tak, aby maximalizoval průměrný výnos a minimalizoval směrodatnou odchylku portfolia s rizikovým budgetem směrodatné odchylky, kde minimální procentuální riziko je 5 % a maximální 10 %, a to při omezení plné investice a pouze dlouhých pozic. Cíl rizikového budgetu vyžaduje globální solver, proto problém vyřešíme pomocí náhodných portfolií. Sada náhodných portfolií rp je pro toto cvičení generována s použitím 500 permutací.
Toto cvičení je součástí kurzu
Intermediate Portfolio Analysis in R
Pokyny k cvičení
Specifikace portfolia již byla vytvořena a nese název port_spec. V pracovním prostředí máš k dispozici také výnosy asset_returns.
- Spusť jednorázovou optimalizaci s
tracenastaveným naTRUEa použij"random"jako metodu optimalizace. Výsledek optimalizace přiřaď do proměnné s názvemopt. - Vypiš výsledek optimalizace.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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