CommencerCommencer gratuitement

Affiner les contraintes et les objectifs

Nous faisons l’hypothèse qu’affiner les contraintes et/ou les objectifs améliorera les performances. Ajoutons un objectif de budget de risque afin de fixer un pourcentage minimal et maximal de contribution au risque pour chaque actif. Nous allons repartir de la spécification de portefeuille que nous avons créée. Il s’agit d’un problème d’optimisation plus complexe qui nécessite un solveur global ; nous utiliserons donc des portefeuilles aléatoires comme méthode d’optimisation.

Cet exercice fait partie du cours

Analyse de portefeuille intermédiaire en R

Afficher le cours

Instructions

  • Ajoutez un objectif de budget de risque risk_budget à port_spec où le risque est défini comme l’écart-type. Fixez le pourcentage de risque minimal à 5 % et le pourcentage maximal à 10 %.
  • Exécutez l’optimisation avec un rééquilibrage trimestriel. Définissez la période d’entraînement et la fenêtre roulante pour utiliser 5 ans de données. Assignez les résultats à une variable nommée opt_rebal_rb.
  • Tracez les pondérations.
  • Tracez la contribution en pourcentage des composantes au risque.
  • Calculez les rendements du portefeuille avec Return.portfolio(). Assignez les rendements à une variable nommée returns_rb.

Exercice interactif pratique

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


# Add a risk budge objective
port_spec <- add.objective(portfolio = ___, 
                           type = ___, 
                           name = ___, 
                           min_prisk = ___, 
                           max_prisk = ___)

# Run the optimization
opt_rebal_rb <- optimize.portfolio.rebalancing(R = ___, 
                                               portfolio = ___, 
                                               optimize_method = "random", rp = rp,
                                               trace = TRUE,
                                               rebalance_on = ___, 
                                               training_period = ___,
                                               rolling_window = ___)

# Chart the weights


# Chart the percentage contribution to risk
chart.RiskBudget(___, match.col = "StdDev", risk.type = ___)

# Compute the portfolio returns
returns_rb <- Return.portfolio(R = ___, weights = ___)
colnames(returns_rb) <- "risk_budget"
Modifier et exécuter le code