Backtests

Five years of history: what the portfolio would have earned, at what cost, and what would have remained had the trades fallen differently. Everything on this page is computed on the past, not the result of live trading. The live account is on Results.

2021-08-18 — 2026-08-20risk 1% per trade Tickmilleverything in percent of depositcommissions and swaps included

Where the data comes from

The numbers come from MT5 strategy tester reports on the broker’s tick history — exactly as the terminal produces them, with no manual edits. Each instrument was computed on its own account, risking 1% of that account’s balance, the way it will actually trade.

Costs are already inside the result: spread, both commissions and swap are subtracted per trade — that is how the balance really moves. The difference is material: for Algorithm 2, five years of costs ate 67 percentage points out of 814 and deepened the drawdown by 1.0 point. There are no idealised exits «exactly at the take» here.

The period is 18 August 2021 to 20 August 2026 — five consecutive years, with no convenient stretch picked out. The settings did not change over that time: what is computed below is one and the same set of parameters across the whole history.

All figures here are in percent of the deposit. R is the risk of a single trade, 1% of the account: 14.9R means 15% of the deposit — on a $2,000 account, $300.

Check it yourself. All 3,291 trades behind the numbers on this page are available as a single file: download CSV (250 KB). It holds entry and exit times, instrument, algorithm, the result in units of risk and in money, and how the trade ended — stop or take. The sum of the result_r column is exactly those +983%. If you would rather not compute by hand, the same repository the site is built from contains bin/check_numbers.py: a short standard-library script that reads this file and prints everything on the page — the result, the drawdown, the profit factor, the losing streaks, the gaps. The site and the weekly live-account report are built by that same open code: github.com/w2w-portfolio.

Cumulative result

Percent of deposit at 1% risk per trade, without reinvestment: this is an arithmetic sum of results, not compound interest. 983% over five years (about 16% a month on average) — more in some months, negative in others. The curve is built from closed trades, with Tickmill’s commissions and swaps included — this is not an idealised calculation but how the account would actually have moved.

The fee is not deducted from these percentages: 983% is the result of the strategy, not of the subscriber. The platform withholds it from the gain above the previous high of the account, so months that merely recover a past loss cost nothing. At the public rate of 30% the same five years leave the subscriber +688%, and across all 50 rolling twelve-month windows the result after the fee ranged from +94% to +178%, +142% in the middle. At the reduced rate of 20% it is +786%, ranging from +107% to +203%, +162% in the middle.

Algorithm 2 — 12 setups Algorithm 1 — 4 setups w2w

+0% +1,000% 2021 2022 2023 2024 2025 2026
JanFebMarAprMayJunJulAugSepOctNovDecyear
2021·······+5.8+32.2+19.5-2.4+26.7+82
2022-12.2+18.0+22.8+18.4+2.1+6.9+10.5+8.6+21.2+13.6+12.8+34.7+157
2023-1.5+24.8+22.8+11.6+7.4+9.9+29.5+18.0+7.3+32.8+17.5+6.3+187
2024+42.5+2.8+8.7+16.1+27.8+39.8+17.6-7.0+12.5+29.0+10.9+10.4+211
2025+8.4+26.9+20.8+12.4+9.7+8.7+24.3+20.9+3.8+34.5+23.7+22.9+217
2026+25.9+8.1+41.3+30.3+2.8+2.5+10.4+7.7····+129

57 of 61 months are profitable. Four are negative: January 2022 (−12.2%), August 2024 (−7.0%), November 2021 (−2.4%) and January 2023 (−1.5%). The worst of them is January 2022. The best month was January 2024, +42.5%. The average across all months is +16.1%.

The outer periods are shorter than the rest — the history begins in August 2021 and ends in August 2026. Counted as full years from the start, the spread is even: +142%, +205%, +232%, +180%, +218% — all five are profitable, and none accounts for more than a quarter of the total. The result does not rest on a single lucky year.

The set is not frozen. Every new instrument goes through the same selection: stability across both halves of the history, a randomness check, an estimate of execution costs and — most importantly — its contribution to the portfolio rather than its own return. What does not pass is not added, even if it is profitable on its own.

What the result is made of

figures — % of deposit over 5 years

Algorithm 2 — 12 setups

instrumentresultdrawdownaverage RRwin ratePF
XAUUSD+249%16.1%6.4420%1.64
DE40+90%20.2%3.9023%1.20
JP225+72%4.4%2.9140%1.94
NZDUSD+59%14.0%1.9240%1.31
USDJPY+50%8.9%1.9747%1.77
USTEC+37%4.0%2.3948%2.16
GBPUSD+36%6.3%2.4042%1.77
EURUSD+32%11.3%1.9339%1.25
USDCHF+31%6.2%1.8942%1.39
USDCAD+28%6.9%0.8462%1.39
US500+24%6.3%1.9545%1.60
BRENT+21%4.1%0.7371%1.82

Algorithm 1 — 4 setups

instrumentresultdrawdownaverage RRwin ratePF
XAUUSD+88%11.1%2.6036%1.47
EURJPY+71%5.9%2.9346%2.46
NZDUSD+52%8.1%1.3754%1.60
USTEC+44%6.6%1.6350%1.65

XAUUSD, NZDUSD and USTEC are traded by both algorithms, so they appear in both lists: these are different setups with different entry rules, not the same position twice.

Average RR together with the win rate reveals the mechanics of a source: XAUUSD takes 6.44 per unit of risk at a 20% win rate — rarely, but in large amounts; BRENT is the opposite, 0.73 at a 71% win rate — often and in small amounts. Both designs are profitable but behave in opposite ways, and they fall into drawdown at different times.

Note the drawdowns: the individual drawdown of a source does not add up into the portfolio one — the sum of all sixteen would be 142%, while the portfolio drew down 18.1%.

Gold brings in the most: +249% from Algorithm 2 and +88% from Algorithm 1, together a third of the entire result. The dependence on it is softened by the fact that these are two different algorithms with different entry rules — not one bet doubled in size.

The average win is 2.35% of the deposit against an average loss of 0.98% — a ratio of 2.39 at a share of profitable trades of 38.4%.

Drawdown depth at every moment

-10% +0% 2021 2022 2023 2024 2025 2026

Algorithm 2 Algorithm 1 combined

Separately, Algorithm 2 drew down 18.4% and Algorithm 1 13.2%, summing to 31.6%. The portfolio drew down 18.1% — less than Algorithm 2 alone, while the result is a third higher: 983% against 729%. The ratio of result to drawdown rose from 40 to 54: the four setups of Algorithm 1 added +254% without deepening the drawdown. This is measured, not asserted — across 556 days of joint trading both were negative 144 times against 153 expected by chance.

Balance and equity

Everything shown above is calculated on balance — on closed trades. But while a position is open the account fluctuates, and the screen shows a different figure — equity, the funds together with the floating result. Its drawdown is deeper, and it is equity that you will see in your own account.

-20% -10% +0% 2021 2022 2023 2024 2025 2026

on balance on equity

On closed trades the account drew down 18.1%, on equity — 22.6%: deeper by a factor of 1.25. The balance drawdown is measured on every closed trade, the equity one hourly, 31 thousand readings per source.

Is that a lot or a little? The strategy will run on Tickmill Social Trading, and there is something to compare it with: out of 1,438 public strategies on the platform, half have a maximum drawdown reaching 98% — the account was effectively wiped out. A drawdown below 23% puts you in the top ten percent. To check whether this is a quirk of one platform, I went through three more — RoboForex CopyFX, MQL5 Signals and Myfxbook: 9,784 public strategies in total. The picture is much the same everywhere, and popularity has little to do with restraint in risk — on CopyFX the leader with 2,539 subscribers has a 99.2% drawdown and a loss. Drawdowns between platforms cannot be compared: each counts them its own way. My own account, published in two places at once, showed 12.96% and 2.82% — a 4.6-fold difference with return and balance matching to the cent. So the comparison above is within Tickmill only, where the trading will happen. Measured on 2 September 2026 from public ratings; the line-up changes over time. A breakdown of each platform with numbers is in my Telegram channel.

Where the difference comes from

The equity drawdown is 4.5% deeper than the balance one — the gap between 22.6% and 18.1%. You would expect a floating loss to explain it: open positions go negative, the account sinks further. But over five years the floating loss never once exceeded 1.9% of the deposit — less than half of what would be needed. So where does the rest come from? Let us take apart the worst episode.

balancefloatingequity
peak 24 Jul 2024584.4%+6.6%591.0%
trough 9 Sep 2024569.0%−0.6%568.4%
difference15.5%7.2%22.6%

Here is the answer: the depth came not from a floating loss, but from floating profit at the moment of the peak. In July the account stood at 584% on closed trades, and open positions showed a further +6.6%. The terminal read 591% — but those six percent were on the screen, not in the pocket. Then the balance fell by 15.5%, the unrealised profit evaporated, and from its high the account came down to 569%.

Floating result of open positions

This is the whole gap between the two curves: above zero the open positions are in profit, below zero at a loss.

+0% +4% +8% 2021 2022 2023 2024 2025 2026

84% of the time the floating result is non-negative — positions are either in profit or closed. The upward peaks run far higher than the dips: up to +10.4% against −1.9%. It is exactly this asymmetry that creates inflated highs, from which the drawdown is then measured.

Hence the practical conclusion. On a good day the figure in the terminal is inflated by unrealised profit, and when that goes it feels as though more has been lost than really was. Knowing this quantity matters so you are not frightened in the moment. And the control thresholds are set on balance: the watcher measures a hundred closed trades, and the alarm must trigger on the same thing that is being measured.

How long a losing run can get

Only 38.4% of trades are winners, so losses come in runs — that is arithmetic, not a malfunction. Over five years there were 793 such runs. Here is how often the long ones happened:

losses in a row times in 5 yearsthat isback to the high, days
548about once a month9
722once in three months15
10 or more8once in eight months17
14 — the record1once in the whole history21

The last column is the average time it took to get back to the previous high after such a streak. The average hides the spread: usually the account recovered within a week or two, but the longest recovery took 62 days.

The longest run cost 14.9R — at 1% risk that is 15% of the deposit, lost without a single winning trade in between. A single algorithm runs longer than the portfolio: Algorithm 1 reached 17 in a row, gold alone 23. The portfolio shortens them because its sources lose on different days.

Knowing this in advance matters more than knowing the return. Strategies are abandoned not at the drawdown itself but at the seventh or eighth loss in a row, when it feels like everything is broken. By the numbers it is an ordinary event — it happens several times a year.

What if the market opens beyond the stop

Algorithm 2 carries 29% of its positions overnight — the only place where a loss can exceed the planned one: if the market opens beyond the stop level, the position closes at a worse price. Algorithm 1 closes by the end of the session and is not exposed to this. Here is how it looks across 2,390 trades over five years:

a normal stopcosts 1.02R — the extra goes on spread and commission
95 trades out of a hundredstay within 1.19R
nine times in five yearsthe loss exceeded the risk by half or more — about two cases a year
the average loss in those nine2.09R, median 1.59R; without the heaviest case, 1.61R
the worst case−5.93R on USDJPY: the position opened on Friday 3 October 2025 and survived the weekend; on Monday the market opened far beyond the stop
over the last 12 monthsone case in 470 trades — the October one; in 2026, none in 277 trades

For Algorithm 1 there were none in five years. The gap risk is real but rare, and confined to one algorithm of the two — the one that holds positions longer than a day is not in the portfolio at all.

And do gaps ever fall in our favour?

They do, and almost as often. The same mechanism works both ways: price jumps over the take-profit as well as the stop, the trade closes wherever a counterparty was found, and the profit comes out larger than planned. This is measured from prices rather than from the result: the trade comment holds the level that triggered, the report holds the price at which it actually closed. The difference between them, divided by the distance from entry to stop, is the shift in units of R. Of 3,291 trades, 3,044 closed at a level; the rest were closed by the algorithm’s own logic and have no level to miss.

gaps trades average extreme total
against us37−0.27R−4.97R−9.9R
in our favour34+0.34R+1.60R+11.4R

Over five years the gaps came out in our favour: 37 cases against us at −9.9R and 34 in our favour at +11.4R, a net +1.5R. The extremes: −4.97R on USDJPY on 6 October 2025 and +1.60R on BRENT on 13 April 2026. Algorithm 1 has zero gaps over five years out of 656 trades closed at a level — in either direction.

The money is lost where nobody looks. On the other 2,973 closes the price runs past the level by a little — hundredths of the risk. That is not a gap but spread and tick size: price does not stop exactly where the level sits. Individually invisible, yet it went past in the worse direction 1,047 times against 498 in the better one, and adds up to −4.4R — three times what all the gaps together produced. Together that makes −2.9R over five years: three tenths of a percent of the 983% result.

An important limit of this calculation: this is the tester, not a live account. The tester has no execution slippage — only genuine gaps in the quotes and the tick size show up. On a live account both figures will be worse, the second one especially: the spread there is wider and it moves. So −2.9R should be read as a lower bound on the cost, not as a promise.

Does the risk creep up year by year?

This is the question worth asking any strategy author: does he push the risk up after a good run, or double down after losses? An attractive equity curve answers none of it — rising risk is exactly what draws an attractive curve, right up until it kills the account. Two numbers settle it, and both are taken from actual trades rather than from settings.

year average loss positions at once peak
2021−1.02R27
2022−0.98R25
2023−0.97R27
2024−0.97R26
2025−1.00R27
2026−0.98R25

The first is what a losing trade actually costs. The declared risk is 1% of the deposit; if the stop holds, the average loss stays near −1R in any year. Over six years it never left the range from −0.97R to −1.02R: a spread of five hundredths. The median does not move at all — −1.01R and −1.02R, year after year.

The second is how many positions are open at once: sixteen sources at 1% each would allow up to 16% of risk at a time, and that is where a portfolio’s danger lives, not in a single trade. The median is two positions in each of the six years, 95% of the time no more than four are open, and the all-time peak is seven. The portfolio stood with five or more positions for 1.2% of the time.

Occupancy is weighted by time, not by trade count: “median two” means that for half of all hours no more than two positions were open — otherwise one long trade would count the same as an hour-long one. Weekends are included: a position carried through the weekend is at risk for every one of those hours, and that is exactly when a gap at the open happens.

What happens in a sustained trend

Both logics are counter-trend: they enter against the move, expecting a pullback. Hence the obvious objection — in a sustained directional market the pullback never comes, and such a system catches falling knives over and over. It is a fair objection, and only data can settle it.

Trendiness is measured by comparing the price inside a window with itself: how far it ended up from where it started, relative to the distance it travelled on the way. One means movement in a single direction without a single pullback, zero means going nowhere. That alone is not enough — a price can travel evenly but barely at all — so a second condition applies: a range of at least three stops. Any definition of a trend is arbitrary by nature, so rather than rest the conclusion on one convenient choice, this is computed at five window lengths, from six weeks to a year.

window length in a trend outside one profitable windows
six weeks+0.26R+0.28R50 / 79
a quarter+0.14R+0.35R44 / 69
six months+0.19R+0.33R40 / 60
nine months+0.40R+0.28R29 / 34
a year+0.36R+0.29R18 / 24

The average result of one trade, in units of risk. In trending periods the system stays profitable under all five definitions — from +0.14R to +0.40R per trade, and most such windows close in the black. That is the one thing which holds at every horizon, and it answers the original objection: a directional market does not break the system.

Whether it does better or worse in a trend than in calm markets is a question without an answer. At horizons up to six months it is markedly worse — at the quarterly window the gap is two and a half times. At nine months and a year it is the other way round. The same goes for the worst stretches: at the quarterly window the heaviest one is a trend, −22R on gold from 25 July to 24 September 2024, when the price travelled 58 stops with barely a pullback; at long windows the worst stretches are the non-trending ones. The sign of the difference flips with the horizon, so I cannot claim that “a trend is worse for the system” — the data does not show it.

A second method: moving averages

The method above derives trendiness from the prices of the trades themselves — honest, but unfamiliar. So the same thing was computed again, using the definition half the market works with: price above the 200-day average and the fast average above the slow one means a rising market, the mirror image means a falling one, everything else is not a trend. The quotes here are external and daily, not derived from our trades. Two independent methods exist so that the conclusion does not rest on one technique: if they agree, it can be trusted; if they diverge, neither can.

state of the market trades per trade total
market rising1 748+0.37R+639.9R
market falling838+0.20R+171.2R
no trend570+0.27R+154.8R

All three states are profitable, which agrees with the first method. But the real question is a different one: both logics are counter-trend, so what matters is not the trades “in a trend” but the trades taken against it — buying in a falling market and selling in a rising one. The direction of every trade is known, so they can be counted directly.

trades trades per trade total
against the trend1 426+0.30R+433.8R
with the trend1 160+0.33R+377.3R

More than half of all trades are opened against the direction of the market — and they are profitable. Not merely tolerable: +0.30R per trade and over half of the entire five-year result. Trading with the trend comes out slightly better, but the gap is about 10% and it holds at any pair of averages — 20/50, 50/200 and 100/200 all give the same picture.

The two algorithms differ here, and their design explains it. Algorithm 1 does better against the trend than with it: +0.345R versus +0.308R. It trades false breakouts, and the stronger the move it enters against, the cleaner the setup. Algorithm 2 is the other way round — slightly weaker against the trend: +0.289R versus +0.332R.

Actual trends — check them yourself

So that this does not stay a claim, here are the longest stretches that the moving-average definition marked as trends. Instrument, dates, how far the price travelled, how many trades the portfolio opened there and what it earned. Any row can be checked: open the instrument’s chart, add the 50 and 200 averages and look at those dates.

instrument trend period days price move trades result
XAUUSD30.11.2023 — 04.06.2026917+120%434+176.4R
USTEC13.03.2023 — 05.03.2025723+73%93+32.0R
USDJPY10.06.2021 — 02.12.2022540+24%30+13.8R
JP22524.03.2023 — 01.08.2024496+39%38+20.6R
US50002.11.2023 — 07.03.2025491+34%22+4.3R
EURUSD22.07.2021 — 23.11.2022489−12%55+0.6R

The top row is the telling one. Gold spent two and a half years straight in a confirmed uptrend and doubled in price over that time. The counter-trend portfolio opened 434 trades in it and earned +176R — a fifth of the entire five-year result. The bottom row honestly shows the other edge: a year and a half of a falling euro brought exactly nothing, 55 trades for zero. In total there are 33 such episodes longer than six months, holding 1,621 trades and +515R — more than half of the five-year result was earned while the market was in a sustained trend.

Where the quotes come from, so this can be repeated. Daily closes from Yahoo Finance: currency pairs as tickers of the form EURUSD=X, indices as ^NDX (USTEC), ^GDAXI (DE40), ^N225 (JP225), ^GSPC (US500), oil as BZ=F, gold as GC=F. Gold is available there only as a future: its price differs from spot by the basis, but the averages and the trend they show are the same. The trend is read from the daily close: price above the 200-day average and the 50-day average above the 200-day one means an uptrend, the mirror image a downtrend.

How this was computed and what the calculations cannot see. The first method has no quote history at all: the price series is built from the entry prices of the trades themselves — real prices from the reports, but sampled only at the moments when the algorithm was trading, so what is measured is the market as the portfolio saw it. A window must hold at least six trades, so part of the history falls outside it. The second method uses external daily quotes; gold is available there only as a future — its basis to spot differs, but the direction of the trend is the same, and nothing else is taken from it. And in both: for individual instruments the picture is unstable — for DE40 the sign of the result flips with the window length — so the conclusions here are about the portfolio as a whole only.

Testing the order of trades

History happened to run in one particular order of trades. To see how much the result depends on that order, I shuffled it 20,000 times and looked at what came out.

How the account might have gone

The same 3,291 trades arranged in a different order. In red — what actually happened; dashed — the median of all variants.

+0% +1,000% 2021 2022 2023 2024 2025 2026

actual historymedian of variants5–95% corridorthin lines — simulated variants

The ends converge for a reason: shuffling changes the order but not the set of trades, so every variant finishes at the same total. The spread lives in the middle of the road — and it is moderate: against an actual +452% at the halfway mark, the simulated variants fall within a corridor from +402% to +582%.

For drawdown the reference point is this: a median of 24.5%, and that is what you should plan around. A drawdown deeper than 30% appeared in 18.1% of the recalculations, deeper than 40% — in 2.1%.

How to read the table. On the left is the drawdown level in percent of the deposit; in the middle, the share out of twenty thousand recalculations where the account went deeper; on the right, how long such a drawdown lasted. Deeper than 40% went 427 variants out of twenty thousand, deeper than 50% — forty-one, deeper than 60% — two. The last row is empty for a reason: not one of the twenty thousand variants went deeper than 70%, the heaviest reached 63.0%.

How deep the drawdown gets

drawdownhow often it occurshow long it lasts
deeper than 30%18.1%3.6 мес
deeper than 40%2.1%4.5 мес
deeper than 50%41 из 20 0005.7 мес
deeper than 60%2 из 20 0005.9 мес
deeper than 70%

A subscriber can halve both the return and the drawdown by taking a half copy multiplier — they scale together.

Three months without a new high is normal, not a breakdown. Knowing this in advance matters: it is in the fourth month of a drawdown that the worst decisions get made. In the actual five-year history the account went without a new high for at most 68 days — from 22 May to 29 July 2026. Stretches longer than three months never happened, though the reshuffling shows they are possible.

What this method cannot do. Shuffling works with the trades that have already happened. If the market changes character — gold enters a multi-year range, volatility collapses — none of that is in these twenty thousand variants: they are assembled from the past.

The second limitation matters more than the first. In real life bad periods come in streaks: the market enters an unfavourable regime and instruments sink together for weeks. A random order breaks those streaks up. We shuffled by whole trading days to preserve at least the fact that instruments fall together within a day — but the link between weeks is lost all the same. So the table should be read as a lower bound on trouble, not as a full list of what is possible: a real prolonged drawdown may turn out deeper and longer. That is exactly what the trading halt threshold is for.

Where the thresholds come from

Two numbers are checked every week. Drawdown answers the question “how much does it hurt right now”; expectancy over the last 100 trades answers “is the system still working”. The actions are defined in advance, before things get unpleasant.

drawdown on closed tradesstatusaction
up to 25%normal nothing
25—36%attention check that all algorithms are running
36—44%review analysis by instrument, parameters unchanged
above 44%stop trading halted and reviewed

Expectancy over the last 100 trades, % of deposit per trade

0 average +0.30% alarm threshold −0.05%

The alarm threshold is expectancy below −0.05% per trade. The watcher checks against it once a week: across 254 weekly checks the alarm fired once — on 2 Feb 2022, expectancy −0.084%. The average across all readings is +0.30%.

What happened next: the following hundred trades came out profitable, and expectancy returned to its average without any action at all. An alarm is not an order to stop but a demand to investigate: to check whether all algorithms are running, whether one has hung, whether the instruments have changed behaviour. A review would have shown the system operating normally.

The curve on the chart is continuous — it is recalculated after every trade rather than weekly, and it touched the threshold more often: 3 episodes over five years, the deepest at −0.112%. Only one of them survived to the day of the weekly check. We show this openly, so that a line beneath the threshold does not look like a contradiction of the text: the weekly control step is a deliberate choice, it damps out short spikes that there is nothing to be done about.

There are deliberately no intermediate thresholds. Over five years expectancy fell to zero 11 times. Nine of those had a full following hundred trades to play out, and not one of those hundreds came out unprofitable — from +0.20% to +0.53% per trade against a historical average of +0.30%; in eight cases out of nine, better than average. Reacting to such dips would mean trading against a reversion to the mean.

Parameters are not changed during a drawdown. The settings were fitted on the entire available history of the instruments — six to seven years — while a drawdown is an event spanning a hundred trades. Changing parameters inside one means fitting the system to a random stretch.