CommencerCommencer gratuitement

Définir une fonction de moments personnalisée

Dans de nombreux cas de problèmes d’optimisation avec contraintes, le ou la gérant·e de portefeuille, ou l’analyste, peut souhaiter estimer les moments selon une technique spécifique et/ou étendre l’idée de set.portfolio.moments(). Une fonction de moments personnalisée définie par l’utilisateur peut avoir des arguments nommés de manière arbitraire. Cependant, les arguments nommés R pour les rendements des actifs et portfolio pour l’objet portefeuille seront détectés automatiquement et traités efficacement. Pour cette raison, il est fortement recommandé d’utiliser R pour l’objet de rendements et portfolio pour l’objet portefeuille.

La fonction de moments personnalisée doit renvoyer une liste nommée où les éléments représentent les moments :

  • $mu : premier moment (vecteur des rendements attendus)
  • $sigma : second moment (matrice de variance-covariance)
  • $m3 : troisième moment (matrice de coskewness)
  • $m4 : quatrième moment (matrice de cokurtosis)

Dans cet exercice, vous allez écrire une fonction de moments personnalisée pour estimer la matrice de variance-covariance à l’aide d’une méthode robuste. Nous utiliserons la fonction cov.rob() du package MASS. La signature de la fonction doit comporter des arguments nommés R pour les rendements des actifs et portfolio pour l’objet de spécification. La fonction doit renvoyer une liste nommée. Comme vous n’estimez que le second moment, vous n’avez besoin de renvoyer qu’une liste avec un seul élément correctement nommé. Vous pouvez appliquer ces règles pour écrire des fonctions de moments personnalisées pour d’autres modèles tels que les modèles factoriels, les modèles GARCH ou toute autre classe de modèles qui, théoriquement, devrait fournir une meilleure estimation que l’estimation sur échantillon.

Cet exercice fait partie du cours

Analyse de portefeuille intermédiaire en R

Afficher le cours

Instructions

  • Définissez une fonction nommée moments_robust qui estime la matrice de variance-covariance des rendements des actifs en utilisant la méthode "mcd".
  • Estimez les moments du portefeuille que vous venez de définir. Affectez le résultat à une variable nommée moments. Vous faites cela pour vérifier que votre fonction de moments personnalisée fonctionne comme prévu.
  • Calculez la matrice de variance-covariance directement avec cov.rob() et vérifiez qu’elle est égale à moments$sigma

Exercice interactif pratique

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

# Define custom moment function
moments_robust <- function(R, portfolio){
  out <- list()
  out$___ <- cov.rob(R, method = ___)$cov
  out
}

# Estimate the portfolio moments using the function you just defined 
moments <- moments_robust(R = ___, portfolio = ___)

# Check the moment estimate
cov.rob(___, method = ___)$cov == moments$___
Modifier et exécuter le code