Stime dei momenti campionari
Il metodo predefinito per stimare i momenti del portafoglio è il metodo campionario. I momenti vengono calcolati in optimize.portfolio() valutando la funzione passata all’argomento momentFUN. Il valore predefinito di momentFUN è set.portfolio.moments(), che per impostazione predefinita calcola i momenti campionari. I momenti vengono poi utilizzati come input per le funzioni obiettivo. I momenti da stimare dipendono dalle finalità. Ad esempio, un obiettivo di minimizzazione della deviazione standard del portafoglio richiede solo una stima del secondo momento. Confrontalo con l’obiettivo di massimizzare lo Sharpe Ratio, che richiede la stima del primo e del secondo momento. Le stime campionarie dei momenti presentano svantaggi, tra cui l’errore di stima e la curse of dimensionality. Il rischio di errore di stima aumenta all’aumentare della dimensione degli asset e dei parametri da stimare.
Questo esercizio fa parte del corso
Analisi di portafoglio intermedia in R
Istruzioni dell'esercizio
- Aggiungi un obiettivo di rendimento con
"mean"come nome dell’obiettivo. - Calcola i momenti campionari usando
set.portfolio.moments. Assegna a una variabile chiamatamoments. - Verifica che il primo momento sia uguale alla stima campionaria dei rendimenti medi.
- Aggiungi un obiettivo di rischio con
"StdDev"come nome dell’obiettivo. - Calcola i momenti campionari usando
set.portfolio.moments. Assegna a una variabile chiamatamoments. - Verifica che il secondo momento sia uguale alla stima campionaria della matrice varianza-covarianza.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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)