Додайте цілі
Цілі додаються до об'єкта портфеля за допомогою функції add.objective(). Кожна додана ціль є окремим об'єктом і зберігається у слоті objectives в об'єкті специфікації портфеля. Таким чином, цілі є модульними, і ви можете легко додавати, вилучати або змінювати об'єкти цілей. Аргумент name має бути дійсною функцією R. У пакеті PerformanceAnalytics доступно кілька функцій, але користувацькі функції також можна використовувати як цільові. Обов'язкові аргументи для add.objective() — це portfolio, до якого додається ціль, type цілі, name цілі та іменовані аргументи, передані через ... до конструктора відповідного типу цілі. Аргументи для цільової функції задаються як іменований список у arguments.
Базові типи цілей:
return: цей тип цілі максимізує значення цільової функції.risk: цей тип цілі мінімізує значення цільової функції.risk_budget: цей тип цілі мінімізує концентрацію ризику або штрафує внесок у ризик, що перевищує мінімальний або максимальний допустимий відсотковий внесок у ризик.
На додаток до перелічених вище типів цілей, PortfolioAnalytics також підтримує типи цілей квадратичної корисності та концентрації ваг. Якщо вас цікавлять інші типи обмежень, перегляньте довідку для конструкторів обмежень. У файлах довідки наведено опис типу обмеження та приклади коду.
Ця вправа є частиною курсу
Середній рівень аналізу портфеля в R
Інструкції до вправи
- Додайте ціль щодо дохідності до об'єкта специфікації портфеля
port_spec, який ви створили у попередній вправі. - Додайте ціль щодо ризику для мінімізації стандартного відхилення портфеля до
port_spec. - Додайте ціль із бюджетом ризику, де ризик визначено як компонентне стандартне відхилення, до
port_spec. Задайте мінімальний відсоток ризику 5% і максимальний відсоток ризику 10%. - Виведіть об'єкт
port_spec.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# Add a return objective to maximize mean return
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)
# Add a risk objective to minimize portfolio standard deviation
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)
# Add a risk budget objective
port_spec <- add.objective(portfolio = ___, type = ___, name = ___, min_prisk = ___, max_prisk = ___)
# Print the portfolio specification object