เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

หา Sharpe ratio ที่ดีที่สุด

เราต้องค้นหาพอร์ตโฟลิโอ "อุดมคติ" สำหรับแต่ละวัน เพื่อนำไปใช้เป็น target สำหรับ machine learning โดยจะวนลูปผ่านแต่ละวันใน portfolio_returns แล้ววนลูปผ่านพอร์ตโฟลิโอที่สร้างขึ้นใน portfolio_returns[date] จากนั้นคำนวณ Sharpe ratio ซึ่งก็คือผลตอบแทนหารด้วยความผันผวน (โดยสมมติให้ผลตอบแทนที่ไม่มีความเสี่ยงเท่ากับ 0)

เราใช้ enumerate() เพื่อวนลูปผ่านผลตอบแทนสำหรับวันที่ปัจจุบัน (portfolio_returns[date]) และติดตามดัชนีด้วย i จากนั้นใช้วันที่ปัจจุบันและดัชนีปัจจุบันเพื่อดึงค่าความผันผวนของแต่ละพอร์ตโฟลิโอผ่าน portfolio_volatility[date][i] สุดท้าย เราหาดัชนีของ Sharpe ratio ที่ดีที่สุดสำหรับแต่ละวันโดยใช้ np.argmax() ซึ่งจะนำดัชนีนี้ไปใช้ดึงน้ำหนักพอร์ตโฟลิโอที่เหมาะสมที่สุดในขั้นตอนถัดไป

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Machine Learning สำหรับการเงินด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ใช้ enumerate() เพื่อ enumerate portfolio_returns สำหรับแต่ละ date ในลูป
  • สำหรับ date ปัจจุบันในลูป ให้เพิ่มค่าลงใน dictionary entry ของ sharpe_ratio โดยใช้ผลตอบแทน (ret) หารด้วย portfolio_volatility สำหรับวันที่ปัจจุบันและค่า i ปัจจุบันในลูป
  • กำหนดค่าของ max_sharpe_idxs สำหรับ date ปัจจุบัน ให้เป็น ดัชนี ของ Sharpe ratio สูงสุด โดยใช้ np.argmax()

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Empty dictionaries for sharpe ratios and best sharpe indexes by date
sharpe_ratio, max_sharpe_idxs = {}, {}

# Loop through dates and get sharpe ratio for each portfolio
for date in portfolio_returns.keys():
    for i, ret in enumerate(portfolio_returns[____]):
    
        # Divide returns by the volatility for the date and index, i
        sharpe_ratio.setdefault(date, []).append(____ / portfolio_volatility[date][____])

    # Get the index of the best sharpe ratio for each date
    max_sharpe_idxs[date] = np.argmax(sharpe_ratio[____])

print(portfolio_returns[date][max_sharpe_idxs[date]])
แก้ไขและรันโค้ด