VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
ACADEMY / Backtesting and validation

System Quality Number (SQN): formula and what the scores mean

The system quality number is the average R-multiple divided by the spread of R-multiples, multiplied by the square root of the trade count (capped at 100). Scores from 2.0 to 2.5 are average, 2.5 to 3.0 good, 3.0 to 5.0 excellent, and a backtest score above 5 is a reason to check the trade count and how the strategy was picked.

By · Published · updated · Editorial policy

Contents
  1. What is the system quality number?
  2. How do you calculate SQN from R-multiples?
  3. How many trades does SQN need?
  4. What SQN score counts as good?
  5. SQN vs Sharpe ratio: what is the difference?
  6. What does SQN look like on a real ES backtest?
  7. Frequently asked questions
  8. References

What is the system quality number?

The system quality number (SQN) is Van Tharp's score for how consistent a strategy's trades are relative to their size. It divides the average R-multiple by the spread of R-multiples and multiplies by the square root of the trade count. A steady stream of modest wins scores higher than a few large wins mixed with large losses.

An R-multiple is a trade's result divided by the amount you planned to risk on it at entry, so a trade that risked $300 and made $600 is +2R, and a trade that lost the whole planned risk is −1R. Measuring in R instead of dollars puts every trade on one scale, whatever the contract or the position size. The score is read from a trade list, usually one produced by a backtest that replays the rules on old prices with costs included.

Think of two delivery riders who earn the same average tip per trip. One gets a small tip almost every time; the other gets nothing on most trips and a large tip now and then. Both average the same, but the first rider can plan a budget and the second cannot. SQN rewards the first rider. SQN measures consistency, not profit, and it only means something when the trade count is close to 100 and the costs are already in the trade results. Two strategies with the same average R can land far apart on the scale, as the figure shows. SQN sits beside per-period measures such as the Sharpe ratio, which you can compute from an equity series with the free Sharpe ratio calculator; the difference between the two is covered below.

Two hypothetical trade-result histograms with 50 trades and a mean of +0.4R each: the narrow one, with a spread of 1.0R, scores an SQN of about 2.8, and the wide one, with a spread of 2.5R, scores about 1.1 Same average, different SQN Hypothetical: 50 trades each Narrow SQN ≈ 2.8 Wide SQN ≈ 1.1 Mean +0.4R Tighter spread, higher score. So: judge consistency, not average.
Same average R-multiple, same trade count, very different SQN. The narrow spread on the left scores about two and a half times the wide spread on the right.

How do you calculate SQN from R-multiples?

You calculate SQN in four steps: convert every trade to an R-multiple, take the average of the R-multiples, take their standard deviation, then divide the average by the standard deviation and multiply by the square root of the trade count. Standard deviation is a number that says how far single results typically sit from the average; a small standard deviation means the trades cluster near the average, a large one means they are spread out.

  1. Write down each trade's result and its planned risk. The planned risk is the distance from entry to the initial stop, in dollars, times the number of contracts. If a trade had no stop, use a fixed dollar amount per trade as the risk unit and apply the same amount to every trade.
  2. Divide each result by its planned risk. A trade that made $900 with $300 of planned risk is +3R; a trade that lost $150 with the same risk is −0.5R.
  3. Compute the average and the standard deviation of the R-multiples. A spreadsheet does both with one function each.
  4. Apply the formula. SQN = (average R ÷ standard deviation of R) × √N, where average R is the mean R-multiple, standard deviation of R is the spread from step 3, N is the number of trades, and √N is its square root.
Four steps from a dollar trade list to one SQN, using a hypothetical strategy that risks 300 dollars on each of 64 trades: list each trade with its risk, divide by the risk to get R-multiples such as plus 3R, take the mean of 0.3R and the spread of 1.2R, and compute 0.25 times the square root of 64 to get an SQN of 2.0 From trades to one SQN Hypothetical: $300 risk, 64 trades 1. Trade list +$900, risk $300 2. Into R $900 ÷ $300 = +3R 3. Mean, spread +0.3R, 1.2R 4. Formula 0.25 × √64 = 2.0 Mean ÷ spread × √trades. Here: 2.0, bottom of average.
From a dollar trade list to one SQN number in four steps. The example values come from the hypothetical box below.

Hypothetical example

A strategy risks $300 on every trade and has 64 closed trades after costs. Three of the rows: +$900 becomes +3R, −$300 becomes −1R, +$150 becomes +0.5R. Across all 64 trades the average R-multiple is +0.3R (an average trade of $90) and the standard deviation of the R-multiples is 1.2R. SQN = (0.3 ÷ 1.2) × √64 = 0.25 × 8 = 2.0. On Van Tharp's scale that is the bottom of the average band.

The average R on its own is the expectancy per trade in R units; dividing it by the spread turns it into a consistency ratio, and the square root of the trade count turns that ratio into a confidence-weighted score. The next section explains why that last factor needs a cap.

How many trades does SQN need?

SQN needs about 100 trades to be read at face value: under about 30 trades the score moves whenever two or three trades change, and above 100 trades the square-root factor inflates the score for sample size alone, which is why Van Tharp capped the square-root term at 100 trades. With the cap, a strategy with 400 trades is scored as if it had 100, and the comparison between strategies is about their consistency rather than about how long their history is.

The cap exists because of how the formula behaves. Hold the average at 0.25R and the standard deviation at 1.0R and change only the trade count: at 10 trades SQN is 0.79, at 30 trades 1.37, at 50 trades 1.77, and at 100 trades 2.5. Nothing about the strategy changed; only the sample grew. Without the cap, the same strategy would show 5.0 at 400 trades and look superb for no trading reason.

For one strategy with a mean of 0.25R and a spread of 1.0R, SQN rises from 0.79 at 10 trades to 1.37 at 30, 1.77 at 50 and 2.5 at 100 trades, then stays flat at 2.5 because of the 100-trade cap; below 30 trades the score is too unstable to read More trades, higher SQN Same strategy: mean 0.25R, SD 1.0R Too few 2.5 Capped at 100 10 30 100 400 trades The rise is sample size, not skill. So: read SQN near 100 trades.
The same strategy scores higher as the trade count grows, until the cap at 100 trades holds the score flat. Below 30 trades the number is too unstable to read.

The low end is the more common problem for futures strategies that trade a few times a month. A swing strategy with 24 trades in two years gives an SQN that one large winner or loser can move by half a point. Two fixes work: lengthen the history until the trade list holds about 100 trades, or use walk-forward analysis to collect more out-of-sample trades from the same history, so that the SQN you read comes from trades taken with settings chosen before their data existed.

What SQN score counts as good?

On Van Tharp's scale a score between 2.0 and 2.5 is average, 2.5 to 3.0 is good, 3.0 to 5.0 is excellent, and anything below 1.6 is hard to trade; a backtest score above 5.0 is usually a sign of too few trades or of a strategy selected from many candidates rather than a sign of quality. The bands assume that commission and slippage are already inside each trade result and that the trade count is near 100.

SQN scoreVan Tharp's labelWhat it usually means in a backtest
Below 1.6Hard to tradeThe spread of trades is large relative to the average; losing streaks will be long
1.6 to 2.0Below averageA positive edge that is easy to lose to a small rise in slippage
2.0 to 2.5AverageA tradeable result if the trade count and costs are honest
2.5 to 3.0GoodConsistent trades; check that the result survives out-of-sample
3.0 to 5.0ExcellentRare on a single-market futures strategy after costs; confirm trade count
5.0 to 7.0SuperbIn a backtest, check first for a small sample or a best-of-many selection
Above 7.0Check for overfittingAlmost always a sample or selection effect rather than a market pattern
Van Tharp's SQN bands on one scale, assuming costs are included and about 100 trades: the low end, below 1.6 hard to trade and 1.6 to 2.0 below average, calls for a check of costs; 2.0 to 5.0 runs from average to excellent and can be read as a band; the high end, above 5.0 and above 7.0, calls for a check of sample size and selection What the SQN bands mean Costs included, about 100 trades 1.6 2.0 2.5 3.0 5.0 7.0 Low end Read the band High end Check costs Average to top Check sample Both ends need a second look. So: costs at low, sample at high.
Van Tharp's bands on one scale. Both ends deserve a second look in a backtest: the low end for costs, the high end for sample size and selection.

Costs matter more for SQN than for most report numbers, because costs lower the average R without lowering the spread much. Take the hypothetical strategy above: if commission and slippage had been left out, every trade would sit higher by the same amount, the average R would rise, the standard deviation would barely change, and the score would jump a band. Put commission and slippage into the backtest before you compute SQN, not after, or the bands describe a strategy you cannot trade.

The high end needs the opposite check. Bailey, Borwein, López de Prado and Zhu (2014) show that when many strategy variants are tested on the same history, the best of them scores well even when none has an edge, and the effect grows with the number of variants. An SQN above 5 on a strategy that came out of a large search is the expected outcome of the search, not evidence about the market.

SQN vs Sharpe ratio: what is the difference?

SQN and the Sharpe ratio both divide an average by a spread, but SQN works per trade in R-multiples and scales by the trade count, while Sharpe works per time period in returns and scales by the number of periods in a year; so SQN ignores how long trades take and Sharpe ignores how many trades produced the return. The Sharpe ratio is the average return per period (a day or a month), after subtracting a cash rate (the return on a short-term government bill), divided by the standard deviation of those period returns, then multiplied by the square root of the number of periods in a year.

A simple comparison: measuring a car's fuel use per trip and per hour of driving gives two different rankings for the same car if some trips are short and some are long. SQN is the per-trip measure. It does not care whether a +2R trade took one day or one month. Sharpe is the per-hour measure. A strategy that holds a position 86 percent of the time produces a daily return series that moves on almost every bar, so its Sharpe ratio reflects every day of holding risk, while its SQN reflects only the trade exits.

PropertySQNSharpe ratio
Unit of measurementPer trade, in R-multiplesPer period, in percent return
Scaled by√trades, capped at 100√periods per year (about 252 for daily data)
Sensitive to holding timeNoYes
Sensitive to trade countYes, up to 100 tradesNo
Cash rateNot usedSubtracted from returns
Needs a planned risk per tradeYesNo
SQN and the Sharpe ratio both divide a mean by a spread, but SQN works per trade, ignores holding time and counts trades, while Sharpe works per period, counts holding time and ignores trade count; on the ES backtest SQN sees 129 exits while Sharpe sees 6.5 years of daily holding risk Per trade vs per day Both divide a mean by a spread SQN Sharpe Unit Per trade Per period Holding time Ignored Counted Trade count Counted Ignored ES backtest 129 exits 6.5 years Each misses what the other sees. So: read SQN next to Sharpe.
The same mean-over-spread idea on two different units. A strategy that stays in the market most of the time can rank well on one measure and poorly on the other.

The two measures disagree most on slow strategies. A trend rule that takes 20 trades a year and holds for weeks can show an average SQN because its exits are consistent, while its daily returns swing with the market every day and give a modest Sharpe ratio. Lo (2002) shows that the Sharpe ratio's own estimation error depends on the number of periods and on how returns are correlated from one period to the next, so neither measure is free of sample-size effects; they just count different samples. Read SQN next to the Sharpe, Sortino and drawdown figures of a backtest report, not instead of them, because SQN says nothing about drawdown or about how long the account sat in a position.

What does SQN look like on a real ES backtest?

A real report gives you two of the three inputs SQN needs, the trade count and the average trade, and you must build the third, the spread of R-multiples, from the per-trade list yourself. The run below, made with AlphaPrime (Valynox), tested ES daily bars from 2019-01-02 to 2025-06-30, long and short, one contract, with $20 commission and $25 slippage per trade. It used a Linear Regression rule as its only entry and exit, with no stop, no target and no filters. That is a stand-in rule built from a standard indicator, not a test of SQN itself. The candidate shown is the one the search kept out of 1,024 it tried, picked for its return against its drawdown.

Source: AlphaPrime product engine (CPU), run 2026-10-31. ES daily bars, 2019-01-02 to 2025-06-30, long and short, 1 contract, $20 commission and $25 slippage per trade.

NumberResult
Net profit (closed trades)$88,920
Max drawdown$64,710
Trades129
Win rate55.04%
Profit factor1.331
Average trade$689.3
Time in market86.29%
Look at the trade count and the average trade: these feed SQN. The max drawdown and the time in market do not enter the formula at all, which is why SQN is read beside them, not alone.
Look at the trade count and the average trade: these feed SQN. The max drawdown and the time in market do not enter the formula at all, which is why SQN is read beside them, not alone. ES · daily · 2019-01-02 to 2025-06-30 · CPU engine backtest

Three things stand out for SQN. First, 129 trades is above the 100-trade cap, so the square-root term would be 10 and the score would depend only on average R over spread. Second, the rule has no stop, so there is no planned risk per trade; to compute R-multiples you would set one fixed dollar risk unit and divide every trade by it, which keeps the ratio of average to spread intact. Third, the report's average trade of $689.3 is the numerator in dollars, but the spread is missing: you need the per-trade list to compute it. AlphaPrime prints that trade list in its Performance Report, next to the equity and drawdown views, so the standard deviation of trade results is one spreadsheet step away from that trade list.

Whatever SQN this trade list gives, the number is flattered. The candidate was picked after the fact as the best of 1,024 on return against drawdown, and Bailey and López de Prado (2014) show that the best score from many trials is biased upward by the number of trials, so a score read from the full history overstates what the rule did on its own. The rule and the indicator did not earn these figures in any sense a reader can expect to repeat; the search found the one history-fitted variant that looked best. The time in market of 86.29 percent also means the Sharpe ratio of this run would be judged on more than six years of daily holding risk while SQN would see only 129 exits, a live case of the disagreement from the previous section.

What to do next is concrete. Export the trade list from your own backtest, set one risk unit, compute the R-multiples and the in-sample SQN. Then run a walk-forward test on the same rule and compute SQN again from the joined out-of-sample trades only. If the out-of-sample score drops more than one band, or the sign of the walk-forward out-of-sample P&L turns negative, the in-sample score was describing the selection. If it holds within a band, you have a consistency score you could have traded.

Frequently asked questions

What SQN score is good?

On Van Tharp's scale, 2.0 to 2.5 is average, 2.5 to 3.0 is good and 3.0 to 5.0 is excellent, with scores below 1.6 labelled hard to trade. The bands assume costs are included in every trade and the trade count is near 100. A backtest score above 5.0 is more often a sign of a small sample or of a strategy selected from many candidates than a sign of quality, so check those two things before reading the band.

How many trades do you need to calculate SQN?

Aim for about 100 trades after costs. Below about 30 trades the score can move by half a point when two or three trades change, so it is a hint rather than a result. Above 100 trades the square-root term inflates the score for sample size alone, which is why Van Tharp capped it at 100. If a strategy produces too few trades, lengthen the history or use walk-forward analysis to collect more out-of-sample trades.

How do you calculate the SQN formula?

Divide each trade's result by the risk you planned for it at entry to get an R-multiple. Take the average and the standard deviation of those R-multiples. SQN equals the average divided by the standard deviation, multiplied by the square root of the trade count, with the trade count capped at 100. A spreadsheet does the average and the standard deviation with one function each.

What is the difference between SQN and the Sharpe ratio?

Both divide an average by a spread. SQN uses trade results in R-multiples and scales by the square root of the trade count, so it ignores how long each trade lasted. The Sharpe ratio uses returns per day or month, subtracts a cash rate (the return on a short-term government bill), and scales by the square root of the periods in a year, so it counts every day a position is held but not the number of trades. A slow strategy that holds for weeks can score average on SQN and modest on Sharpe at the same time.

Can you calculate SQN for a strategy with no stop loss?

Yes, by choosing one fixed dollar amount as the risk unit and dividing every trade by it. Because the same number divides the average and the spread, the ratio between them, and therefore the SQN, does not depend on which amount you choose. What you lose is the link between R and an actual stop distance, so the R-multiples describe consistency but not the risk you really took on each trade.

References

  • Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
  • Bailey, D. H., & López de Prado, M. (2014). The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting and Non-Normality. The Journal of Portfolio Management, 40(5), 94–107.
  • Lo, A. W. (2002). The Statistics of Sharpe Ratios. Financial Analysts Journal, 58(4), 36–52.