Définir une fonction de moments personnalisée
Dans bien des cas de problèmes d'optimisation avec contraintes, la ou le gestionnaire de portefeuille ou l'analyste peut vouloir estimer les moments selon une technique précise et/ou étendre l'idée de set.portfolio.moments(). Une fonction de moments personnalisée définie par l'utilisateur peut avoir n'importe quels arguments nommés. Toutefois, 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 retourner une liste nommée où les éléments représentent les moments :
$mu: premier moment (vecteur des rendements anticipés)$sigma: deuxième 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 paquet 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 retourner une liste nommée. Comme vous estimez seulement le deuxième moment, vous n'avez qu'à retourner 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, comme les modèles factoriels, les modèles GARCH ou toute autre classe de modèles qui, en théorie, devrait fournir une meilleure estimation que l'estimation empirique.
Cette activité fait partie du cours
Analyse de portefeuille intermédiaire en R
Instructions de l’exercice
- Définissez une fonction nommée
moments_robustqui 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. Assignez le résultat à une variable nommée
moments. Vous le faites pour vérifier que votre fonction de moments personnalisée fonctionne comme prévu. - Calculez directement la matrice de variance-covariance avec
cov.rob()et vérifiez si elle est égale àmoments$sigma
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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$___