Коефіцієнти Шарпа і Сортіно

Фінансовий трейдинг у Python

Chelsea Yang

Data Science Instructor

Яка стратегія краща?

$$

Стратегія 1:
  • Дохідність: 15%
  • Волатильність (стандартне відхилення): 30%

$$

Стратегія 2:
  • Дохідність: 10%
  • Волатильність (стандартне відхилення): 8%
Фінансовий трейдинг у Python

Дохідність з урахуванням ризику

  • Зробити результати стратегій порівнюваними
  • Показник, що описує ризик отримання дохідності

Ризик проти винагороди

Фінансовий трейдинг у Python

Коефіцієнт Шарпа

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

$$

  • $R_p $: Дохідність стратегії, портфеля, активу тощо
  • $R_r $: Безризикова ставка
  • $\sigma_p $: Стандартне відхилення надлишкової дохідності ($R_p-R_f$)

$$

  • Чим більший коефіцієнт Шарпа, тим привабливіша дохідність
Фінансовий трейдинг у Python

Спробуйте обрати ще раз

$$

Стратегія 1:
  • Дохідність: 15%
  • Волатильність (стандартне відхилення): 30%
  • Коефіцієнт Шарпа: 15%/30% = 0,5

$$

Стратегія 2:
  • Дохідність: 10%
  • Волатильність (стандартне відхилення): 8%
  • Коефіцієнт Шарпа: 10%/8% = 1,25
Фінансовий трейдинг у Python

Отримання коефіцієнта Шарпа з бектесту bt

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

Розрахунок коефіцієнта Шарпа вручну

# 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

Обмеження коефіцієнта Шарпа

  • Карає і «хорошу», і «погану» волатильність
  • Зростання («вгору») може занижувати показник

Обмеження коефіцієнта Шарпа

Фінансовий трейдинг у Python

Коефіцієнт Сортіно

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

  • $R_p $: Дохідність стратегії, портфеля, активу тощо
  • $R_r $: Безризикова ставка
  • $\sigma_d $: Низхідне відхилення надлишкової дохідності ($R_p-R_f$)

Низхідна волатильність

Фінансовий трейдинг у Python

Отримання коефіцієнта Сортіно з бектесту bt

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...