AnalysisCriterion. The interface is intentionally small: pass a BarSeries and a TradingRecord, get back a Num.
The AnalysisCriterion interface
betterThan defines the direction of improvement for ranking — higher is better for return criteria, lower is better for drawdown criteria. This is used automatically when comparing strategies in BacktestExecutor.
Calculating multiple metrics
Criteria by category
Return criteria
Return criteria
These measure absolute and relative profitability.
| Class | Package | Description |
|---|---|---|
NetReturnCriterion | criteria.pnl | Total return after all costs |
NetProfitCriterion | criteria.pnl | Net profit in currency units |
GrossReturnCriterion | criteria.pnl | Return before costs |
NetProfitLossCriterion | criteria.pnl | Net profit or loss per position |
Risk-adjusted criteria
Risk-adjusted criteria
These reward strategies that generate returns efficiently relative to the risk taken.
| Class | Package | Description |
|---|---|---|
SharpeRatioCriterion | criteria | Excess return per unit of volatility |
SortinoRatioCriterion | criteria | Like Sharpe, but penalises only downside volatility |
CalmarRatioCriterion | criteria | Annualised return divided by maximum drawdown |
OmegaRatioCriterion | criteria | Probability-weighted ratio of gains to losses |
SharpeRatioCriterion supports advanced configuration: sampling frequency (per-bar, daily, weekly, monthly), annualisation mode, risk-free rate, cash return policy, and equity curve mode.Drawdown criteria
Drawdown criteria
These measure the severity of equity declines during the backtest period.
| Class | Package | Description |
|---|---|---|
MaximumDrawdownCriterion | criteria.drawdown | Largest peak-to-trough equity decline |
AverageDrawdownCriterion | criteria.drawdown | Mean drawdown across all positions |
MaximumDrawdownDurationCriterion | criteria.drawdown | Longest bars spent in drawdown |
ReturnOverMaxDrawdownCriterion | criteria | Net return divided by maximum drawdown |
Trade statistics
Trade statistics
These count and characterise the individual trades recorded.
| Class | Package | Description |
|---|---|---|
NumberOfPositionsCriterion | criteria | Total number of completed positions |
NumberOfWinningPositionsCriterion | criteria | Count of profitable positions |
NumberOfLosingPositionsCriterion | criteria | Count of losing positions |
WinningPositionsRatioCriterion | criteria | Win rate (winning / total) |
ExpectancyCriterion | criteria | Expected value per trade |
AverageProfitLossCriterion | criteria | Mean profit/loss across positions |
Windowed analysis
AnalysisWindow lets you calculate a criterion over a specific date range or bar range, rather than the entire series.
For time range windows, start is inclusive and end is exclusive. Bar range windows are both inclusive.
WeightedCriterion for composite ranking
When comparing many strategies, useWeightedCriterion to produce a single composite score that combines multiple criteria:
Parallel backtesting
Run hundreds of strategies and rank them by composite score.
Charting
Visualise criteria like maximum drawdown directly in subcharts.