LEARN · EN · easyquanttrading.com
We ran 4,018 strategies. 313 passed, and 51 were actually different.
Search hard enough and you will find strategies that look good. This is arithmetic, not insight. What is less often measured is what that search leaves behind: how many of the survivors are actually different from each other, how independent they are, and how much of their apparent quality is a property of the sample rather than of the idea. We have the infrastructure to measure exactly that, so we did, and this page reports what came out.
By the EasyQuant Research Team·Published 2026-09-26·We publish the tests our own strategies fail. Nothing here is a return promise.
- 313 candidates passed our performance gates; only 51 were behaviourally unique
- Overall redundancy was 83.7% — on gold daily bars it was 97%
- Median pairwise correlation between survivors was 0.97; no pair was negatively correlated
- The highest Sharpe ratios in the library sit on samples with a median of 20 trades
- Distinct at the discovery stage does not mean independent at the portfolio stage
What we measured, and how
We run eight strategy-discovery engines continuously — tree-based genetic programming, linear genetic programming, NSGA-II and NSGA-III, particle swarm, differential evolution, MOEA/D and a template library. Every candidate that survives the first performance filters is stored, along with its expression, its metrics and its equity curve.
At the time of this measurement the library held 4,018 strategies. The numbers below come from three tables in that library: the candidate table itself, a pre-aggregated fact table keyed by instrument, timeframe and engine, and the record of real-terminal verification runs. The extraction script is a few dozen lines of read-only SQL and is described at the end so the method can be checked rather than taken on faith.
Two definitions matter before any number means anything. Passing means a candidate cleared our performance gates on the evaluation window — it is a filter, not an endorsement. Unique means its position series is not materially the same as another candidate's; we cluster candidates whose exposure overlaps heavily and count clusters, not rows.
Finding one: 313 passed, 51 survived de-duplication
Across all the instrument and timeframe cells in our fact table, 313 candidates passed the performance gates and 51 were unique — an overall redundancy of 83.7%.
The aggregate hides a wide spread, and the spread is the interesting part. Gold was far more redundant than crypto:
| Cell | Passed | Unique | Redundancy |
|---|---|---|---|
| XAUUSD D1 | 36 | 1 | 0.97 |
| XAUUSD M15 | 68 | 3 | 0.96 |
| XAUUSD M30 | 43 | 3 | 0.93 |
| XAUUSD H1 | 65 | 5 | 0.92 |
| XAUUSD H4 | 14 | 1 | 0.93 |
| BTCUSDT D1 | 23 | 6 | 0.74 |
| ETHUSDT D1 | 24 | 8 | 0.67 |
| ETHUSDT H4 | 17 | 8 | 0.53 |
| BTCUSDT H1 | 6 | 6 | 0.00 |
Cells with five or more passing candidates. Redundancy = 1 − (unique ÷ passed).
What the gold rows mean
On gold daily bars, thirty-six candidates passed and exactly one was distinct: thirty-six strategies, one idea. On BTCUSDT hourly, six passed and all six were distinct. We do not think the second row means crypto is easier to find edges in. It is a much smaller cell with a much shorter and more volatile history, and a six-candidate cell carries very little information either way. The honest reading is that the gold cells had enough candidates for the optimiser to converge, and the crypto cells did not.
The convergence itself is expected. Search algorithms are optimisers: given a fitness function and the same price series, different engines arrive at the same few shapes. On one gold cell, seven different engines all produced strategies in the same equivalence class. The engines differ in how they search; the space of things that work on one instrument over one window is much smaller than the space of things they can express.
Finding two: the survivors are not independent of each other
De-duplication removes candidates that take the same positions at the same times. It does not remove candidates that merely behave alike. So we measured the second thing directly: the pairwise correlation of equity curves, using only curves of identical length from the same evaluation window so there is no alignment artefact.
Across 846 pairs, the median correlation was 0.971. The minimum across every cell was 0.70 — still strongly positive. Not one pair in the entire sample was negatively correlated.
| Cell and curve length | Pairs | Min | Median | Max |
|---|---|---|---|---|
| XAUUSD D1 (366 points) | 171 | 0.968 | 0.991 | 1.000 |
| XAUUSD H1 (304 points) | 351 | 0.819 | 0.966 | 0.997 |
| XAUUSD H1 (329 points) | 91 | 0.890 | 0.968 | 1.000 |
| XAUUSD H1 (303 points) | 91 | 0.800 | 0.904 | 1.000 |
| XAUUSD M15 (301 points) | 36 | 0.921 | 0.966 | 0.999 |
| XAUUSD M30 (301 points) | 66 | 0.728 | 0.943 | 0.996 |
| BTCUSDT D1 (366 points) | 10 | 0.701 | 0.834 | 0.935 |
| ETHUSDT D1 (366 points) | 6 | 0.855 | 0.913 | 0.966 |
Pairwise equity-curve correlation, within instrument and timeframe, identical-length curves only.
Why de-duplication was not enough
This is the finding that changed how we describe our own product. De-duplication is necessary and it is not sufficient. After removing the strategies that are the same strategy, what remains is still, to a first approximation, the same trade. Adding a second de-duplicated gold strategy to a portfolio does not diversify the bet; it increases the size of it.
A caveat we owe the reader: the sample is 125 currently-listed strategies, and the window is 2023–2026, a period in which gold trended. Correlations measured inside a directional move are structurally flattering, because a shelf of long-biased systems on a trending instrument will look alike while the trend lasts. We think the direction of the finding survives that; we would not defend the third decimal place of it.
Finding three: the two problems have different fixes
It is worth separating these because they are usually discussed as one thing.
Redundancy is a discovery-stage problem. It happens because the search converges. The fix is to measure distinctness before ranking, so your top ten cannot be the same strategy ten times. It is a solved problem in the sense that the check is cheap and mechanical: compare position series and cluster.
Correlation is a portfolio-stage problem. It happens because every strategy in a cell is exposed to the same instrument over the same window. The fix is not de-duplication — those candidates genuinely are distinct behaviours — it is to look at what the collection is collectively exposed to. The number worth reporting is not how many strategies you hold but how many independent bets they represent, and on our own gold shelf that number is much closer to one than to fifty-five.
A practical consequence: a discovery run that reports a large count after de-duplication can still be reporting one bet. Both checks cost a few lines of arithmetic and both are worth running before anything is sized.
Finding four: the best-looking results are the smallest samples
This one we expected and it is still worth putting numbers on, because the shape of it is more specific than the usual warning.
The library's trade-count distribution is heavily skewed to the small end. The median candidate has 33 trades. 15% have fewer than 10, 45% fewer than 30, 62% fewer than 50, and 81% fewer than 100.
Now look at where the high ratios live. The 50 highest-Sharpe candidates in the library range from 5.44 to 10.00 — and their trade count has a median of 20, with a minimum of 3. Every candidate in the library with a Sharpe ratio above 8 sits on a sample of 4 to 44 trades, and none of them is currently on the shelf.
What makes this more than a curiosity is the mechanism. Taking a maximum over many noisy estimates biases that maximum upward, and the smaller each estimate's sample, the larger the bias. A search that evaluates thousands of candidates on short windows is therefore not merely at risk of producing lucky winners — it is *designed* to produce them, and it will produce them preferentially at the short end where the noise is widest. The extreme values are not the best ideas; they are the widest draws from the noise distribution.
The practical test we now apply first is the boring one: read the trade count before the ratio. If it is small, every other number on the page is provisional regardless of how good it looks.
Finding five: a backtest passing does not mean a terminal agrees
The last measurement is the one we consider most useful to publish, because it is about our own failure rate rather than about a general phenomenon.
Every strategy that survives our filters is run on a real MetaTrader terminal on the same instrument, and the result is recorded whether it passes or not. The record now holds 1,317 runs:
| Outcome | Count |
|---|---|
| unsupported (could not be run) | 631 |
| verified | 495 |
| weak | 85 |
| failed | 63 |
| divergent | 29 |
| mismatch | 14 |
Real-terminal verification outcomes. Unsupported runs are reported separately rather than counted as failures.
Reading the verification numbers honestly
Restricting to the 623 runs where both a backtest figure and a terminal figure exist, 559 had a positive backtest return — and 25 of those (4.5%) came out flat or negative on the terminal.
Read the denominator carefully. These are not raw candidates; they are strategies that had already cleared our own gates. Roughly one in twenty reversed sign when a program we did not write read a feed we do not control. And 631 runs could not be executed on that terminal at all, which we report as its own category rather than folding into a pass or a fail — collapsing them either way would misstate the result in one direction or the other.
What we think this does and does not show
It does not show that strategy search is pointless. It shows that the output of a search is a set of candidates, not a set of discoveries, and that turning one into the other requires measurements that the search itself cannot make.
It does not generalise to your search. Our engines, our fitness function, our instruments and our window produced these numbers. A different search over a different space would produce different ones, and we would expect the direction to hold rather than the magnitudes.
It does not establish that the surviving strategies have an edge. Everything here is measured on a past window. The correlation finding in particular is measured partly inside a trend, and the terminal check confirms reproducibility rather than profitability — a strategy that reproduces exactly is still allowed to lose money next year.
And it says nothing about the thing that decides whether any of this compounds: position sizing. A library of correlated strategies sized as if they were independent is a single large position, and the arithmetic of what that does to an account is a separate calculation with its own answer.
Reproducing this
Every number on this page came from read-only queries against our own library, and the definitions are stated above so they can be argued with rather than only believed. The counts of passing and unique candidates come from a pre-aggregated fact table keyed by instrument, timeframe and engine; the correlation figures come from equity curves of identical length, paired within the same instrument and timeframe; the verification outcomes come from the terminal run log.
Where a definition is a choice we made rather than a fact, we have said so: the uniqueness threshold is a high one that we would rather err on the strict side of, and calling a 50% drawdown 'ruin' would change the framing of any risk figure we publish. We would rather a reader know which numbers are measurements and which are conventions.
Current platform facts
Read live from the strategy library when this page was generated. These are the same counts published on our transparency page, and they change as strategies are added and rejected.
| Strategies in the audited library | 3674 |
|---|---|
| Flagged by the audit | 2013 |
| Flag rate | 54.8% |
| Checks still pending | 1651 |
| Passed the DSR overfitting check | 1 |
| Passed the significance check | 504 |
| DSR threshold used | 0.90 |
FAQ
- How many strategy candidates passed your filters?
- 313 across all instrument and timeframe cells in our fact table. Only 51 of them were behaviourally unique, giving an overall redundancy of 83.7%.
- What does high redundancy mean in practice?
- That most of what a search reports as separate findings is the same strategy under different parameters. On gold daily bars, 36 candidates passed and one was distinct. A portfolio built from such a shelf holds one bet, not thirty-six.
- Why are your strategies so highly correlated?
- They share an instrument, an evaluation window and a search objective. Everything in a gold hourly cell is a bet on gold over the same period, and optimisers given the same fitness function converge on the same few shapes. Correlation is measured within cells rather than across instruments.
- Do high Sharpe ratios in your library come from small samples?
- Yes. The 50 highest-Sharpe candidates have a median of 20 trades, and every candidate above a Sharpe of 8 sits on 4 to 44 trades. That is the expected output of taking a maximum over many small noisy estimates, not evidence of a discovery.
- What share of backtests fail real-terminal verification?
- Of 623 runs with comparable figures on both sides, 559 had a positive backtest return and 25 of those (4.5%) came out flat or negative on the terminal. A further 631 runs could not be executed on the terminal and are reported as their own category.
- Can I reproduce these numbers?
- The definitions are stated on this page and the queries are read-only against our own library. The uniqueness threshold and the evaluation windows are disclosed so the results can be compared rather than taken on faith.
More guides
- How EasyQuant validates strategies — evidence you can filter
- Honest backtesting, not pretty curves
- Gold strategy research that stays honest
- Overfitting detection: catch it before you deploy
- System Forge: design, then prove
- Walk-forward analysis: the only backtest that fights overfitting
- MT5 export without custody
- Glass box, not black box AI signals
Not investment advice. Historical results do not guarantee future performance. EasyQuant is a research factory — you execute on accounts you control.