Začněte nyníZačněte zdarma

Definuj vlastní funkci pro momenty

U mnoha optimalizačních problémů s omezeními může portfolio manažer nebo analytik potřebovat odhadnout momenty pomocí konkrétní techniky, případně rozšířit možnosti funkce set.portfolio.moments(). Uživatelsky definovaná funkce pro momenty může mít libovolně pojmenované argumenty. Argumenty pojmenované R pro výnosy aktiv a portfolio pro objekt portfolia však budou automaticky rozpoznány a zpracovány efektivně. Proto se důrazně doporučuje používat R pro objekt výnosů aktiv a portfolio pro objekt portfolia.

Vlastní funkce pro momenty by měla vracet pojmenovaný seznam, jehož prvky představují jednotlivé momenty:

  • $mu: první moment (vektor očekávaných výnosů)
  • $sigma: druhý moment (variančně-kovarinanční matice)
  • $m3: třetí moment (matice koshikmosti)
  • $m4: čtvrtý moment (matice kokurtózy)

V tomto cvičení napíšeš vlastní funkci pro momenty, která odhadne variančně-kovarinanční matici pomocí robustní metody. Použijeme funkci cov.rob() z balíčku MASS. Funkce by měla mít argumenty pojmenované R pro výnosy aktiv a portfolio pro specifikační objekt a vracet pojmenovaný seznam. Protože odhaduješ pouze druhý moment, stačí vrátit seznam s jedním vhodně pojmenovaným prvkem. Stejný přístup můžeš uplatnit při psaní vlastních funkcí pro momenty i pro jiné modely – například faktorové modely, modely GARCH nebo jakékoli jiné třídy modelů, které by teoreticky měly přinést lepší odhad než výběrový.

Toto cvičení je součástí kurzu

Intermediate Portfolio Analysis in R

Zobrazit kurz

Pokyny k cvičení

  • Definuj funkci moments_robust, která odhadne variančně-kovarinanční matici výnosů aktiv metodou "mcd".
  • Odhadni momenty portfolia pomocí funkce, kterou jsi právě definoval/a. Výsledek ulož do proměnné moments. Tento krok slouží jako kontrola, že tvoje vlastní funkce pro momenty funguje správně.
  • Vypočítej variančně-kovarinanční matici přímo pomocí cov.rob() a zkontroluj, zda se rovná moments$sigma.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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$___
Upravit a spustit kód