The eight numbers Blave Agent reports — what each means and which ones to trust.
You are holding a backtest report with a total return of +145.8%, and you do not know whether that number should excite you or worry you. A backtest runs a set of trading rules over historical data to see how they would have performed; what you get is not a prediction of how much you will make, but a set of numbers you can judge with: return, risk, cost. The way to judge is to read all three together, not just the first one.
The btc_sma_cross strategy (SMA45/SMA100 on BTCUSDT 1h, from 2022-01-01) produced the results below. The example sets no backtest end date, so every run extends to the day it is run: these numbers are a snapshot of one such run (made when the example's fee was 0.05% per side, FEE = 0.0005; it is now 0.1%), and running it yourself today will produce different ones.
In this old snapshot at 0.05% per side, the strategy more than doubled the buy-and-hold return — but it also had a brutal −42.6% drawdown at one point. Whether that's acceptable depends entirely on your risk tolerance, and the metrics below will help you think through it. The report also shows two cost numbers — Total Fees Paid (here, fees cumulatively ate about 22% of equity over 4 years) and Trades — which come back into play in the Omega section below.
This is a real example from Blave Agent's own backtest engine. If you do not have a strategy of your own yet and are not sure where to begin, you do not have to write one from scratch — every strategy in the official strategy library ships with its real backtest, so you can look at the numbers first and decide whether to deploy afterwards.
Sharpe ratio = annualized return ÷ annualized volatility (both upside and downside). It answers: how much return per unit of total risk?
| Sharpe | Interpretation |
|---|---|
| < 0 | Losing money on a risk-adjusted basis |
| 0 – 0.5 | Weak — barely compensates for risk |
| 0.5 – 1.0 | Acceptable for trend-following (our SMA example falls here) |
| 1.0 – 1.5 | Good |
| > 1.5 | Strong — treat with skepticism if backtest period is short |
Sortino ratio is like Sharpe, but only penalizes downside volatility. Upside variance doesn't count as risk. It answers: how much return per unit of bad volatility?
The denominator is the downside deviation: square each period's negative return, average over all periods (winning periods count as 0, they are not dropped), then take the square root. So even a perfectly symmetric return stream puts Sortino at roughly 1.4× Sharpe (√2) — that is the baseline to compare against. Far above it means large gains with controlled drawdowns, the desirable shape; close to or below Sharpe means the losing side is unusually heavy.
| Sortino vs Sharpe | What it suggests |
|---|---|
| Sortino ≈ 1.4 × Sharpe | Symmetric returns — upside and downside volatility are similar |
| Sortino >> Sharpe | Returns are positively skewed — large gains, small losses (ideal) |
| Sortino ≤ Sharpe | Returns are negatively skewed — small gains, occasional large losses (dangerous) |
Max drawdown is the largest peak-to-trough decline in equity during the backtest. If equity peaked at $100,000 and dropped to $57,380 before recovering, MDD = −42.6%.
MDD matters because it measures how much pain you'd have had to endure to stay in the strategy. Most people quit well before the recovery.
Omega ratio = total returns above a threshold ÷ total returns below it. The threshold is usually 0 (break-even). Unlike Sharpe, Omega captures the full return distribution, not just mean and variance.
| Omega | Interpretation |
|---|---|
| < 1.0 | More total loss than gain — unprofitable |
| 1.0 – 1.1 | Marginally profitable, fragile under real-world costs |
| 1.1 – 1.3 | Solid |
| > 1.5 | Strong — or possibly overfitted |
In the old snapshot at 0.05% per side, the SMA Cross has Omega = 1.04 — only slightly above 1.0. With fees cumulatively eating about 22% of equity over 4 years, the real-world edge is thin. This is normal for a trend-following strategy; the Sharpe and Sortino ratios are the better primary quality metrics for this strategy type.
Lookahead bias: Using data that wasn't available at decision time. Blave Agent executes at the next bar's open by default to prevent this (the exception is bars the strategy itself marks exec_at_close — futures settlement around a contract rollover, which fills at that bar's close), but custom indicator calculations can still introduce it — e.g., computing a Z-score using the full series' mean.
Skipping the warm-up period: Indicators like SMA(100) need 100 bars before they're meaningful. The first 100 bars should be excluded from performance measurement. Blave Agent's WARMUP parameter handles this automatically.
Optimizing on the full dataset: If you scan parameters using all available data and then report performance on the same data, you're reporting training error, not generalization. Always hold out at least 20–30% of data for out-of-sample validation. (For how that actually works on Blave, see How Out-of-Sample Validation Works.)
Ignoring fees: The snapshot above (0.05% per side) had fees cumulatively eat about 22% of equity over 4 years. Rerun at the example's current default of 0.1% per side (crypto perps, slippage included, deliberately conservative) from 2022-01-01 to 2026-10-22, fees cumulatively eat about 48.7% of equity and the total return is +79.5% — about the same as buy-and-hold's +78.5% over the same period. For higher-frequency strategies, fees can easily exceed alpha. Set the rate for the market you actually trade: Blave ships a conservative default per market — lower it only when you really get a lower rate (a VIP tier, a broker discount). To list a strategy, FEE still has to be ≥ the venue's VIP0 taker rate.
Confusing total return with risk-adjusted return: A strategy that returns 200% with an MDD of −80% is not "better" than one returning 80% with an MDD of −15%. The first will cause most real users to panic-exit near the bottom.