Sharpe ratio และ Sortino ratio

การเทรดทางการเงินด้วย Python

Chelsea Yang

Data Science Instructor

กลยุทธ์ไหนให้ผลดีกว่ากัน?

$$

กลยุทธ์ที่ 1:
  • ผลตอบแทน: 15%
  • ความผันผวน (ส่วนเบี่ยงเบนมาตรฐาน): 30%

$$

กลยุทธ์ที่ 2:
  • ผลตอบแทน: 10%
  • ความผันผวน (ส่วนเบี่ยงเบนมาตรฐาน): 8%
การเทรดทางการเงินด้วย Python

ผลตอบแทนปรับด้วยความเสี่ยง

  • ทำให้เปรียบเทียบผลการดำเนินงานระหว่างกลยุทธ์ต่าง ๆ ได้
  • อัตราส่วนที่สะท้อนความเสี่ยงที่ต้องรับเพื่อให้ได้ผลตอบแทน

ความเสี่ยงกับผลตอบแทน

การเทรดทางการเงินด้วย Python

Sharpe ratio

$$ \text{Sharpe Ratio} = (R_p - R_r)/\sigma_p $$

$$

  • $R_p $: ผลตอบแทนของกลยุทธ์ พอร์ตโฟลิโอ หรือสินทรัพย์
  • $R_r $: อัตราผลตอบแทนปลอดความเสี่ยง
  • $\sigma_p $: ส่วนเบี่ยงเบนมาตรฐานของผลตอบแทนส่วนเกิน ($R_p-R_f$)

$$

  • Sharpe ratio ยิ่งสูง ผลตอบแทนยิ่งน่าสนใจ
การเทรดทางการเงินด้วย Python

เลือกใหม่อีกครั้ง

$$

กลยุทธ์ที่ 1:
  • ผลตอบแทน: 15%
  • ความผันผวน (ส่วนเบี่ยงเบนมาตรฐาน): 30%
  • Sharpe ratio: 15%/30% = 0.5

$$

กลยุทธ์ที่ 2:
  • ผลตอบแทน: 10%
  • ความผันผวน (ส่วนเบี่ยงเบนมาตรฐาน): 8%
  • Sharpe ratio: 10%/8% = 1.25
การเทรดทางการเงินด้วย Python

ดึง Sharpe ratio จาก bt backtest

resInfo = bt_result.stats
# Get Sharpe ratios from the backtest stats
print('Sharpe ratio daily: %.2f'% resInfo.loc['daily_sharpe'])
print('Sharpe ratio monthly %.2f'% resInfo.loc['monthly_sharpe'])
print('Sharpe ratio annually %.2f'% resInfo.loc['yearly_sharpe'])
Sharpe ratio daily: 0.49
Sharpe ratio monthly 0.48
Sharpe ratio annually 1.34
การเทรดทางการเงินด้วย Python

คำนวณ Sharpe ratio ด้วยตนเอง

# Obtain annual return
annual_return = resInfo.loc['yearly_mean']

# Obtain annual volatility volatility = resInfo.loc['yearly_vol']
# Calculate Sharpe ratio manually sharpe_ratio = annual_return / volatility print('Sharpe ratio annually %.2f'% sharpe_ratio)
Sharpe ratio annually 1.34
การเทรดทางการเงินด้วย Python

ข้อจำกัดของ Sharpe ratio

  • ลงโทษทั้งความผันผวน "ด้านดี" และ "ด้านไม่ดี"
  • ความผันผวนด้านบนอาจทำให้อัตราส่วนต่ำกว่าความเป็นจริง

ข้อจำกัดของ Sharpe ratio

การเทรดทางการเงินด้วย Python

Sortino ratio

$$ \text{Sortino Ratio} = (R_p - R_r)/\sigma_d $$

  • $R_p $: ผลตอบแทนของกลยุทธ์ พอร์ตโฟลิโอ หรือสินทรัพย์
  • $R_r $: อัตราผลตอบแทนปลอดความเสี่ยง
  • $\sigma_d $: ส่วนเบี่ยงเบนด้านลบของผลตอบแทนส่วนเกิน ($R_p-R_f$)

ความผันผวนด้านลบ

การเทรดทางการเงินด้วย Python

ดึง Sortino ratio จาก bt backtest

resInfo = bt_result.stats
# Get Sortino ratio from backtest stats
print('Sortino ratio daily: %.2f'% resInfo.loc['daily_sortino'])
print('Sortino ratio monthly %.2f'% resInfo.loc['monthly_sortino'])
print('Sortino ratio annually %.2f'% resInfo.loc['yearly_sortino'])
Sortino ratio daily: 0.70
Sortino ratio monthly 0.86
Sortino ratio annually 2.29
การเทรดทางการเงินด้วย Python

มาฝึกกันเถอะ!

การเทรดทางการเงินด้วย Python

Preparing Video For Download...