IniziaInizia gratis

Definisci una funzione di momento personalizzata

In molti casi, per problemi di ottimizzazione con vincoli, il portfolio manager o l'analista può voler stimare i momenti con una tecnica specifica e/o estendere ulteriormente l'idea di set.portfolio.moments(). Una funzione di momento personalizzata definita dall'utente può avere argomenti con nomi arbitrari. Tuttavia, gli argomenti denominati R per i rendimenti degli asset e portfolio per l'oggetto portafoglio saranno rilevati automaticamente e gestiti in modo efficiente. Per questo motivo, è fortemente consigliato usare R per l'oggetto dei rendimenti e portfolio per l'oggetto portafoglio.

La funzione di momento personalizzata deve restituire una lista con nomi in cui gli elementi rappresentano i momenti:

  • $mu: primo momento (vettore dei rendimenti attesi)
  • $sigma: secondo momento (matrice varianza-covarianza)
  • $m3: terzo momento (matrice di coscobertura/skewness congiunta)
  • $m4: quarto momento (matrice di cokurtosi)

In questo esercizio, scriverai una funzione di momento personalizzata per stimare la matrice varianza-covarianza usando un metodo robusto. Useremo la funzione cov.rob() del pacchetto MASS. La firma della funzione deve avere argomenti denominati R per i rendimenti degli asset e portfolio per l'oggetto di specifica. La funzione deve restituire una lista con nomi. Poiché stai stimando solo il secondo momento, devi restituire una lista con un solo elemento nominato in modo appropriato. Puoi applicare queste regole per scrivere funzioni di momento personalizzate per altri modelli, come modelli fattoriali, modelli GARCH o qualsiasi altra classe di modelli che teoricamente dovrebbe fornire una stima migliore rispetto alla stima campionaria.

Questo esercizio fa parte del corso

Analisi di portafoglio intermedia in R

Visualizza il corso

Istruzioni dell'esercizio

  • Definisci una funzione chiamata moments_robust che stimi la matrice varianza-covarianza dei rendimenti degli asset usando il metodo "mcd".
  • Stima i momenti di portafoglio che hai appena definito. Assegnali a una variabile chiamata moments. Lo fai come controllo per assicurarti che la tua funzione di momento personalizzata funzioni come previsto.
  • Calcola direttamente la matrice varianza-covarianza usando cov.rob() e verifica se è uguale a moments$sigma

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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$___
Modifica ed esegui il codice