CommencerCommencer gratuitement

Optimisation avec rééquilibrage périodique

Lancer l’optimisation avec rééquilibrage périodique et analyser les résultats hors échantillon du backtest est une étape essentielle pour mieux comprendre et, le cas échéant, affiner les contraintes et objectifs. optimize.portfolio.rebalancing() prend en charge l’optimisation avec rééquilibrage périodique (backtesting) afin d’examiner la performance hors échantillon. En plus des arguments de optimize.portfolio(), il faut préciser une fréquence de rééquilibrage via rebalance_on, training_period pour indiquer le nombre de périodes à utiliser comme données d’apprentissage pour l’optimisation initiale, et rolling_window pour indiquer le nombre de périodes correspondant à la largeur de fenêtre de l’optimisation. Si rolling_window est défini à NULL, chaque optimisation utilisera toutes les données disponibles à la période où l’optimisation est exécutée.

Pour réduire le temps de calcul dans cet exercice, l’ensemble de portefeuilles aléatoires rp est généré à partir de 50 permutations, et search_size, c’est-à-dire le nombre de portefeuilles à tester, est fixé à 1000. Si vous optimisez réellement des portefeuilles, vous voudrez probablement en tester davantage (la valeur par défaut de search_size est 20 000) !

Cet exercice fait partie du cours

Analyse de portefeuille intermédiaire en R

Afficher le cours

Instructions

  • Exécutez l’optimisation avec un rééquilibrage trimestriel. Définissez la période d’apprentissage et la fenêtre glissante à 60 périodes. Le jeu de données est mensuel, nous utilisons donc 5 ans d’historique. Affectez la sortie de l’optimisation à une variable nommée opt_rebal.
  • Affichez les résultats de l’optimisation.

Exercice interactif pratique

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

# Run the optimization backtest with quarterly rebalancing
opt_rebal <- optimize.portfolio.rebalancing(R = ___, portfolio = ___, optimize_method = ___, rp = rp, trace = TRUE, search_size = 1000, rebalance_on = ___, training_period = ___, rolling_window = ___)


# Print the output of the optimization backtest
Modifier et exécuter le code