Tính hiệp phương sai cho độ biến động
Trong MPT, chúng ta định lượng rủi ro thông qua độ biến động (volatility). Việc tính toán độ biến động danh mục khá phức tạp và cần các hiệp phương sai của lợi nhuận theo ngày. Bây giờ, bạn sẽ lặp qua từng tháng trong DataFrame returns_monthly và tính hiệp phương sai của lợi nhuận ngày.
Với chỉ mục datetime của pandas, bạn có thể truy cập tháng và năm bằng df.index.month và df.index.year. Ta sẽ dùng điều này để tạo một mask cho returns_daily nhằm lấy lợi nhuận ngày của đúng tháng và năm hiện tại trong vòng lặp. Sau đó, dùng mask để lấy tập con của DataFrame như sau: df[mask]. Cách này sẽ lấy các bản ghi trong returns_daily rơi vào tháng và năm hiện tại ở mỗi vòng lặp. Cuối cùng, dùng phương thức .cov() của pandas để lấy hiệp phương sai của lợi nhuận ngày.
Bài tập này là một phần của khóa học
Machine Learning cho Tài chính bằng Python
Hướng dẫn bài tập
- Lặp qua chỉ mục của
returns_monthly. - Tạo một mask cho
returns_dailysử dụng tháng và năm hiện tại từreturns_monthly, và khớp với tháng và năm hiện tại từitrong vòng lặp. - Dùng mask trên
returns_dailyvà tính các hiệp phương sai bằng.cov().
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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])