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
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$___