What is a good profit factor?
Profit factor is the most quoted number in a backtest and one of the easiest to be fooled by. Here is what it means, and what the profit factors of 404 real backtest variants look like.
Short answer: there is no universal “good” number. A profit factor means little without the trade count, the costs and an out-of-sample test. In our 404 variants the median profit factor was 0.97 over the whole test, and only 48 reached 1.2 or more.
01What profit factor is
Profit factor is gross profit divided by gross loss. A value of 1.0 means the winners exactly paid for the losers; above 1.0 the strategy made money, below 1.0 it lost. It says nothing about how many trades, how big the account was, or how deep the drawdown went, and it moves a lot with costs: a strategy with a profit factor of 1.3 before costs can sit below 1.0 after them. Always quote it net of costs.
02What 404 variants show
We have tested 404 variants of popular strategies on ES and NQ futures, spot gold, four currency pairs and Bitcoin, all net of costs and split into a development, a validation and a holdout period. How many fell in each profit-factor range:
| Period | below 0.8 | 0.8 to 1.0 | 1.0 to 1.2 | 1.2 to 1.5 | 1.5 or more | Median |
|---|---|---|---|---|---|---|
| Development | 35 | 164 | 141 | 35 | 25 | 1.00 |
| Validation | 49 | 205 | 101 | 23 | 22 | 0.96 |
| Holdout | 51 | 202 | 96 | 32 | 21 | 0.95 |
- The median variant had a profit factor of 0.97 over its whole test: a little under break-even after costs.
- Only 62 variants had a development profit factor of 1.2 or more, and 26 of those fell below 1.2 in validation.
- 45 variants reached 1.2 in validation and 48 over the whole test. 2 of the 404 passed every gate, all of them on NQ in the New York session, and 1 more passed and was later made Inconclusive by a data check.
03Why a high profit factor can mislead
- It fades out of sample. The gold breakout AS-B had a development profit factor of 1.41, the highest among the gold variants, then 0.86 in validation and 0.91 in the holdout. The RSI(2) pullback (long only) went 1.24 in development, 0.84 in validation and 1.36 in the holdout. Gold breakout post · RSI(2) post.
- Small samples swing wildly. The long-only RSI divergence variant shows 1.50, 1.47 and 3.21 in the three periods, and the 3.21 comes from only 59 holdout trades. RSI divergence post.
- The market can do the work. A rising market lifts any long-only strategy. A random-entry control with the same exits tells you how much of the profit factor is the market, not the signal.
- A few trades can carry it. Remove the ten best trades and see what is left.
04What to check instead
- Net of realistic costs, on every trade.
- Held up on data the rules never saw (validation and holdout), with the trade count shown.
- Better than a random-entry control matched to the signal.
- Still positive without its ten best trades.
- Seen on a second market.
Our own gate is a validation profit factor of at least 1.2, together with the other five gates. That is our bar, not a universal rule. The full method is in the protocol and the step-by-step version is how to backtest a trading strategy without fooling yourself. Terms are explained in the glossary.