การคำนวณผลตอบแทนของพอร์ตโฟลิโอ
การสร้างและทดสอบพอร์ตโฟลิโอย้อนหลังนั้น จำเป็นต้องทำงานกับผลตอบแทนของสินทรัพย์หลายรายการในออบเจ็กต์เดียวได้อย่างคล่องแคล่ว
ในแบบฝึกหัดนี้ จะใช้ออบเจ็กต์ DataFrame ของ pandas ที่เก็บไว้ในตัวแปรชื่อ StockReturns เพื่อบันทึกผลตอบแทนของสินทรัพย์หลายรายการ และคำนวณผลตอบแทนของพอร์ตโฟลิโอจำลอง
พอร์ตโฟลิโอจำลองนี้ถูกสร้างขึ้นโดยกำหนดน้ำหนักล่วงหน้าสำหรับบริษัทที่ใหญ่ที่สุดในโลกก่อนเดือนมกราคม 2017 ดังนี้:
| ชื่อบริษัท | Ticker | น้ำหนักในพอร์ตโฟลิโอ |
|---|---|---|
| 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% |
โปรดสังเกตว่าน้ำหนักในพอร์ตโฟลิโอควรรวมกันได้ 100% ในกรณีส่วนใหญ่
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python เบื้องต้นสำหรับการบริหารความเสี่ยงพอร์ตการลงทุน
คำแนะนำการฝึกหัด
- กำหนดค่าใน numpy array ของ
portfolio_weightsให้ครบถ้วนตามตารางด้านบน - ใช้เมธอด
.mul()เพื่อคูณportfolio_weightsข้ามแถวของStockReturnsเพื่อให้ได้ผลตอบแทนหุ้นแบบถ่วงน้ำหนัก - จากนั้นใช้เมธอด
.sum()ข้ามแถวบนออบเจ็กต์WeightedReturnsเพื่อคำนวณผลตอบแทนของพอร์ตโฟลิโอ - สุดท้าย ตรวจสอบกราฟแสดงผลตอบแทนสะสมตามช่วงเวลา
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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()