Definește o funcție personalizată pentru momente
În multe cazuri, la problemele de optimizare cu constrângeri, managerul de portofoliu sau analistul poate dori să estimeze momentele printr-o tehnică specifică și/sau să extindă conceptul set.portfolio.moments(). O funcție personalizată pentru momente poate avea orice argumente denumite arbitrar. Totuși, argumentele numite R pentru randamentele activelor și portfolio pentru obiectul portofoliu vor fi detectate automat și gestionate eficient. Din acest motiv, este recomandat să folosești R pentru obiectul randamentelor activelor și portfolio pentru obiectul portofoliu.
Funcția personalizată pentru momente trebuie să returneze o listă denumită, ale cărei elemente reprezintă momentele:
$mu: primul moment (vectorul randamentelor așteptate)$sigma: al doilea moment (matricea varianță-covarianță)$m3: al treilea moment (matricea cosimetrie)$m4: al patrulea moment (matricea cokurtoză)
În acest exercițiu, vei scrie o funcție personalizată pentru momente care estimează matricea varianță-covarianță printr-o metodă robustă. Vom folosi funcția cov.rob() din pachetul MASS. Semnătura funcției trebuie să includă argumentele R pentru randamentele activelor și portfolio pentru obiectul de specificație. Funcția trebuie să returneze o listă denumită. Deoarece estimezi doar al doilea moment, trebuie să returnezi o listă cu un singur element, denumit corespunzător. Aceste reguli pot fi aplicate pentru a scrie funcții personalizate de momente și pentru alte modele, precum modele factoriale, modele GARCH sau orice altă clasă de modele care teoretic ar trebui să ofere o estimare mai bună decât estimarea pe eșantion.
Acest exercițiu face parte din cursul
Analiză intermediară a portofoliului în R
Instrucțiuni pentru exercițiu
- Definește o funcție numită
moments_robustcare estimează matricea varianță-covarianță a randamentelor activelor folosind metoda"mcd". - Estimează momentele portofoliului pe baza funcției tocmai definite. Atribuie rezultatul unei variabile numite
moments. Acest pas servește drept verificare pentru a te asigura că funcția personalizată funcționează corect. - Calculează matricea varianță-covarianță direct cu
cov.rob()și verifică dacă este egală cumoments$sigma.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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$___