Obliczanie kowariancji dla zmienności
W MPT ryzyko mierzymy za pomocą zmienności. Matematyka stojąca za obliczaniem zmienności portfela jest złożona i wymaga macierzy kowariancji dziennych stóp zwrotu. Przejdziemy teraz pętlą przez każdy miesiąc w DataFrame returns_monthly i obliczymy kowariancję dziennych stóp zwrotu.
Przy użyciu indeksów datetime w pandas możemy uzyskać dostęp do miesiąca i roku za pomocą df.index.month oraz df.index.year. Posłuży to do stworzenia maski dla returns_daily, która wyodrębni dzienne stopy zwrotu dla bieżącego miesiąca i roku w pętli. Maskę stosujemy do podzbioru DataFrame w ten sposób: df[mask]. Dzięki temu pobieramy z DataFrame returns_daily tylko wpisy odpowiadające aktualnemu miesiącowi i rokowi w każdym kroku pętli. Na koniec użyjemy metody .cov() z pandas, aby obliczyć kowariancję dziennych stóp zwrotu.
To ćwiczenie jest częścią kursu
Uczenie maszynowe w finansach z Pythonem
Instrukcje do ćwiczenia
- Przejdź pętlą przez indeks
returns_monthly. - Utwórz maskę dla
returns_daily, która używa bieżącego miesiąca i roku zreturns_monthlyi dopasowuje je do bieżącego miesiąca i roku ze zmiennejiw pętli. - Zastosuj maskę na
returns_dailyi oblicz kowariancje za pomocą.cov().
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Daily covariance of stocks (for each monthly period)
covariances = {}
rtd_idx = returns_daily.index
for i in returns_monthly.____:
# Mask daily returns for each month and year, and calculate covariance
mask = (rtd_idx.month == i.month) & (rtd_idx.____ == i.____)
# Use the mask to get daily returns for the current month and year of monthy returns index
covariances[i] = returns_daily[____].cov()
print(covariances[i])