CommencerCommencer 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 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

Afficher le cours

Instructions

  • 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 de spécification port_spec.
  • Ajoutez au besoin une contrainte d’investissement total au sein de l’objet port_spec afin que la somme des pondérations soit égale à 1.
  • Ajoutez une contrainte « long only » à l’objet port_spec afin 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". 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 = "___")
Modifier et exécuter le code