ПочатиПочніть безкоштовно

Оптимізація за один період

Є дві функції для запуску оптимізації: optimize.portfolio() і optimize.portfolio.rebalancing(). У цій вправі ми зосередимося на оптимізації за один період, а в наступній використаємо optimize.portfolio.rebalancing() для оптимізації з періодичним ребалансуванням. optimize.portfolio() підтримує оптимізацію за один період. Ключові аргументи: R — прибутковості активів, portfolio — об'єкт специфікації портфеля, а optimize_method — метод оптимізації для розв'язання задачі. У багатьох випадках корисно вказати trace = TRUE, щоб зберігати додаткову інформацію для кожної ітерації/спроби оптимізації.

Підтримувані методи оптимізації:

  • DEoptim: диференційна еволюція
  • random: випадкові портфелі
  • GenSA: узагальнений імітаційний відпал
  • pso: оптимізація роєм частинок
  • ROI: R Optimization Infrastructure для лінійних і квадратичних розв'язувачів програмування

Вибір методу оптимізації має залежати від типу задачі, яку ви розв'язуєте. Наприклад, задачу, яку можна сформулювати як квадратичне програмування, слід розв'язувати квадратичним розв'язувачем, тоді як неконвексну задачу варто розв'язувати глобальним методом, таким як DEoptim.

У цій вправі ми визначимо задачу оптимізації портфеля для максимізації середньої прибутковості та мінімізації стандартного відхилення портфеля з бюджетом ризику за стандартним відхиленням, де мінімальна частка ризику — 5%, а максимальна — 10%, за умов повної інвестованості та лише довгих позицій. Ціль за бюджетом ризику потребує глобального розв'язувача, тому ми розв'яжемо задачу за допомогою випадкових портфелів. Набір випадкових портфелів rp згенеровано з використанням 500 перестановок для цієї вправи.

Ця вправа є частиною курсу

Середній рівень аналізу портфеля в R

Переглянути курс

Інструкції до вправи

Специфікацію портфеля вже створено й названо port_spec. Також у вашому робочому середовищі є прибутковості asset_returns.

  • Запустіть оптимізацію за один період із trace встановленим у TRUE, використовуючи "random" як метод оптимізації. Присвойте результат змінній opt.
  • Виведіть результат оптимізації.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.


# 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
Редагувати та запускати код