Wyznaczanie portfela efektywnego w sensie średniej i wariancji
Portfel efektywny w sensie średniej i wariancji można wyznaczyć jako rozwiązanie problemu minimalizacji wariancji portfela przy założeniu, że oczekiwana stopa zwrotu portfela jest równa założonej stopie docelowej. Wygodną funkcją R służącą do tego celu jest portfolio.optim() z pakietu tseries. Domyślna implementacja tej funkcji wyznacza wagi portfela efektywnego pod warunkiem, że stopa zwrotu portfela jest równa stopie zwrotu portfela równoważonego. Jedynym wymaganym argumentem są miesięczne dane o stopach zwrotu składników portfela, dla których mają zostać wyznaczone wagi.
Zmienna returns zawierająca miesięczne stopy zwrotu akcji z indeksu DJIA jest już wczytana w konsoli.
To ćwiczenie jest częścią kursu
Wprowadzenie do analizy portfela w R
Instrukcje do ćwiczenia
- Wczytaj bibliotekę
tseries. - Utwórz portfel efektywny w sensie średniej i wariancji na podstawie miesięcznych stóp zwrotu, korzystając z domyślnych ustawień funkcji
portfolio.optim()z docelową stopą zwrotu portfela równoważonego. Wynik przypisz do zmiennejopt. - Utwórz wektor wag na podstawie zoptymalizowanego portfela. Wagi portfela znajdziesz w
opt$pw. Nazwij ten wektorpf_weights. - Nadaj nazwom aktywów etykiety, korzystając z dostarczonego kodu.
- Wybierz z
pf_weightste optymalne wagi, które są większe lub równe 1%, i przypisz je do zmiennejopt_weights. - Użyj funkcji barplot(), aby zwizualizować rozkład
opt_weights. - Wyświetl oczekiwaną stopę zwrotu portfela (
opt$pm) oraz jego zmienność (opt$ps).
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Load tseries
# Create an optimized portfolio of returns
opt <- portfolio.optim(___)
# Create pf_weights
pf_weights <- ___$pw
# Assign asset names
names(pf_weights) <- colnames(returns)
# Select optimum weights opt_weights
opt_weights <- pf_weights[___ >= 0.01]
# Bar plot of opt_weights
# Print expected portfolio return and volatility
___$pm
___$ps