CommencezCommencez gratuitement

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 à variance minimale soumis aux contraintes d'investissement total et de positions acheteuses seulement. L'objectif est de minimiser la variance du portefeuille. Deux contraintes s'appliquent : la contrainte d'investissement total exige que la somme des pondérations soit égale à 1, et la contrainte acheteur seulement exige que toutes les pondérations soient supérieures ou égales à 0 (c.-à-d. aucune position vendeuse n'est permise).

Cette activité fait partie du cours

Analyse de portefeuille intermédiaire en R

Voir le cours

Instructions de l’exercice

  • Créez un objet de spécification de portefeuille à partir des noms d'actifs du jeu de données index_returns et nommez cet objet port_spec.
  • Ajoutez au besoin une contrainte d'investissement total à l'objet port_spec pour que la somme des pondérations soit égale à 1.
  • Ajoutez à l'objet port_spec une contrainte acheteur seulement pour que la pondération d'un actif soit comprise entre 0 et 1.
  • Ajoutez à l'objet port_spec un objectif visant à minimiser l'écart type du portefeuille.
  • Résolvez le problème d'optimisation du portefeuille avec optimize_method = "ROI". Assignez les résultats de l'optimisation à un objet nommé opt.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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 = "___")
Modifier et exécuter le code