CommencerCommencer gratuitement

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

Afficher le cours

Instructions

  • Créez un objet de spécification de portefeuille en utilisant les noms d’actifs du jeu de données index_returns et nommez cet objet de spécification port_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")
Modifier et exécuter le code