This is a high-risk strategy.
It can be highly profitable — and it carries the risks shown throughout this report. Position sizing is leveraged and derived from your Max-DD setting.
AVALONPLUS is a rule-based, end-of-day strategy for MES and ES futures, with signals derived from the S&P 500 Index (SPX). All examples refer to the MES Future ($5 point value) for simplicity. The system generates approximately 2–5 trades per year.
| Net profit, backtest 2000–today | $10,000 | $100,000 |
|---|---|---|
| With reinvest | $18,208,848 | $19,878,526 |
| Without reinvest | $194,217 | $2,175,482 |
The difference between the two scenarios arises solely from growing position size and the normalization of position size to realistic values — not from better signals.
EOD strategy: signal check once daily after market close, approximately two to five minutes of work.
AVALONPLUS itself went live in May 2026. Its live-trade count is 1. Every completed trade is listed in the Trade Journal.
Its predecessor AVALON ran as a NinjaTrader plugin and has been traded live since March 2020. Its very first live trade was a short into the COVID crash: entered March 6, 2020, closed April 3 at +14.85%. It never ran more than 1.07% against the position. That one was live, not a backtest. Six years of live experience produced AVALONPLUS, rebuilt for Android. The “Plus” stands for improved entry and exit signals and lower drawdown and MAE. AVALONPLUS is the successor to AVALON: the same principle, refined with the insights of the last six years.
Backtester settings: Reinvest on · Transaction Costs on · Interest on Cash on · Pos. Size 50/50 off · Annual Adjustments off · Normalize Positions on.
| AVALON | AVALONPLUS | S&P 500 ETF | |
|---|---|---|---|
| Window | 2020-01-01 – 2026-09-04 | ||
| Starting capital | $10,000 | ||
| Trades | 25 | 26 | — |
| Win rate | 68% | 69% | — |
| PnL | $354,717 | $2,472,538 | $16,088 |
| CAGR | 71.4%/yr | 128.5%/yr | 15.5%/yr |
| Max DD | 50.3% | 17.5% | 34.3% |
AVALONPLUS' 26 trades here are a backtest of its current ruleset over this same window — not its live record, which only started in May 2026.
At about 2–5 trades a year, a statistically solid out-of-sample test (100+ trades) would need decades set aside and never touched. See why that isn't practical here and what is used instead.
7 out of 7. On the European risk scale a plain S&P 500 ETF is 4 out of 7. Any product where you can lose more than the amount you invested is 7 — the top class, whatever its volatility. Futures are such a product: an opening gap can jump straight past a protective stop.
You could lose your entire investment. A large gap could cause losses beyond the amount invested.
What the rules actually did — 63 years of backtest with the configuration this app ships. Prices are real ES/MES quotes from 2000 and a reconstruction from the SPX index before that
| Full size | 50/50 | S&P 500 ETF | |
|---|---|---|---|
| Starting capital | $25,000 | $25,000 | $25,000 |
| Deepest decline, worst entry date, 2000–today | −29.5 % | −15.5 % | −55.8 % |
| Lowest account balance | $17,710 | $21,236 | $11,011 |
| Emergency stop triggered | never, in 114 L1 trades | never | no stop exists |
What a triggered stop would cost — none of this happened to the backtest
| Full size | 50/50 | S&P 500 ETF | |
|---|---|---|---|
| Starting capital | $25,000 | $25,000 | — |
| One stop, by the arithmetic | −61 % of the account | −30.6 % | — |
| Worked example: August 2011 1 | −68.5 % | −37.9 % | — |
| Lowest account balance | $7,854 | $15,452 | — |
| An opening gap jumps the stop | more than the account | more than half of it | — |
1 AVALONPLUS produced no signal that week and was flat — the volatility brake missed its threshold by 0.45 points. These figures are a configuration one parameter step away that did enter and was stopped out on August 8, 2011. Real prices, real event, different parameters.
Losses do not add up. Every position is sized from the capital left, so a 28.8 % decline followed by a 61 % stop is 68.5 %, not 90 %.
Position size carries a 3 % gap buffer on top of the worst historical open loss — designed for futures, whose largest weekend gap was −2.98 %.
The parameters were chosen with hindsight. Like any backtested rule set, the indicator periods were selected on the history shown here — not confirmed on data nobody had looked at. The full test is in Methodology & Validation.
To start: $10,000 at full size, $25,000 at 50/50.
An L1 stop (–11%) has not been triggered in 63 years (114 trades); nor was the L3 stop (–5.6%) in 74 trades. A first trigger would cost approximately –61% of the trade capital deployed, not of the total account. The L2 stop (–1.5%) was triggered twice, in May 2010 and September 2015 — the only two trades in the whole history that ended at a stop. On SPX prices the stop level is slightly different, so the second one falls a few days later; the count is the same.
How long a loss lasts before the account is back at its old high is what the app's backtester reports as Time to Recover.
The ETF's longest stretch below a previous high ran 6.0 years (2000-09-19 to 2006-09-18), and it was down 45.6% along the way. For AVALONPLUS the longest such stretch was 3.0 years (2000-08-17 to 2003-08-26). The account stood 2.7% below its previous high in full size and 1.4% in 50/50. Over that period the model took just one trade.
For most of those 1,104 days the account held no position at all and simply earned the cash rate.
The same backtester also runs 14 published S&P 500 rule sets on the same price series and the same costs: S&P 500 trading strategies compared.
Backtester settings for every figure below: preset 2000 to Date · MES · Reinvest profits on · Transaction Costs on · Interest on Cash on · Annual Adjustments off · Normalize Positions on · prices through 2026-09-18.
| ETF $25,000 | 50/50 $25,000 | full size $25,000 | |
|---|---|---|---|
| CAGR | 8.3% | 27.2% | 28.2% |
| Max DD (worst entry, backtest) | 55.8% | 14.2% | 28.7% |
| Max DD (catastrophe sim.) | 55.8% | 43.0% | 89.0% |
| Longest Time to Recover | 6.0 years | 3.0 years | 3.0 years |
| DD during that recovery | 45.6% | 1.4% | 2.7% |
| Accounts that can no longer trade | — | 0 in 8,639 | 494 in 8,639 |
The catastrophe row is not from the backtester. It comes from breaking the strategy on purpose. 105 price series were built in which every second bar was moved by up to a quarter of its average true range, enough that the model picks different trades. Each series was entered on every possible day: 8,639 accounts per mode. The 27 neighbouring parameter sets were run too; their returns stay within 1.5% of each other while their drawdowns spread from 30.9% to 86.4%. The ETF is not distorted, because buy and hold makes no decision that noise could change; its worst case is the entry date instead. The last row counts how many accounts end up below the ~$7,000 a contract needs ($14,000 in 50/50) — below that there is no next trade. The smallest account each mode can be run on is $10,000 for full size and $25,000 for 50/50.
| Period | Sizing | CAGR | Max DD | Sortino | Win rate | Trades |
|---|---|---|---|---|---|---|
| Last 3 years | Full size | 104.1% | 19.5% | 3.32 | 64.3% | 14 |
| 50/50 | 47.1% | 7.6% | 4.10 | |||
| Long Only (ETF) | 21.1% | 18.4% | ~0.30 | n/a | ||
| Last 10 years | Full size | 81.1% | 11.1% | 6.98 | 76.5% | 34 |
| 50/50 | 48.7% | 9.9% | 3.79 | |||
| Long Only (ETF) | 15.5% | 34.3% | ~0.30 | n/a | ||
| 2000 to today | Full size | 28.2% | 13.7% | 3.57 | 71.3% | 87 |
| 50/50 | 27.2% | 14.9% | 3.17 | |||
| Long Only (ETF) | 8.3% | 55.8% | ~0.30 | n/a |
| Period | Sizing | CAGR | Max DD | Sortino | Win rate | Trades |
|---|---|---|---|---|---|---|
| Last 3 years | Full size | 104.1% | 19.5% | 3.32 | 64.3% | 14 |
| 50/50 | 47.1% | 7.6% | 4.10 | |||
| Last 10 years | Full size | 101.1% | 20.2% | 4.16 | 76.5% | 34 |
| 50/50 | 48.7% | 9.9% | 3.79 | |||
| 2000 to today | Full size | 64.9% | 28.9% | 3.73 | 71.3% | 87 |
| 50/50 | 33.5% | 14.9% | 3.33 |
All three start from the same $25,000, so the columns are comparable — 50/50 cannot be run on less. MES futures · profits reinvested · costs and interest on idle cash included · before tax · Sortino annualized, risk-free rate 4 % p.a.
Sortino is shown instead of Sharpe. The system trades 2–5 times a year, so most months return exactly 0 % and inflate the standard deviation that Sharpe divides by. Sortino counts only downside moves. The win rate is one figure per window — 50/50 changes the size of each position, not which trades are taken.
The two tables show the same trades. The first has Normalize Positions on — the app's default: position size stops growing once it reaches 500 contracts. That is how the strategy is actually traded, and it is why the long windows look tamer than they are. The second has Normalize Positions off, which is not tradable in Micro contracts but shows what the rules did on their own. An account that large would move to the full-size E-mini, where the same exposure needs a tenth of the contracts — see MES or ES.
Max DD here is the deepest peak-to-valley of one path. Risk shows a different figure: the worst of 87 runs, each starting at a different trade.
Logarithmic scale — on a linear one the ETF would be a flat line. The lower panel is sampled at trade exits, so it misses lows in between; the dotted lines mark each one’s true maximum.
The same trades without the 500-contract limit. Not tradable in Micro contracts — an account that size moves to the full-size E-mini.
A futures account, one order after the close when a signal fires, and enough capital to carry a single contract.
One contract therefore ties up $7,000 at the current index level (7,681). The smallest account this strategy can be run with is $10,000. At the worst entry date in the test data the balance fell to $7,137, only $216 above the cost of the next contract. 50/50 needs $25,000. One contract becomes possible at $13,900. Only from $25,000 did the account survive the worst stretch in the test data, the August 2011 downgrade, which took a full-size account down 68 %. The calculation is constrained by four inputs: the stop distance (worst MAE + gap buffer), the margin, the price floor and the 500-contract limit of Normalize Positions. Anyone who wants to risk 1 % per trade cannot trade this strategy with a small account at all — the smallest possible position already risks far more.
How the position size is derived, how the entry date changes the outcome, what the bias tests checked, what Normalize Positions costs, and the full glossary: Methodology & Validation.