The system quality number is a single score that tells you how smooth and dependable a trading system’s results are, not just whether it made money. Two strategies can finish a year with almost the same profit and still be completely different animals to trade. One grinds out small, steady gains. The other bleeds for months and then pays for everything with two or three monster trades. Win rate won’t separate them properly. Expectancy alone won’t either. SQN does a better job.
The idea comes from Van K. Tharp, the trading coach who popularised R-multiples and position sizing. We’ll go through what the number measures, how to calculate it from your own trade log, and then grade two made-up systems that look similar on paper but score very differently.
In this article
What the system quality number actually measures
The Van Tharp Institute describes SQN as a measure of the relationship between the mean (the expectancy) and the standard deviation of a system’s R-multiple distribution, with an adjustment for the number of trades. That is three ingredients:
- Expectancy, the average R you make per trade. If your planned risk on a trade is ₹5,000 and you make ₹10,000, that trade is +2R. Lose ₹5,000 and it is −1R.
- Standard deviation of those R-multiples, which captures how wildly the results swing around the average.
- Number of trades, because an average built on 8 trades means much less than one built on 80.
In plain terms, SQN rewards a system for earning a decent average per trade, and punishes it when that average comes with a lot of noise. On its Tharp Think concepts page, the institute says the higher the SQN, the easier it is to use position sizing strategies to meet your objectives. That is the real point. SQN is not a profit forecast. It tells you how hard you can lean on a system before its bad patches hurt you.
The SQN formula
The Python backtesting library Backtrader, which ships an SQN analyser, writes the formula out in its analyzers reference like this:
SQN = √(number of trades) × average(trade result) ÷ standard deviation(trade result)
Tharp’s own work expresses each trade result as an R-multiple, so the average is your expectancy in R. If you plug in rupee profits instead, the units cancel out anyway, since you divide an average in rupees by a standard deviation in rupees. We prefer R because it lets you compare a ₹2 lakh account with a ₹20 lakh one on the same footing.
A few practical points before you calculate:
- Backtrader’s documentation says the SQN value should be deemed reliable only when there are at least 30 trades. Below that, treat the score as a rough hint.
- Include costs. Brokerage, STT, exchange charges and slippage all shrink your R-multiples, and on intraday systems they can be the difference between a positive and a negative average.
- Use the R you actually planned at entry, from your stop-loss distance, not some risk number you worked out after the trade was over.
The rating bands traders use
Backtrader’s reference attributes the following grading scale to Tharp’s categorisation of trading systems:
- 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
- 7.0 and above: “Holy Grail?” (the question mark is in the original, and it is earned)
Read the top band with suspicion. When a backtest throws up a score that high, our first instinct is to look for a bug, a look-ahead error or survivorship bias in the stock list before celebrating.
A system’s profit tells you where it ended up. Its SQN tells you how bumpy the road was, and the bumps are what make traders abandon good systems at the worst moment.
Worked example: grading two systems with similar profits
Let’s take two hypothetical traders, each with 30 closed trades on NSE stocks. Both risk ₹5,000 per trade, so 1R is ₹5,000. These numbers are invented for illustration; they are not anyone’s real track record.
System A, a swing-trading pullback setup. Its 30 R-multiples, in order:
+1.2, +0.8, +1.5, −1, +1.0, −1, +0.9, +1.3, −0.8, +1.1, −1, +0.7, +1.4, −1, +1.0, +1.2, −0.6, +0.9, −1, +1.1, +1.6, −1, +0.8, +1.0, −1.2, +1.3, −1, +0.9, −1, +1.2
System B, a breakout trend-follower. Its 30 R-multiples:
−1, −1, +4.5, −1, −0.5, −1, −1, +6.0, −1, −1, −1, +2.5, −1, −0.8, −1, −1, +8.0, −1, −1, +3.0, −1, −1, −1, +5.5, −1, −0.7, −1, −1, +2.0, −1
Here is how they compare. All figures below are our own calculations from the trade lists above, using the sample standard deviation.
| Measure | System A | System B |
|---|---|---|
| Trades | 30 | 30 |
| Winners / losers | 19 / 11 | 7 / 23 |
| Win rate | 63% | 23% |
| Average winner | +1.10R | +4.50R |
| Average loser | −0.96R | −0.96R |
| Total | +10.3R (₹51,500) | +9.5R (₹47,500) |
| Expectancy (mean R) | +0.34R | +0.32R |
| Standard deviation of R | 1.03R | 2.55R |
| SQN | 1.82 | 0.68 |
Look at the expectancy row. A makes 0.34R a trade and B makes 0.32R. On a trading expectancy basis they are practically tied, and the gap in total profit is just ₹4,000 over 30 trades.
The SQN row is where they split. For System A: √30 is about 5.48, and 5.48 × 0.3433 ÷ 1.0338 comes to roughly 1.82. For System B: 5.48 × 0.3167 ÷ 2.5469 comes to roughly 0.68. Same profit, close to triple the score.
Why System B scores so low
B’s results are spread far apart. Twenty-three of its 30 trades lose, and the profit hangs on seven winners. We can test how fragile that is by knocking out the single best trade, the +8R one. The remaining 29 trades add up to just +1.5R, an average of about +0.05R a trade, and the SQN falls to about 0.13. One trade was carrying most of the year.
That doesn’t make trend-following bad. Plenty of durable systems look exactly like B. What the low score tells you is that B needs far more trades before you can trust its average, and that you should size it more conservatively, because long losing streaks are built into it. A system that loses 23 times out of 30 will throw up long runs of back-to-back losers, and those runs are exactly where traders tend to give up on a strategy.
Why System A isn’t a slam dunk either
A scores 1.82, which sits in the “below average” band on the scale above. The losses are contained and the wins are steady, but the edge per trade is thin. Add slippage on a few illiquid small-cap entries and that 0.34R average can shrink fast. A 1.8 system is worth trading small and tracking closely, not something to pile leverage on.
How the number of trades changes the score
The √N term is the part people tend to skip. Take System A’s average and standard deviation and pretend they had come from a different number of trades:
- With 10 trades, √10 × 0.3433 ÷ 1.0338 gives roughly 1.05.
- With 30 trades, as above, roughly 1.82.
- With 100 trades, √100 × 0.3433 ÷ 1.0338 gives roughly 3.32.
Same behaviour per trade, very different scores. Two things follow from that. First, an SQN is only comparable between systems tested over a similar number of trades. Second, a high score from a high-frequency intraday system can partly reflect sheer trade count rather than a better edge. When we compare an intraday scalp with a positional system, we look at the expectancy and the standard deviation separately as well as the combined score.
More trades make the score climb even if nothing about the edge improves, so always ask how many trades sit behind an SQN before you are impressed by it.
Calculating SQN from your own trade log
You don’t need software for this. A spreadsheet does the job:
- For every closed trade, note the planned risk at entry (entry price minus stop-loss, times quantity) and the actual profit or loss after all charges.
- Divide the P&L by the planned risk to get the R-multiple. A ₹7,500 profit on ₹5,000 of risk is +1.5R.
- Put the R-multiples in one column. Use AVERAGE for the mean and STDEV.S for the sample standard deviation.
- Multiply the mean by the square root of the trade count (SQRT(COUNT(…))) and divide by the standard deviation.
- Recalculate after every 10 trades or so, and keep a separate score for each strategy. Mixing a swing setup with an options-selling setup in one column gives a number that describes neither.
If you track drawdowns too, pair this with a Monte Carlo simulation of your R-multiples. SQN gives you one number; reshuffling the trade order shows you the losing streaks that number implies.
Where SQN falls short
- It treats big wins as “noise”. Standard deviation penalises upside swings as much as downside ones, so a system with occasional huge winners gets marked down even when those winners are the whole point.
- It assumes the past distribution repeats. A system tested only through one strong bull phase may show a fine SQN that collapses once the market turns sideways.
- Small samples lie. Below 30 trades the score jumps around with every new result.
- Garbage R in, garbage SQN out. If you move stops after entry, or quietly leave out the trades you “didn’t really mean to take”, the score is fiction.
Using the system quality number in practice
We use SQN as a filter, not a verdict. A system with a positive expectancy and a modest score can still be traded, just with smaller risk per trade. A system with a strong score earns the right to a bigger slice of capital, provided the sample is large enough and the backtest is honest. Either way, the sizing decision belongs in your risk management plan, and the score is one input to it.
The bigger lesson from the two systems above: before you ask “how much did it make?”, ask “how evenly did it make it?” That second question is the one that tells you whether you’ll still be following the system six months from now.
Disclaimer: This article is for educational purposes only and is not investment advice. The two trading systems, their trades and all rupee amounts in the examples are hypothetical. Trading in equities and derivatives involves risk, including loss of capital; consult a SEBI-registered investment adviser before making trading decisions.

Leave a Reply
Join the conversation
Commenting is open to registered readers. Sign up with just your email — no password needed, and it takes under a minute.
Sign up to comment Log in