Estimations des moments d'échantillon
La méthode par défaut pour estimer les moments d'un portefeuille est la méthode par échantillon. Les moments sont calculés dans optimize.portfolio() en évaluant la fonction passée à l'argument momentFUN. La valeur par défaut de momentFUN est set.portfolio.moments() qui, par défaut, calcule les moments d'échantillon. Les moments sont ensuite utilisés comme entrées des fonctions objectif. Les moments à estimer dépendent des objectifs. Par exemple, un objectif visant à minimiser l'écart-type du portefeuille ne nécessite qu'une estimation du deuxième moment. Comparez cela à l'objectif de maximiser le ratio de Sharpe, qui exige d'estimer le premier et le deuxième moments. Les estimations d'échantillon des moments comportent des inconvénients, notamment l'erreur d'estimation et la malédiction de la dimensionnalité. Le risque d'erreur d'estimation augmente à mesure que le nombre d'actifs et de paramètres à estimer s'accroît.
Cette activité fait partie du cours
Analyse de portefeuille intermédiaire en R
Instructions de l’exercice
- Ajoutez un objectif de rendement avec "mean" comme nom d'objectif.
- Calculez les moments d'échantillon avec
set.portfolio.moments. Assignez le résultat à une variable nomméemoments. - Vérifiez si le premier moment est égal à l'estimation par échantillon des rendements moyens.
- Ajoutez un objectif de risque avec "StdDev" comme nom d'objectif.
- Calculez les moments d'échantillon avec
set.portfolio.moments. Assignez le résultat à une variable nomméemoments. - Vérifiez si le deuxième moment est égal à l'estimation par échantillon de la matrice variance-covariance.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Add a return objective with "mean" as the objective name
port_spec <- add.objective(portfolio = port_spec, type = ___, name = ___)
# Calculate the sample moments
moments <- set.portfolio.moments(R = ___, portfolio = ___)
# Check if moments$mu is equal to the sample estimate of mean returns
moments$mu == colMeans(asset_returns)
# Add a risk objective with "StdDev" as the objective name
port_spec <- add.objective(portfolio = port_spec, type = ___, name = ___)
# Calculate the sample moments using set.portfolio.moments. Assign to a variable named moments.
moments <- set.portfolio.moments(R = ___, portfolio = ___)
# Check if moments$sigma is equal to the sample estimate of the variance-covariance matrix
moments$sigma == cov(asset_returns)