Skip to content

trading.optimizer.analysis.calculators.risk

trading.optimizer.analysis.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\optimizer\analysis\calculators\risk.py
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
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
    )