Survival of the fittest strategy
Every strategy contains numbers you guessed. Why RSI below 30 and not 27? Why a 14-period ADX? You picked them because they are the ones everybody picks, and then you never went back.
How a generation works
- Variations are spawned from the strategy you already built, changing only what you allowed to change — see the three levels below.
- Every one is backtested against the same history, with the same costs, so the comparison between them is fair.
- The bottom half is discarded. No appeals, no manual rescuing of a variation you happen to like.
- The survivors are bred together to create new strategies, reusing the parameter values that earned their keep, to produce the next generation.
- Repeat. Each generation concentrates the search where results are improving instead of sampling the whole space evenly.
You decide, per condition, how much is up for grabs
This is the part that separates "evolve my strategy" from "search for a new one". Every condition in your strategy carries one of three levels, and you set them individually.
- Keep. The condition survives exactly as written. Nothing about it moves. This is for the rule that is your idea — the reason you built the strategy in the first place.
- Retune. The default. The condition keeps its indicator, its timeframe and its comparison; only the numbers move. "Keep my 4h EMA crossover, find better periods."
- Change. Fully disposable. The search may retune it, change its timeframe, swap the comparison, replace the indicator with a different one, or drop the condition entirely.
So Refine can change your idea, as much or as little as you let it. Freeze everything you are sure about and open the rest, and it searches around your conviction. Open everything and it will hand back something you did not write.
Why not just run a lot of backtests?
Because the parameter space is enormous. Six conditions with ten plausible values each is a million combinations, and testing them evenly wastes almost all of the work on regions that were obviously bad after the first few. A generational search spends its runs where the results are getting better — which is the difference between a few hundred backtests and a few million.
After three generations
- Your original
- 1.9R
- Best variation
- 2.4R
- RSI threshold
- 30 → 27
- ADX floor
- 25 → 22
- Variations tested
- 144
Small moves, and that is the healthy case. A variation that beats your original by a wide margin deserves more suspicion, not less.
Illustrative figures, to show what a finished run reports.
What this does not do — and the risk you should understand
Refine searches; it does not judge. It cannot tell you whether the winning variation is one you should trade, and it cannot turn an idea with no edge into one that has an edge — opening every condition to change does not conjure a signal that was never in the data.
More importantly: any process that searches thousands of variations against one history will find some that fit that history by luck. That is overfitting, it is unavoidable in principle, and pretending otherwise would be dishonest. Treat a refined strategy as a hypothesis to check against data it has not seen. Be most suspicious when the improvement is large and the trade count is small — that combination is the signature of a curve fitted to noise, not of a better strategy.
Questions
What does Refine actually change?
Whatever you allow it to. Each condition in your strategy is set to one of three levels: frozen keeps it exactly as written, tunable lets its numbers move but keeps the indicator, timeframe and comparison, and open makes it fully disposable — the search can retune it, change its timeframe, swap the comparison, replace the indicator, or drop the condition altogether. Tunable is the default, so out of the box it searches parameters; freeze the rules that are your idea and open the rest, and it will search a good deal wider than that.
How is this different from just running lots of backtests?
It is lots of backtests, chosen well. Each generation keeps the variations that scored best and builds the next generation from them, so the search concentrates where results are improving instead of sampling the whole parameter space evenly. That is the difference between a few hundred runs and a few million.
Isn't this just overfitting?
It can be, and pretending otherwise would be dishonest. Any process that searches thousands of variations against one history will find some that fit that history by luck. Treat a refined strategy as a hypothesis to test on data it has not seen, and be suspicious of a variation that beats your original by a wide margin on a small number of trades.
Can I keep my original strategy?
Yes. Refine produces candidates alongside what you started with and shows you how each compares. Nothing is replaced unless you choose to replace it.