Sharpe-Ratio und Sortino-Ratio

Finanzhandel mit Python

Chelsea Yang

Data Science Instructor

Welche Strategie ist besser?

$$

Strategie 1:
  • Rendite: 15%
  • Volatilität (Standardabweichung): 30%

$$

Strategie 2:
  • Rendite: 10%
  • Volatilität (Standardabweichung): 8%
Finanzhandel mit Python

Risikobereinigte Rendite

  • Leistung zwischen Strategien vergleichbar machen
  • Ein Verhältnis, das das Risiko zur Rendite beschreibt

Risiko vs. Rendite

Finanzhandel mit Python

Sharpe-Ratio

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

$$

  • $R_p $: Rendite einer Strategie, eines Portfolios, Assets usw.
  • $R_r $: Risikofreier Zins
  • $\sigma_p $: Standardabweichung der Überschussrendite ($R_p-R_f$)

$$

  • Je größer die Sharpe-Ratio, desto attraktiver die Rendite
Finanzhandel mit Python

Triff die Wahl noch einmal

$$

Strategie 1:
  • Rendite: 15%
  • Volatilität (Standardabweichung): 30%
  • Sharpe-Ratio: 15%/30% = 0,5

$$

Strategie 2:
  • Rendite: 10%
  • Volatilität (Standardabweichung): 8%
  • Sharpe-Ratio: 10%/8% = 1,25
Finanzhandel mit Python

Sharpe-Ratio aus bt-Backtest abrufen

resInfo = bt_result.stats
# Sharpe-Ratios aus den Backtest-Statistiken holen
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
Finanzhandel mit Python

Sharpe-Ratio manuell berechnen

# Jahresrendite abrufen
annual_return = resInfo.loc['yearly_mean']

# Jährliche Volatilität abrufen volatility = resInfo.loc['yearly_vol']
# Sharpe-Ratio manuell berechnen sharpe_ratio = annual_return / volatility print('Sharpe ratio annually %.2f'% sharpe_ratio)
Sharpe ratio annually 1.34
Finanzhandel mit Python

Einschränkungen der Sharpe-Ratio

  • Bestraft sowohl „gute" als auch „schlechte" Volatilität
  • Aufwärtsvolatilität kann das Verhältnis nach unten verzerren

Einschränkungen der Sharpe-Ratio

Finanzhandel mit Python

Sortino-Ratio

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

  • $R_p $: Rendite einer Strategie, eines Portfolios, Assets usw.
  • $R_r $: Risikofreier Zins
  • $\sigma_d $: Downside-Deviation der Überschussrendite ($R_p-R_f$)

Abwärtsvolatilität

Finanzhandel mit Python

Sortino-Ratio aus bt-Backtest abrufen

resInfo = bt_result.stats
# Sortino-Ratio aus den Backtest-Statistiken holen
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
Finanzhandel mit Python

Lass uns üben!

Finanzhandel mit Python

Preparing Video For Download...