Разработка системы расчета Sharpe Ratio
Sharpe Ratio — наиболее распространённая метрика качества торговой стратегии, измеряющая доходность относительно принятого риска.
Формула: Sharpe = (Rp − Rf) / σp
где Rp — доходность портфеля, Rf — безрисковая ставка, σp — стандартное отклонение доходности.
Для криптоторговли безрисковую ставку часто принимают равной 0 (или доходности стейблкоин стейкинга ~5% годовых). Результат аннуализируется умножением на √252 (торговые дни) или √365 (для крипты работающей круглосуточно).
import numpy as np
def calculate_sharpe_ratio(returns, risk_free_rate=0.0, periods_per_year=365):
"""
returns: series of daily returns
"""
excess_returns = returns - risk_free_rate / periods_per_year
if excess_returns.std() == 0:
return 0
sharpe = excess_returns.mean() / excess_returns.std()
annualized_sharpe = sharpe * np.sqrt(periods_per_year)
return annualized_sharpe
def rolling_sharpe(returns, window=90, risk_free_rate=0.0, periods_per_year=365):
"""Rolling Sharpe для отслеживания деградации стратегии"""
rolling = returns.rolling(window)
sharpe_series = (
rolling.mean() - risk_free_rate / periods_per_year
) / rolling.std() * np.sqrt(periods_per_year)
return sharpe_series
Интерпретация: Sharpe > 1.0 — приемлемо. > 2.0 — хорошо. > 3.0 — отлично (и часто означает overfitting при backtesting). < 0 — стратегия хуже безрисковой ставки.
Проблема с Sharpe для крипты: симметричное стандартное отклонение наказывает как за убытки, так и за прибыль. Это нелогично — высокая доходность не является риском. Для асимметричных стратегий лучше использовать Sortino Ratio.
Rolling Sharpe показывает деградацию стратегии во времени — если он снижается, стратегия теряет edge. Система включает расчёт текущего, rolling 90-day и годового Sharpe с визуализацией в Grafana dashboard.







