Skip to content

contango.trading.metrics.calculators.risk

contango.trading.metrics.calculators.risk

get_risk_metrics

get_risk_metrics(context: AnalysisContext, monthly_returns: tuple[tuple[time_unix_ms, percent], ...] | None, max_drawdown: percent | None) -> RiskMetrics

Returns the RiskMetrics for a strategy backtest.

Parameters:

Name Type Description Default
context AnalysisContext

The AnalysisContext object to derive data from.

required
monthly_returns tuple[tuple[time_unix_ms, percent], ...] | None

The returns (in percent) per month from latest to most recent.

required
max_drawdown percent | None

The worst single historical loss of the strategy.

required
Source code in src\contango\trading\metrics\calculators\risk.py
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
def get_risk_metrics(
    context: AnalysisContext,
    monthly_returns: tuple[tuple[time_unix_ms, percent], ...] | None,
    max_drawdown: percent | None
) -> RiskMetrics:
    """
    Returns the `RiskMetrics` for a strategy backtest.

    Args:
        context: The `AnalysisContext` object to derive data from.
        monthly_returns: The returns (in percent) per month from latest to most recent.
        max_drawdown: The worst single historical loss of the strategy.
    """
    annual_return = _get_annual_return(context.equity_curve)
    monthly_volatility = _get_monthly_volatility(monthly_returns)
    sharpe_ratio = _get_sharpe_ratio(monthly_returns, monthly_volatility)
    calmar_ratio = _get_calmar_ratio(annual_return, max_drawdown)
    return RiskMetrics(
        annual_return=annual_return,
        monthly_volatility=monthly_volatility,
        sharpe_ratio=sharpe_ratio,
        calmar_ratio=calmar_ratio
    )