Пошук середньо-дисперсійно ефективного портфеля
Середньо-дисперсійно ефективний портфель можна отримати як розв'язок задачі мінімізації дисперсії портфеля за обмеження, що очікувана дохідність портфеля дорівнює цільовій дохідності. Зручна функція R для цього — portfolio.optim() з пакета R tseries. Типова (default) реалізація знаходить ваги середньо-дисперсійно ефективного портфеля за обмеження, що дохідність портфеля дорівнює дохідності рівноважного (equally-weighted) портфеля. Єдиний потрібний аргумент — це місячні дані дохідностей компонентів портфеля, для яких необхідно визначити ваги.
Змінна returns, що містить місячні дохідності акцій з DJIA, уже завантажена в консоль.
Ця вправа є частиною курсу
Вступ до аналізу портфеля в R
Інструкції до вправи
- Імпортуйте бібліотеку
tseries. - Створіть середньо-дисперсійно ефективний портфель на основі місячних дохідностей, використовуючи типові налаштування
portfolio.optim()з націлюванням на дохідність рівноважного портфеля, і запишіть результат у зміннуopt. - Створіть вектор ваг із вашого оптимізованого портфеля. Ваги портфеля можна знайти в
opt$pw. Назвіть йогоpf_weights. - Присвойте назви активам, використавши наданий код.
- Виберіть оптимальні ваги з
pf_weights, що є більшими або дорівнюють 1 %, і назвіть їхopt_weights. - Використайте barplot(), щоб візуалізувати розподіл
opt_weights. - Виведіть очікувану дохідність портфеля (
opt$pm) і волатильність (opt$ps) оптимізованого портфеля.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# Load tseries
# Create an optimized portfolio of returns
opt <- portfolio.optim(___)
# Create pf_weights
pf_weights <- ___$pw
# Assign asset names
names(pf_weights) <- colnames(returns)
# Select optimum weights opt_weights
opt_weights <- pf_weights[___ >= 0.01]
# Bar plot of opt_weights
# Print expected portfolio return and volatility
___$pm
___$ps