Résoudre un problème simple d’optimisation de portefeuille
Dans cet exercice, vous allez apprendre à résoudre un problème simple d’optimisation de portefeuille avec PortfolioAnalytics. Vous verrez comment créer un objet de spécification de portefeuille, ajouter des contraintes et des objectifs, puis résoudre le problème d’optimisation. Le problème consiste à construire un portefeuille de variance minimale soumis à des contraintes d’investissement total et de positions longues uniquement. L’objectif est de minimiser la variance du portefeuille. Deux contraintes s’appliquent ici : la contrainte d’investissement total impose que la somme des pondérations soit égale à 1, et la contrainte « long only » impose que toutes les pondérations soient supérieures ou égales à 0 (c.-à-d. aucune position courte autorisée).
Cet exercice fait partie du cours
Analyse de portefeuille intermédiaire en R
Instructions
- Créez un objet de spécification de portefeuille à partir des noms d’actifs du jeu de données
index_returnset nommez cet objet de spécificationport_spec. - Ajoutez au besoin une contrainte d’investissement total au sein de l’objet
port_specafin que la somme des pondérations soit égale à 1. - Ajoutez une contrainte « long only » à l’objet
port_specafin que la pondération d’un actif soit comprise entre 0 et 1. - Ajoutez à l’objet
port_specun objectif visant à minimiser l’écart type du portefeuille. - Résolvez le problème d’optimisation du portefeuille avec
optimize_method = "ROI". Affectez les résultats de l’optimisation à un objet nomméopt.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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 = "___")