Tính lợi nhuận danh mục đầu tư
Để xây dựng và backtest một danh mục, bạn cần quen làm việc với lợi nhuận của nhiều tài sản trong cùng một đối tượng.
Trong bài tập này, bạn sẽ dùng một đối tượng DataFrame của pandas, đã được lưu trong biến StockReturns, để chứa lợi nhuận của nhiều tài sản và tính lợi nhuận của một danh mục mô phỏng.
Danh mục mô phỏng được xây dựng với tỷ trọng định sẵn cho một số công ty lớn nhất thế giới ngay trước tháng 1/2017:
| Company Name | Ticker | Portfolio Weight |
|---|---|---|
| Apple | AAPL | 12% |
| Microsoft | MSFT | 15% |
| Exxon Mobil | XOM | 8% |
| Johnson & Johnson | JNJ | 5% |
| JP Morgan | JPM | 9% |
| Amazon | AMZN | 10% |
| General Electric | GE | 11% |
| FB | 14% | |
| AT&T | T | 16% |
Lưu ý: trong hầu hết trường hợp, tổng tỷ trọng danh mục nên bằng 100%
Bài tập này là một phần của khóa học
Nhập môn Quản trị Rủi ro Danh mục bằng Python
Hướng dẫn bài tập
- Hoàn thiện mảng numpy
portfolio_weightsvới các giá trị theo bảng ở trên. - Dùng phương thức
.mul()để nhânportfolio_weightstheo từng hàng củaStockReturnsnhằm thu được lợi nhuận cổ phiếu có trọng số. - Sau đó dùng phương thức
.sum()theo từng hàng trên đối tượngWeightedReturnsđể tính lợi nhuận danh mục. - Cuối cùng, xem biểu đồ lợi nhuận lũy kế theo thời gian.
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.
# Finish defining the portfolio weights as a numpy array
portfolio_weights = np.array([0.12, 0.15, 0.08, 0.05, 0.09, 0.10, 0.11, ____, ____])
# Calculate the weighted stock returns
WeightedReturns = StockReturns.____(portfolio_weights, axis=____)
# Calculate the portfolio returns
StockReturns['Portfolio'] = WeightedReturns.____(axis=____)
# Plot the cumulative portfolio returns over time
CumulativeReturns = ((1+StockReturns["Portfolio"]).cumprod()-1)
CumulativeReturns.plot()
plt.show()