Sharpe-kvot och Sortino-kvot

Finansiell handel i Python

Chelsea Yang

Data Science Instructor

Vilken strategi presterar bäst?

$$

Strategi 1:
  • Avkastning: 15%
  • Volatilitet (standardavvikelse): 30%

$$

Strategi 2:
  • Avkastning: 10%
  • Volatilitet (standardavvikelse): 8%
Finansiell handel i Python

Riskjusterad avkastning

  • Gör prestanda jämförbar mellan olika strategier
  • Ett nyckeltal som beskriver risken för att uppnå avkastningen

Risk kontra belöning

Finansiell handel i Python

Sharpe-kvot

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

$$

  • $R_p $: Avkastning för en strategi, portfölj, tillgång osv.
  • $R_r $: Riskfri ränta
  • $\sigma_p $: Standardavvikelse för överskottsavkastningen ($R_p-R_f$)

$$

  • Ju högre Sharpe-kvot, desto mer attraktiv är avkastningen
Finansiell handel i Python

Välj igen

$$

Strategi 1:
  • Avkastning: 15%
  • Volatilitet (standardavvikelse): 30%
  • Sharpe-kvot: 15%/30% = 0,5

$$

Strategi 2:
  • Avkastning: 10%
  • Volatilitet (standardavvikelse): 8%
  • Sharpe-kvot: 10%/8% = 1,25
Finansiell handel i Python

Hämta Sharpe-kvot från bt-backtestet

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
Finansiell handel i Python

Beräkna Sharpe-kvoten manuellt

# 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
Finansiell handel i Python

Begränsningar med Sharpe-kvoten

  • Straffar både "positiv" och "negativ" volatilitet
  • Uppåtvolatilitet kan dra ned kvoten

Begränsningar med Sharpe-kvoten

Finansiell handel i Python

Sortino-kvot

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

  • $R_p $: Avkastning för en strategi, portfölj, tillgång osv.
  • $R_r $: Riskfri ränta
  • $\sigma_d $: Nedåtavvikelse för överskottsavkastningen ($R_p-R_f$)

Nedåtvolatilitet

Finansiell handel i Python

Hämta Sortino-kvot från bt-backtestet

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
Finansiell handel i Python

Nu kör vi en övning!

Finansiell handel i Python

Preparing Video For Download...