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, and running it yourself today will produce different ones.
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 (22% of capital here, 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?
For the SMA Cross, Sortino (0.72) is close to Sharpe (0.77) — meaning the strategy's volatility is fairly symmetric. A strategy where Sortino is significantly higher than Sharpe has large upside swings but controlled drawdowns, which is desirable.
| Sortino vs Sharpe | What it suggests |
|---|---|
| Sortino ≈ 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 |
The SMA Cross has Omega = 1.04 — only slightly above 1.0. After the 22% of capital paid in fees 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 btc_sma_cross paid 22% of capital in fees over 4 years. For higher-frequency strategies, fees can easily exceed alpha. Set the rate for the market you actually trade: FEE = 0.0005 is the Binance USD-M futures VIP0 taker fee of 0.05% (maker is 0.02%); Binance spot charges 0.1% for both maker and taker at the entry tier, so a spot strategy written with 0.0005 understates its costs.
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.