Wskaźnik Sharpe'a i wskaźnik Sortino

Financial Trading w Pythonie

Chelsea Yang

Data Science Instructor

Która strategia jest lepsza?

$$

Strategia 1:
  • Stopa zwrotu: 15%
  • Zmienność (odchylenie standardowe): 30%

$$

Strategia 2:
  • Stopa zwrotu: 10%
  • Zmienność (odchylenie standardowe): 8%
Financial Trading w Pythonie

Stopa zwrotu skorygowana o ryzyko

  • Umożliwia porównanie wyników różnych strategii
  • Wskaźnik opisujący ryzyko związane z uzyskaną stopą zwrotu

Ryzyko a zysk

Financial Trading w Pythonie

Wskaźnik Sharpe'a

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

$$

  • $R_p $: Stopa zwrotu strategii, portfela, aktywa itp.
  • $R_r $: Stopa wolna od ryzyka
  • $\sigma_p $: Odchylenie standardowe nadwyżkowej stopy zwrotu ($R_p-R_f$)

$$

  • Im wyższy wskaźnik Sharpe'a, tym atrakcyjniejsza stopa zwrotu
Financial Trading w Pythonie

Wybierz ponownie

$$

Strategia 1:
  • Stopa zwrotu: 15%
  • Zmienność (odchylenie standardowe): 30%
  • Wskaźnik Sharpe'a: 15%/30% = 0,5

$$

Strategia 2:
  • Stopa zwrotu: 10%
  • Zmienność (odchylenie standardowe): 8%
  • Wskaźnik Sharpe'a: 10%/8% = 1,25
Financial Trading w Pythonie

Odczytanie wskaźnika Sharpe'a z backtestingu 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
Financial Trading w Pythonie

Ręczne obliczanie wskaźnika Sharpe'a

# 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
Financial Trading w Pythonie

Ograniczenia wskaźnika Sharpe'a

  • Uwzględnia zarówno „dobrą", jak i „złą" zmienność
  • Zmienność wzrostowa może zaniżać wskaźnik

Ograniczenia wskaźnika Sharpe'a

Financial Trading w Pythonie

Wskaźnik Sortino

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

  • $R_p $: Stopa zwrotu strategii, portfela, aktywa itp.
  • $R_r $: Stopa wolna od ryzyka
  • $\sigma_d $: Odchylenie w dół nadwyżkowej stopy zwrotu ($R_p-R_f$)

Zmienność w dół

Financial Trading w Pythonie

Odczytanie wskaźnika Sortino z backtestingu 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
Financial Trading w Pythonie

Czas na ćwiczenia!

Financial Trading w Pythonie

Preparing Video For Download...