Maximiser une fonction d’utilité quadratique
Dans la vidéo sur les défis de l’optimisation de portefeuille, vous avez vu comment résoudre un problème d’optimisation d’utilité quadratique avec le package quadprog. Cet exercice vous montre comment résoudre un problème d’utilité quadratique avec le package PortfolioAnalytics. Rappelez-vous que la formulation d’utilité quadratique comporte deux termes : l’un pour le rendement moyen du portefeuille et l’autre pour la variance du portefeuille, avec un paramètre d’aversion au risque, lambda.
Cet exercice fait partie du cours
Analyse de portefeuille intermédiaire en R
Instructions
- Créez un objet de spécification de portefeuille en utilisant les noms d’actifs du jeu de données
index_returnset nommez cet objet de spécificationport_spec. - Ajoutez une contrainte d’investissement total afin que la somme des pondérations soit égale à 1 à l’objet
port_spec. - Ajoutez une contrainte « long only » afin que la pondération d’un actif soit comprise entre 0 et 1 à l’objet
port_spec. - Ajoutez un objectif pour maximiser le rendement moyen du portefeuille à l’objet
port_spec. - Ajoutez un objectif pour minimiser la variance du portefeuille à l’objet
port_spec. L’aversion au risque doit être fixée à 10. - Lancez l’optimisation. Ce problème peut être résolu par un solveur de programmation quadratique ; nous spécifions donc
optimize_method = "ROI"
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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")