Zacznij terazZacznij za darmo

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óżniczkowa
  • random: losowe portfele
  • GenSA: uogólnione symulowane wyżarzanie
  • pso: optymalizacja rojem cząstek
  • ROI: 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

Zobacz kurs

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 trace ustawionym na TRUE, używając "random" jako metody optymalizacji. Przypisz wynik optymalizacji do zmiennej o nazwie opt.
  • 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
Edytuj i uruchom kod