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

Максимізація квадратичної функції корисності

У відео про виклики оптимізації портфеля ви бачили, як розв'язати задачу оптимізації квадратичної корисності за допомогою пакета quadprog. У цій вправі ви побачите, як розв'язати квадратичну задачу корисності з пакетом PortfolioAnalytics. Нагадаємо, що квадратична корисність має два доданки: один для середньої дохідності портфеля, а інший — для дисперсії портфеля з параметром неприйняття ризику lambda.

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

Середній рівень аналізу портфеля в 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")
Редагувати та запускати код