CommencezCommencez gratuitement

Optimisation avec rééquilibrage périodique

Lancer l'optimisation avec un rééquilibrage périodique et analyser les résultats hors échantillon du test rétrospectif est une étape importante pour mieux comprendre et éventuellement ajuster les contraintes et les 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 avec 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 la 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é à l'aide de 50 permutations, et search_size, 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)!

Cette activité fait partie du cours

Analyse de portefeuille intermédiaire en R

Voir le cours

Instructions de l’exercice

  • Exécutez l'optimisation avec un rééquilibrage trimestriel. Réglez la période d'apprentissage (training period) et la fenêtre glissante (rolling window) à 60 périodes. L'ensemble de données est mensuel, donc nous utilisons 5 ans de données historiques. 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 ce code d’exemple.

# 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