CommencerCommencer gratuitement

Ajouter des contraintes

Les contraintes sont ajoutées à l’objet de spécification de portefeuille avec la fonction add.constraint(). Chaque contrainte ajoutée est un objet distinct et est stockée dans l’emplacement constraints de l’objet portefeuille. De cette façon, les contraintes sont modulaires et vous pouvez facilement ajouter, supprimer ou modifier les contraintes dans l’objet portefeuille. Les arguments requis pour add.constraint() sont le portfolio auquel la contrainte est ajoutée, le type de contrainte, ainsi que des arguments nommés passés via ... au constructeur du type de contrainte.

Types de contraintes de base :

  • Spécifier la contrainte sur la somme des pondérations
    • weight_sum, weight, leverage
    • full_investment est un cas particulier qui définit min_sum = max_sum = 1
    • dollar_neutral est un cas particulier qui définit min_sum = max_sum = 0
  • Spécifier des contraintes pour les pondérations individuelles des actifs
    • box
    • long_only est un cas particulier qui définit min = 0 et max = 1
  • Spécifier la contrainte sur la somme des pondérations d’actifs par groupe (secteur, région, classe d’actifs, etc.)
    • group
  • Spécifier une contrainte sur le rendement moyen cible
    • return

Dans cet exercice, vous allez ajouter quelques-uns des types de contraintes les plus courants. En plus des types de contraintes de base listés ci-dessus, PortfolioAnalytics prend également en charge les contraintes de limite de position, de rotation (turnover), de diversification, d’exposition aux facteurs et d’exposition à l’effet de levier. Si les autres types de contraintes vous intéressent, consultez les pages d’aide des constructeurs de contraintes. Les pages d’aide incluent une description du type de contrainte ainsi que du code d’exemple.

Cet exercice fait partie du cours

Analyse de portefeuille intermédiaire en R

Afficher le cours

Instructions

  • Ajoutez une contrainte weight_sum telle que la somme minimale des pondérations soit 1 et la somme maximale des pondérations soit 1.
  • Ajoutez une contrainte box telle que les cinq premiers actifs aient une pondération minimale de 10 % et les actifs restants une pondération minimale de 5 %. Tous les actifs ont une pondération maximale de 40 %.
  • Ajoutez une contrainte group telle que les actifs 1, 5, 7, 9, 10 et 11 forment le premier groupe et les actifs 2, 3, 4, 6, 8 et 12 le second groupe. Définissez la pondération minimale à 40 % et la pondération maximale à 60 % pour chaque groupe.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# Add the weight sum constraint
port_spec <- add.constraint(portfolio = ___, type = ___, min_sum = ___, max_sum = ___)

# Add the box constraint
port_spec <- add.constraint(portfolio = ___, type = ___, min = c(___), max = ___)

# Add the group constraint
port_spec <- add.constraint(portfolio = ___, type = ___, groups = list(c(___), c(___)), group_min = ___, group_max = ___)


# Print the portfolio specification object

Modifier et exécuter le code