What Does Adaptive Actually Mean in a Trading System?
· #adaptive-systems #volatility #walk-forward #risk-management #systematic-trading
Adaptive, in my system, means one thing: every distance it measures is expressed as a multiple of how much the market is currently moving, not as a fixed number of pips. The configuration itself never changes. That sounds backwards, and the walk-forward evidence is why I ended up there, because the version that re-tuned itself lost money out of sample in nearly every fold.
MasterVP · Systematic Trading Journey
Written by the founder of KenKem, a software engineer of twenty years who traded gold by hand before building the research stack behind MasterVP. As a self taught quant trader I had to learn the difference between a system that adapts and a system that is being fiddled with, and I learned it by building the second one first. This is knowledge sharing, not a recommendation to trade anything. Every figure below is a backtest or a research result on real tick data, labelled as such, and none of it is a live return.
Why does adaptive usually mean the wrong thing?
Because in most marketing the word is doing the job of "it will keep working", and it is doing that job without evidence. An adaptive system in that sense is one that watches its own recent results and changes itself in response. It is an appealing story. It is also the specific mechanism I tested hardest and then refused to ship.
The honest version is duller. Adaptive means the system's measurements are relative rather than absolute, so the same rule keeps its meaning when conditions change. A stop that is a fixed number of pips means something different on a sleepy Monday than it does during a news release. A stop expressed as a multiple of average true range means the same thing in both. Nothing learns. Nothing gets re-tuned. The geometry just breathes with the market.
Who this matters to: anyone running a scalping system on gold, anyone tempted to re-optimise after a bad month, and anyone who has been sold a bot on the strength of the word adaptive.
What actually adapts in my gold system?
Four things, and I keep the list short on purpose because each one had to earn its place.
Trade geometry scales with volatility. Entry buffers, stop distances and the runner trail are all expressed as multiples of average true range rather than as fixed pips, so the structure widens in fast tape and tightens in slow tape. The same applies to what MasterVP draws on the chart. Several of the distances it plots are not fixed at all, which is why a structure map from a quiet Asian session and one from a US session spike read the same way. A map that means one thing on Monday and another thing on Thursday is not a map, it is a mood.
Position size is derived from that geometry. Risk is a percentage of account balance, and the lot comes from the volatility-based stop distance, so identical risk produces a smaller lot when the market is moving more. There is a floor underneath it, and the floor exists because of an incident. A spread spike at rollover once collapsed the computed stop distance and briefly sized a lot around twelve times normal. That was diagnosed, fixed, and the fix confirmed on MetaTrader 5. Volatility-scaled sizing without a hard safety rail is a loaded gun pointed at the worst minute of the day.
Session and hour conditioning. The strategy trades explicit session windows and blocks specific hours, which is adaptivity by regime rather than by parameter. I did not take that on faith. Dropping the gates and letting it trade around the clock was tested and rejected, and every hour I un-gated made the result worse rather than better. The gates are a measured lever, not a habit.
An activity floor and a conditions read. Below a minimum amount of movement the strategy stands down, because there is nothing there to carry the edge. On the indicator side the same idea appears as an execution-health row that reads spread and tape speed against their own recent norms, with around one hundred percent meaning normal. It is a conditions check, never a trade signal. Half of discipline is knowing when the market is not worth engaging, and I wanted that visible before the mistake rather than obvious after it.
Why won't I re-optimise the settings every few months?
Because I tested it and the frozen configuration won.
In walk-forward, the fixed lock came out positive in five of five folds while re-optimising per fold managed four of five. That is the whole argument, and it is not a close call dressed up as one. Every time you re-tune, you invite the model to fit the recent past a little more snugly. It feels like adapting. It is usually overfitting on a slower clock.
I know why the temptation exists, because I have felt it. Doing nothing looks like neglect. After a bad month the honest-seeming move is to go and improve something. But a setting that survives untouched across many periods is worth more than one that has been quietly bent toward whatever the last few weeks happened to reward, and you only find out which one you have by leaving it alone long enough to find out.
The same instinct is why the shipped product has a preset instead of fifty knobs. Most of the deep tuning is kept internal and locked so the settings window stays short. I built it that way because I know myself. Give me fifty knobs and I will turn them until the chart tells me what I want to hear, which is exactly how a backtest gets overfitted by hand, one reasonable-looking adjustment at a time.
What happened when I built a system that adapted to its own results?
It looked excellent, and then walk-forward killed it.
The idea was to shrink position size when the trailing realised edge was degrading, and stand down entirely when it went negative. In sample it beat the baseline on both net result and risk, cutting peak drawdown by roughly forty percent. That is exactly the shape of result that gets shipped by people who stop testing at the flattering number.
Out of sample it produced negative results in nearly every fold. The reason is simple once you see it, and I did not see it until the folds told me. Losing streaks mean-revert. Recent outcomes do not predict forward outcomes, so a mechanism that fires on a bad run is systematically standing down right before the recovery it was supposed to protect you from. The trigger signal was the problem, not the implementation.
That verdict is on record for a reason. My earlier codebase contains an eight hundred line adaptive engine that nudges parameters based on recent win rate. It was built in 2024 and 2025 and held switched off pending validation. The validation came back and falsified the exact signal it fires on, so it stays off and the current codebase does not inherit it. Adaptive infrastructure that was built, held, tested and then rejected is a better thing to be able to show than adaptive infrastructure that was built and switched on.
What else did I deliberately refuse to build?
Three more, each rejected on evidence rather than skipped.
Reinforcement learning for entries. At roughly a thousand trades a year, a reinforcement learning entry policy is orders of magnitude short of the data it needs, and its result cannot be deflated for the multiple testing it implies. The production evidence for reinforcement learning in markets sits in execution, hedging and market making. It does not sit in directional entries. Shipping it here would be theatre.
Graduated intraday de-risking. A proper path-boundary study showed the line it defends is almost never threatened on real days. It guards something that does not happen, and its only benefit would appear in a cost regime the engine cannot reproduce, which makes the benefit unvalidatable by construction.
Live Kelly sizing. Empirical Kelly on realised results is fat-tailed and unstable, and the hard drawdown line on a prop account binds long before the Kelly ceiling does. So the sizing is fractional and drawdown-capped, well below what the math would allow.
The exclusions are the part I would look at first if someone handed me this work. Anyone can add an adaptive feature. The discipline is in the ones you took out after they tested badly, and in still having the falsification on file afterwards.
Does adapting to volatility protect you when costs change?
No, and this is the honest limit of everything above.
Every mechanism in this article adapts to how much the market is moving. None of them adapt to what it costs to participate. In 2024 the spread on gold ran at roughly 8.6 percent of average true range against a normal 3 to 4 percent, and the same fixed configuration, unchanged, returned minus 67.1 percent with a 74.2 percent maximum drawdown on real MetaTrader 5 fills. The rules were fine. The toll changed, and a thin edge has no room to absorb that.
What came out of that year was not a smarter entry. It was two ways of standing down. The system already measures the spread against what a trade can realistically earn, so when that share gets too large it skips the day, which is an affordability check rather than a prediction. The second is smaller size while the account sits below its own peak, returning to normal on recovery. On the same window and the same account, those two switches took the worst peak-to-trough loss from around 57 percent down to about 22 percent, with more profit from fewer trades. It skips roughly one trade in three, concentrated in the worst stretch of 2024.
There is a catch I have to state plainly. That configuration is specific to the tighter of the two brokers I run. The threshold that marks a day as too expensive is broker-specific and has to be re-derived per feed, because the value baked for one feed pins the guard permanently on for a wider one and would silently muzzle the system. So the tracker ships on as telemetry and the guard ships off by default. The doctrine is the adaptive part, not the number.
Why does the same code give two different answers on two brokers?
Because spread and fill quality are inputs to a strategy, not a footnote on it.
I run the same system on two brokers with identical code, and when I tested the five-minute version on the second one over the same window, it did not transfer. One of my configurations only makes sense on the tighter feed. Saying that costs me the cleaner story, and I report each broker separately instead of quoting whichever one flatters the system.
The same asymmetry showed up in a rule I expected to be uncontroversial. Standing aside around scheduled high-impact news is standard advice, so I tested it rather than assuming it. On the ten-minute system it helped on both brokers and I adopted it. On the five-minute system I rejected it, and the interesting part is that the five-minute version actually made more money with the rule on. Profit per trade did not improve at all, and the entire gain traced back to a handful of large trades displaced onto a single day. That is luck wearing the costume of an edge. I could only tell the difference because the decision rule was written down before I saw the result.
An equity curve with no broker name attached is a screenshot, not evidence. Ask what the spread was.
Where does this leave a system that never re-tunes itself?
With adaptation moved out of the parameters and into the process.
Two live diagnostics close the loop. A drift monitor scores the live trade stream against the reference window and raises warning bands when the distribution moves, and a reject journal shows which gate blocked each valid signal, so a live-versus-backtest reason histogram can be compared directly. Neither of them changes a trade on its own. They surface when something has moved, which is the honest trigger for a governed review rather than a reflex.
The direction I am heading is a re-lock cadence at most quarterly, where every re-lock goes through the full validation chain rather than a quiet adjustment between them. That is what "the system adapts over time" should actually mean: an auditable process with a date on it, not a parameter that drifts while nobody is looking.
If I am honest about what I am most proud of, it is not any single strategy. Every edge eventually meets a regime it dislikes. The durable asset is the machine that can find, test, reject, lock, monitor and revise edges without fooling itself, and the reason I trust this one is that it has already told me no about four times in this article alone.
What is the sample behind all of this?
The headline window is 1,423 trades on real Exness ticks with an every-tick model, which is about seven times the 192 trades the literature says you need before a result carries information. Both years came out positive independently. Eleven of twelve calendar months were profitable in walk-forward and the worst one lost 21.6 percent, which is a number I keep in front of me on purpose. Maximum drawdown is around 21 percent on the headline figure and closer to 28 percent on the true full-year peak, and my own research note says to size for a 30 to 40 percent peak and mean it. Slippage, latency and swap are not yet modelled, so live should be treated as thinner than backtest.
That is a backtest. It is not a promise, and none of it is a live return.
Frequently asked questions
What does adaptive mean in a trading system? It should mean that the system's measurements are relative to current conditions rather than fixed. In practice most uses of the word mean the system changes itself in response to its own results, which is a different and much weaker claim. In mine, the trade geometry, the position size, the session gates and the activity floor all scale with volatility while the configuration itself stays frozen.
Why use average true range instead of a fixed pip distance? Because a fixed distance silently changes meaning when the market changes speed. What reads as a reasonable gap in a calm session is noise in a frantic one. Expressing the distance as a multiple of typical range keeps the rule consistent across both, which is also what makes the same logic portable between instruments with different pip conventions.
Should I re-optimise my strategy on recent data? My own walk-forward says no. The fixed lock came out positive in five of five folds against four of five for per-fold re-optimisation. Re-tuning feels like adapting and is usually fitting the recent past more snugly, which is the same overfitting failure running on a slower clock.
Can a system adapt to its own performance? It can be built to, and mine was. Shrinking size on a degrading trailing edge cut in-sample drawdown by roughly forty percent and then produced negative out-of-sample results in nearly every fold, because losing streaks mean-revert rather than persist. The mechanism stands down right before the recovery.
Why is machine learning not used for entries here? Sample size. At around a thousand trades a year the data is orders of magnitude short of what a reinforcement learning policy needs, and the result could not be corrected for the number of things tried. Production reinforcement learning in finance lives in execution and hedging, not directional entries.
Does adapting to volatility protect against rising spreads? No. Volatility adaptivity and cost adaptivity are separate problems, and 2024 is my evidence: the same unchanged configuration lost 67.1 percent with a 74.2 percent drawdown on real fills in a year when spread ran at about 8.6 percent of average true range instead of the usual 3 to 4 percent.
What is the single most valuable adaptive feature you added? The ability to do nothing. An affordability check that skips the day when the spread is too large a share of what a trade can earn, plus reduced size below the account's own peak, took the worst peak-to-trough loss on that window from around 57 percent to about 22 percent with more profit from fewer trades. It skips roughly one trade in three.
Why does the threshold have to be set per broker? Because the spread habitat differs per feed. A threshold baked for a tight feed pins the guard permanently on for a wider one and would stand the system down almost every day, so the tracker runs as telemetry by default and the guard is enabled only once the threshold has been re-derived for that broker.
Is MasterVP tuned for anything other than gold? The defaults are tuned for XAUUSD on a five-minute chart, which is where the strategy underneath was built, tested and validated in the DQuants framework I built myself. It runs elsewhere and the display still helps, but away from that habitat I tell people to read it as a rough sketch rather than a finished picture. A tool that claims to work equally well on everything usually means it was never really proven on anything.
If you want to see where this ended up, MasterVP is my own intraday method built on public volume profile theory. It ships as the Master Volume Profiler indicator on TradingView and MetaTrader 5, which shows the read and leaves the order with you, and as Master Volume Sniper on MQL5 market, an Expert Advisor that executes the rules and risk settings you configure.
This article was composed from the adaptivity posts of the MasterVP build log series. Educational purpose only. Not financial advice. Figures cited are backtest results on real tick data, and past performance does not guarantee future results. Every trader remains responsible for their own risk settings and decisions.