НачатьНачать бесплатно

Максимизация функции квадратичной полезности

В видео о сложностях портфельной оптимизации вы узнали, как решать задачу оптимизации квадратичной полезности с помощью пакета quadprog. В этом упражнении вы решите аналогичную задачу с использованием пакета PortfolioAnalytics. Напомним, что формулировка квадратичной полезности включает два слагаемых: одно для средней доходности портфеля, другое — для дисперсии портфеля с параметром неприятия риска лямбда.

Это упражнение является частью курса

Промежуточный анализ портфеля в R

Посмотреть курс

Инструкции к упражнению

  • Создайте объект спецификации портфеля, используя названия активов из набора данных index_returns, и назовите его port_spec.
  • Добавьте в объект port_spec ограничение полного инвестирования: сумма весов должна равняться 1.
  • Добавьте в объект port_spec ограничение на длинные позиции: вес каждого актива должен находиться в диапазоне от 0 до 1.
  • Добавьте в объект port_spec целевую функцию максимизации средней доходности портфеля.
  • Добавьте в объект port_spec целевую функцию минимизации дисперсии портфеля. Параметр неприятия риска должен быть равен 10.
  • Запустите оптимизацию. Эта задача решается с помощью квадратичного программирования, поэтому укажите optimize_method = "ROI".

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Create the portfolio specification
port_spec <- portfolio.spec(assets = ___)

# Add a full investment constraint such that the weights sum to 1
port_spec <- add.constraint(portfolio = ___, type = ___)

# Add a long only constraint such that the weight of an asset is between 0 and 1
port_spec <- add.constraint(portfolio = ___, type = ___)

# Add an objective to maximize portfolio mean return
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)

# Add an objective to minimize portfolio variance
port_spec <- add.objective(portfolio = port_spec, type = ___, name = ___, risk_aversion = ___)

# Solve the optimization problem
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = "ROI")
Редактировать и запускать код