← All posts
Published · Updated · NoxarQuant

What Is SQN? The System Quality Number Explained

Most trading metrics answer one question each. Expectancy says what an average trade returns. The spread of results says how far individual trades wander from that average. The trade count says how much evidence stands behind both. The System Quality Number, SQN, was Van Tharp's attempt to fold all three into a single figure. That makes it more informative than any one of its parts, and easier to misread than any one of them.

The formula

SQN = (average R / standard deviation of R) x square root of the number of trades.

R is a trade's result expressed as a multiple of what was risked on it. A trade that risked 100 and made 250 is +2.5R. A full stop-out is -1R. The average R is simply expectancy measured in units of risk, covered in more detail in what expectancy is and what it hides. The standard deviation measures how widely individual results scatter around that average.

A hypothetical example: 25 trades with an average of +0.4R and a standard deviation of 1.2R. The ratio is 0.4 / 1.2, one third. The square root of 25 is 5. SQN is 5 / 3, roughly 1.67.

Statistically, SQN is the one-sample t-statistic for the question "is the average trade above zero?" That is the most useful way to read it. It does not measure how good a system is per trade. It measures how clearly the data separates the average trade from zero.

Tharp published a rough guide: below 1.6 hard to trade, 1.6 to 1.9 below average, 2.0 to 2.4 average, 2.5 to 2.9 good, 3.0 to 5.0 excellent, 5.1 to 6.9 superb, and 7 or above what he called Holy Grail territory. They are rules of thumb, not laws.

What it rewards

Positive expectancy, obviously. A negative average R gives a negative SQN regardless of anything else.

Consistency. Take two hypothetical systems that both average +0.5R over 30 trades. One has a standard deviation of 1.0R, the other 2.5R. The first scores 0.5 x 5.48, about 2.74. The second scores 0.2 x 5.48, about 1.10. Same average, very different SQN, because the second system's average is buried in far more noise. It is the same point made about win rate: a single summary figure hides the character of the results behind it.

Sample size. The square root of n means more trades lift the score even when the per-trade ratio stays fixed. At a ratio of 0.3, 25 trades give an SQN of 1.5, 100 trades give 3.0 and 400 trades give 6.0.

What it penalises

Variance, all of it. The standard deviation does not distinguish scatter on the downside from scatter on the upside. A system that makes its money from a few very large winners has a wide spread of results, so SQN partly treats those winners as noise. Low win rate systems with a fat right tail can score modestly despite healthy expectancy. It is the complaint usually made about the Sharpe ratio, and for good reason: SQN is essentially a per-trade Sharpe ratio multiplied by the square root of the trade count.

Thin samples. A promising ratio on 9 trades is multiplied by 3. The same ratio on 100 trades is multiplied by 10.

The 100-trade cap

That last property cuts both ways. Because the square root keeps growing, a large enough sample can push a thin edge to an impressive score. In the example above, 400 trades at a ratio of 0.3 produce 6.0, superb on Tharp's scale, even though the average trade sits only 0.3 standard deviations above zero.

So a common convention, one Tharp himself used, is to cap n at 100. Capped, the 400-trade system scores 3.0. Neither version is wrong. They answer different questions. The uncapped figure asks how confident the data allows anyone to be that the average is above zero. The capped figure asks how good the edge is relative to its own noise, on a standardised sample. Anyone quoting an SQN ought to say which one they mean.

Where it breaks down

It assumes R is meaningful. R needs a defined initial risk on every trade. Many traders never record one, and an R computed from a stop that was moved, or never placed, is not measuring what the formula expects.

It assumes the spread already seen is the spread that exists. Trade results are rarely normally distributed, and on a small sample the rare large loss may not have happened yet. Until it does, the standard deviation is understated and SQN overstated.

It can be fooled by results that are too clean. Twenty hypothetical trades averaging +1.0R with a standard deviation of 0.1R produce an SQN of 10 x 4.47, roughly 45. A number like that is less often a brilliant system than a data problem, a very short window, or a strategy collecting small gains while carrying a tail risk that has not shown up yet.

It inherits every problem of testing many things at once. Read as a t-statistic, and under textbook assumptions of independent, roughly normal trades, a group of 20 trades with no edge would still cross an SQN of 2.5 about once in 92 tries. For one group, that is rare. Across 40 independent groups with no edge, the chance that at least one crosses is about 35 percent. Slice a record finely enough and something will look excellent. More on this in how to tell if a strategy is overfit.

And it describes the past. A high SQN on last year's trades says nothing by itself about whether those conditions still hold, the subject of your edge is a moving target.

How NoxarQuant uses it

NoxarQuant tags every trade with its setup, session, volatility bucket, RSI bucket and trend. Trades that share the same tags form a cluster, and each cluster is labelled strong, promising, too early, no clear edge or lost money (in the API: CORE, PROMISING, FORMING and NDC). SQN is one input to that classification.

For each cluster, the classifier computes SQN as the average of the trades' recorded P&L divided by its sample standard deviation, multiplied by the square root of the cluster's trade count. Two details matter.

First, n is not capped at 100. The classifier is asking the t-statistic question, whether a cluster's average is distinguishable from zero, so the full sample counts.

Second, it uses P&L rather than R. Because SQN is a ratio, multiplying every trade by the same constant leaves it unchanged, so if risk per trade is constant the two versions give the same answer, and if it is roughly constant they give nearly the same answer. If position size varies a lot, larger trades carry more weight in the P&L version.

A cluster is labelled strong only if it has at least 20 trades and an SQN of at least 2.5. Neither condition is enough alone. Twenty trades at an SQN of 2.0 is not strong, and an SQN of 4 on 15 trades is not strong either. At 20 trades, clearing 2.5 means the average must sit at least about 0.56 standard deviations above zero. At 100 trades the bar is about 0.25. In the Risk view and through the Claude connection, a strong or promising verdict is also shown as too early until the cluster has at least 30 trades. Under 12 trades a cluster has no verdict either way.

The too-clean problem is handled separately. A cluster that has won 90 percent or more of at least 20 trades is held back from strong and promising whatever its SQN, because a run that clean is more often a data artefact or a hidden tail than an edge.

CORE is therefore a statement about history: enough trades, and an average far enough from zero relative to its own noise. It is not a forecast. The Monte Carlo simulation asks a different question again: resampling the out-of-sample trades with replacement, what range of outcomes and drawdowns a record like this could plausibly have produced.

The point

SQN is a good summary because it refuses to look at the average without the spread and the sample. It is a poor summary when read as a grade rather than as a measure of evidence. The useful habit is to read it next to its parts, the trade count, the average and the spread, for each slice of your own record, which is the kind of breakdown our case study walks through.

Run this on your own trades →

For informational purposes only. Past performance is not indicative of future results. Not financial advice. How we write and correct