Optymalizacja jednookresowa
Do uruchamiania optymalizacji służą dwie funkcje: optimize.portfolio() i optimize.portfolio.rebalancing(). To ćwiczenie skupia się na optymalizacji jednookresowej, a kolejne wykorzysta optimize.portfolio.rebalancing() do optymalizacji z okresowym rebalansowaniem. Funkcja optimize.portfolio() obsługuje optymalizację jednookresową. Do kluczowych argumentów należą: R – stopy zwrotu aktywów, portfolio – obiekt specyfikacji portfela oraz optimize_method – metoda optymalizacji używana do rozwiązania problemu. W wielu przypadkach warto ustawić trace = TRUE, aby zapisywać dodatkowe informacje dla każdej iteracji lub próby optymalizacji.
Obsługiwane są następujące metody optymalizacji:
DEoptim: ewolucja różniczkowarandom: losowe portfeleGenSA: uogólnione symulowane wyżarzaniepso: optymalizacja rojem cząstekROI: R Optimization Infrastructure – solwery programowania liniowego i kwadratowego
Wybór metody optymalizacji powinien zależeć od rodzaju rozwiązywanego problemu. Na przykład problem, który można sformułować jako programowanie kwadratowe, należy rozwiązać odpowiednim solwerem kwadratowym, natomiast problem nienukwypukły – globalnym solwerem, takim jak DEoptim.
W tym ćwiczeniu zdefiniujemy problem optymalizacji portfela w taki sposób, aby maksymalizować średnią stopę zwrotu i minimalizować odchylenie standardowe portfela z budżetem ryzyka opartym na odchyleniu standardowym – minimalny udział procentowy ryzyka wynosi 5%, a maksymalny 10% – przy ograniczeniach pełnego zainwestowania i zakazu krótkiej sprzedaży. Cel w postaci budżetu ryzyka wymaga globalnego solwera, dlatego problem rozwiążemy za pomocą losowych portfeli. Zbiór losowych portfeli rp jest generowany przy użyciu 500 permutacji.
To ćwiczenie jest częścią kursu
Analiza portfela – poziom średniozaawansowany w R
Instrukcje do ćwiczenia
Specyfikacja portfela została już utworzona i nosi nazwę port_spec. W twoim środowisku dostępne są również stopy zwrotu asset_returns.
- Uruchom optymalizację jednookresową z parametrem
traceustawionym naTRUE, używając"random"jako metody optymalizacji. Przypisz wynik optymalizacji do zmiennej o nazwieopt. - Wyświetl wynik optymalizacji.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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