Разработка системы расчета Calmar Ratio
Calmar Ratio (Compound Annual growth rate / Maximum drawdown) оценивает доходность стратегии относительно её наихудшего исторического падения. Это особенно важная метрика для трейдеров, для которых максимальный drawdown является ключевым ограничением.
Формула: Calmar = CAGR / |Max Drawdown|
import numpy as np
def calculate_calmar_ratio(equity_curve, periods_per_year=365):
"""
equity_curve: временной ряд стоимости портфеля
"""
# CAGR
total_days = len(equity_curve)
total_return = equity_curve[-1] / equity_curve[0]
cagr = total_return ** (periods_per_year / total_days) - 1
# Maximum Drawdown
peaks = np.maximum.accumulate(equity_curve)
drawdowns = (equity_curve - peaks) / peaks
max_drawdown = abs(drawdowns.min())
if max_drawdown == 0:
return float('inf')
calmar = cagr / max_drawdown
return calmar
def rolling_calmar(equity_curve, window=252, periods_per_year=365):
"""Rolling Calmar за скользящий год"""
results = []
for i in range(window, len(equity_curve) + 1):
window_equity = equity_curve[i-window:i]
calmar = calculate_calmar_ratio(window_equity, periods_per_year)
results.append(calmar)
return results
Интерпретация: Calmar > 1.0 — стратегия зарабатывает больше в год, чем её максимальный drawdown. > 3.0 — отличный результат. Calmar < 0.5 — drawdown слишком велик относительно доходности.
Сравнение метрик:
| Метрика | Что измеряет | Когда использовать |
|---|---|---|
| Sharpe | Доходность / все риски | Универсально |
| Sortino | Доходность / нисходящий риск | Асимметричные стратегии |
| Calmar | Доходность / max drawdown | При жёстком drawdown лимите |
MAR Ratio — близкая метрика: Compound Return / Max Drawdown (без CAGR нормировки). Используется для сравнения стратегий с разными горизонтами.
Sterling Ratio: CAGR / среднее из топ-N drawdown (обычно топ-3). Более устойчива чем Calmar, который зависит от одного экстремального события.
Разрабатываем систему расчёта Calmar, MAR и Sterling Ratio с rolling window анализом, бенчмаркингом против BTC buy-and-hold и визуализацией в portfolio dashboard.







