Решение простой задачи оптимизации портфеля
В этом упражнении вы научитесь решать простую задачу оптимизации портфеля с помощью PortfolioAnalytics. Вы узнаете, как создать объект спецификации портфеля, добавить ограничения и целевые функции, а затем решить задачу оптимизации. Цель — сформировать портфель с минимальной дисперсией при условии полного инвестирования и запрета коротких позиций. Целевая функция — минимизация дисперсии портфеля. В задаче два ограничения: ограничение полного инвестирования означает, что сумма весов должна равняться 1, а ограничение длинных позиций означает, что все веса должны быть больше или равны 0 (то есть короткие позиции не допускаются).
Это упражнение является частью курса
Промежуточный анализ портфеля в R
Инструкции к упражнению
- Создайте объект спецификации портфеля, используя названия активов из набора данных
index_returns, и назовите егоport_spec. - Добавьте к объекту
port_specограничение полного инвестирования, при котором сумма весов равна 1. - Добавьте к объекту
port_specограничение длинных позиций, при котором вес каждого актива находится в диапазоне от 0 до 1. - Добавьте к объекту
port_specцелевую функцию для минимизации стандартного отклонения портфеля. - Решите задачу оптимизации портфеля, используя
optimize_method = "ROI". Сохраните результаты оптимизации в объект с именемopt.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Create the portfolio specification
port_spec <- portfolio.spec(colnames(___))
# 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 minimize portfolio standard deviation
port_spec <- add.objective(portfolio = ___, type = "___", name = "___")
# Solve the optimization problem
opt <- optimize.portfolio(___, portfolio = ___, optimize_method = "___")