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

Добавление целевых функций

Целевые функции добавляются в объект портфеля с помощью функции 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

Редактировать и запускать код