AVALONPLUS — Methodology & Validation

By Trading Garden

How these figures are calculated
Contents
1.How the position size is derived2.The four signal types3.Entry timing and realized return4.Compounding, in detail5.What Normalize Positions does6.Method & validation7.Glossary

This page carries the derivations behind the Strategy Report. Every figure here uses the same run.

Watch: how to backtest a futures strategy

The six things that decide whether a backtest means anything — data, rules, sizing, costs, execution, and what the result has to show — and how the backtester in the app handles each of them. Watch on YouTube

1. How the position size is derived

Position size is budgeted against the planned stop distance — deliberately set wider than the historically observed MAE. The sizing defines an intended loss limit under normal execution conditions. Gaps, slippage and exceptional market conditions can cause the realized loss to exceed this level.

qty = floor( capital ÷ ( entry_price × (stop_distance% + margin%) × point_value ) )

Example L1, $10K, SPX 5,000, stop 11% + margin 7% = 18%:
  qty = floor( 10,000 ÷ (5,000 × 18% × $5) ) = floor( 10,000 ÷ 4,500 ) = 2 contracts

What this formula really is: contract maximisation inside the strategy's own limits. It is not a risk budget. It takes the entire account and divides it by what one contract ties up, so the position is the largest the account can carry while still covering margin and surviving a stop-out. The MAE does not cap the quantity — it only decides how much is reserved per contract. Everything after that is filled up.

Sizing rule Reserved per contract Risk per trade
Broker margin only 7 % of notional unbounded — no stop budgeted
AVALONPLUS: stop + margin 18 % of notional 61 % (= 11/18)
Conventional "1 % per trade" whatever 1 % of capital buys 1 %

One contract therefore ties up $7,000 at the current index level (7,754). 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 $24,900: one contract becomes possible at $14,000, but only from $24,900 did the account survive the worst stretch in the test data — the August 2011 downgrade. ⚠ The shipped rules did not trade that week — the 68 % belongs to a configuration one parameter step away that did enter and was stopped out (see Risk in the Strategy Report). The four limits the maximisation runs inside are 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.

Every trade is effectively all-in. The formula budgets the whole account against the stop, so one signal ties up as much capital as the stop distance allows. That is what drives the compounding — and it is also why a single triggered stop costs about 61 % of the account. Section 4 shows how to soften this without touching the stop: 50/50 sizing, where only half the account sizes each position and the other half stays in cash.

Empirics: historical worst-case MAE for L1 is ~8%, stop at 11% — in 63 years not a single L1 or S1 stop has been triggered. L2 stop (–1.5%) is tighter; triggered once by design (2015). The effect: a tightly budgeted per-trade account drawdown (under normal conditions), which keeps the reinvest path stable across small losing trades — the long L1 trades can build their capital buffer without the compounding being knocked off course by an intermediate string of losses.

Why the stop sits wider than the worst MAE — the gap buffer

The stop distance is the worst observed adverse move plus a buffer. Signals are computed on the close and executed at the next open, so every position is held through the gap between two sessions — and a stop is not a guarantee of a fill at its price. After a weekend or a halt the market can reopen far beyond it, and the fill is then the open. The buffer is dimensioned for futures: the largest weekend gap in the S&P 500 future since 2004 was about 3 %, so three percentage points are added on top. For L1 that is roughly 8 % + 3 % = 11 %.

SignalWorst MAE+ 3 % bufferStop used for sizing
L17.96 %10.96 %11.0 %
S13.88 %6.88 %9.0 %
L32.66 %5.66 %5.6 %
L21.60 %4.60 %4.6 %

Measured over 63 years. L2 is the exception: its 1.5 % stop is part of the exit logic, not capital protection, so sizing uses 1.5 % + 3 % = 4.6 % — a weekend gap would clear a 1.5 % stop effortlessly. It is also the only signal whose stop ever triggered, which caps its measured figure; without the stop the same two trades ran to 4.06 %.

MES or ES — when switching pays

One ES equals ten MES, so the two are interchangeable in size — only the granularity and the fees differ. Commission is charged per contract, and one ES ($2.25) costs less than the ten MES it replaces ($6.00). From ten contracts upward, ES is therefore about 62% cheaper for exactly the same position.

Ten MES is reached at roughly a $45,000–$70,000 account, depending on the signal's stop distance — that is where the question first arises. Below it, MES is the right choice: one ES is a large step, and with fewer than ten contracts the finer granularity of MES sizes the position more accurately than the fee saving is worth. Odd sizes are best held mixed — 15 contracts as 1 ES + 5 MES still saves about 42%.

For large positions a second effect is added: measured in dollars, the ES market is more than ten times as deep as the MES market, so the same position moves it correspondingly less. Note that every figure in this report is calculated with MES fees — an account trading ES pays less than shown here, which makes the reported results the conservative case.

2. The four signal types

L1 — Long Trend-Follow · 56% of Trades
Trend-follow long on SPX uptrend. Exit rule-based at trend end. Stop-Loss: –11%. Not triggered in 63 years of backtest (114 trades).
114 Trades·Win Rate 73%·Expected value $1,449/Trade
S1 — Short Counter-Trend · 4% of Trades
Profits in falling markets. Stop-Loss: –9%. Not triggered in 8 trades.
8 Trades·Win Rate 100%·Expected value $3,835/Trade
L2 — Long Follow Signal · 3% of Trades
Long after S1-exit when volatility retreats. Tighter stop (–1.5%), triggered in approx. 14% of L2 trades.
7 Trades·Win Rate 71%·Expected value $3,568/Trade
L3 — Momentum Long · 36% of Trades
Long in confirmed upside momentum (overbought, trend). Higher frequency, lower hit rate — the edge lies in positive expected value. Stop-Loss: –5%. Not triggered in 74 trades.
74 Trades·Win Rate 51%·Expected value $925/Trade
Signal Timing
Signals after market close, entry next day at open. Fully rule-based.
How the S&P 500 trading system works →

3. Entry timing and realized return

Path dependency: realized return of the AVALONPLUS S&P 500 strategy by entry year

Reinvest · X-axis: years since entry · MES Futures · — $10K · -- $100K

VariantPnL $10KFact.CAGR $10KPnL $100KFact.CAGR $100K
Entry 2000  (26 years)
Reinvest$18,384,3321839×32.6%$20,053,105202×22.0%
No Reinvest$194,48620×12.0%$2,179,86223×12.4%
Long Only (ETF)$75,0868.4%$750,8648.4%
Entry 2006  (20 years)
Reinvest$17,979,8101799×45.5%$19,388,246195×30.2%
No Reinvest$185,45420×16.0%$2,052,46722×16.6%
Long Only (ETF)$74,78011.3%$747,80111.3%
Entry 2016  (10 years)
Reinvest$6,481,868649×91.1%$12,926,998130×62.7%
No Reinvest$90,76210×26.0%$1,079,00812×28.0%
Long Only (ETF)$31,51015.3%$315,10215.3%
Entry 2021  (5 years)
Reinvest$62,14348.5%$956,28811×60.2%
No Reinvest$26,15329.3%$328,54133.8%
Long Only (ETF)$8,25712.8%$82,56512.8%

Entry timing changes the outcome substantially — but not in a single direction: absolute profit and annual rate point opposite ways. The earliest entry (2000) produces by far the largest absolute result, for the simple reason that it compounds for 26 years: 32.6% p.a. on $10K, 22.0% on $100K. The most recent entry (2021, 5 years) shows a much higher rate — 48.5% ($10K) / 60.2% ($100K) — but on a small base and over a span short enough that one favourable or unfavourable sequence dominates it. A high rate over a few years is no evidence that the same rate persists over decades: the long-run numbers are lower precisely because they already contain the weak phases that a short window may happen to miss. The period from 2000 to today is used as the primary modern-market reference because it includes the Dot-Com crash, the financial crisis, the subsequent bull market and the COVID period.

Note: each row is a separate backtest that begins at its own entry date and sizes every position from the capital actually available at the time — the same runs the backtester in the app produces. The figures therefore match the rest of this report exactly instead of approximating it.

MES Futures · Reinvest · Costs ON · No tax · All trades from the respective start date

4. Compounding, in detail

Same trades, same period. Difference: starting capital and reinvest yes/no.

AVALONPLUS S&P 500 trading strategy: equity curve with and without compounding vs. buy and hold

Logarithmic scale · 2000–today · MES Futures · — $10K · -- $100K

ScenarioStartBasePnL (Net Profit)Factor~CAGR
Long Only (ETF)$75,0868.5×8.4% p.a.
AVALONPLUS No Reinvest$10K$10K$194,48620.4×12.0% p.a.
AVALONPLUS Reinvest$10K$10K$18,384,3321839×32.6% p.a.
AVALONPLUS No Reinvest$100K$100K$2,179,86222.8×12.4% p.a.
AVALONPLUS Reinvest$100K$100K$20,053,105202×22.0% p.a.

The reference line "Long Only (ETF)" is a realistic S&P 500 ETF on a total-return basis: dividends are reinvested (not just the index price change) and are already net of ETF costs — the dividend yield is derived from the actual distributions of a real S&P 500 ETF (SPY), which are already after fund fees. Without dividends, a real ETF investor would be understated by about 1.8–2 % per year.

With an identical percentage edge per trade, the difference in return comes solely from position size: without reinvestment the capital deployed stays constant, while with reinvestment the contract count scales with the growing account — turning linear growth into exponential growth.

MES Futures · $5/point · Costs ON · Normalize Positions ON · No tax · $10,000 starting capital

5. What Normalize Positions does

The comparison in the Strategy Report shows the three modes as they are traded. The chart here takes the same run apart: once with Normalize Positions off, so the difference between the two pictures is that one switch.

The same three again, but with Normalize Positions off. Every figure quoted in this report has it on — contract count stops growing past 500, because a backtest does not care whether an order can actually be filled. With the switch off the arithmetic keeps compounding and full sizing ends in the billions. It is shown here because the difference between the two pictures is that switch: not a market result, an assumption.

Full size, 50/50 and a buy-and-hold S&P 500 ETF with Normalize Positions off

Normalize Positions off · theoretical, not tradable · $24,900 start · 2000–today

Per point of drawdown, full size and 50/50 land close together — they take the same trades, 50/50 simply with half the exposure. Over 2000–today from $24,900 that is 2.07 for full sizing against 1.81 for 50/50; with Normalize Positions off, where the contract limit no longer holds full size back, both come out at 2.26. The ETF manages 0.15 — and that gap is the point: the model spends only about a third of the time in the market (3,292 days across 87 trades in 26.7 years); the rest of the time the money sits in cash and earns interest.

6. Method & Validation

Live Trading vs. Backtest

ParameterStatus
Live-Trade StartMay 2026
Live Trades so far2
Untouched holdout periodnone — the rules were developed on the full SPX history
Live forward performancesince May 2026 · not yet statistically meaningful
Backtest period1963–2026 · 63 years · 203 Trades
Backtest CAGR (Reinvest, 2000–today)$10K: 32.6 % p.a. · $100K: 22.0 % p.a.
Backtest Max Drawdown (Reinvest, 2000–today)$10K: 27.7% · $100K: 8.6%

AVALONPLUS itself began live trading in May 2026, so its own live sample is still small. Its predecessor AVALON — which follows the same principle — has been traded live since March 2020; AVALONPLUS is its refinement with recent insights (see section 1). All figures in this report are hypothetical backtests; past performance, real or simulated, does not guarantee future results.

Which prices these figures are built on

The signals come from the index, the trades from the future. Every entry and exit is computed on the S&P 500 index (SPX) and executed at the next open in the future. The stop distances are the other way round: they come from the worst adverse move measured on the futures themselves, and from SPX for the decades before futures existed.

The contract is younger than the data. S&P 500 futures started in 1982, the E-mini in 1997, the Micro E-mini in May 2019. Everything before 2000 is therefore a reconstruction: the SPX series scaled to the contract's point value, not recorded futures prices. The app marks it on screen whenever proxy data is in use.

Read the two halves accordingly: 2000–today is a futures backtest on real ES/MES prices, and 1963–1999 is a robustness study on reconstructed prices — useful for the question "do the rules survive other decades", not for a claim about exact futures P&L.

Bias Tests — What Was Actually Checked

Guidance on backtest disclosure consistently names the same omissions: survivorship bias, look-ahead bias, overfitting and market friction. Each is addressed below — including where the answer is "not applicable" rather than "solved".

What these tests do not prove

They show that further optimisation does not survive on data it never saw — which is why none of it is in the product. They do not show that the strategy's own parameters are validated out-of-sample. Those were chosen with hindsight, like any backtested parameter set. What that is worth, and what it costs, is measured below and in the Strategy Report under Risk.

Was this strategy overfitted?

A strategy can always be improved on the data it was built from. To find out whether such improvements survive, the search procedure was run on the first half of the history only and the rules it found were then applied, unchanged, to the years it had never seen.

1,073,028 rule combinations tested In-sample (searched) Out-of-sample (unseen)
Hit rate 100.0% 70.0%
Max drawdown 0 unchanged
Effect on P&L +60,508 −116,683

Out-of-sample the filter stack removed 17 trades — four losers and 13 winners. Repeated at five different split points it was negative five times out of five, so the result does not depend on where the history is cut. And when the same search was run on randomly shuffled results, where no relationship exists at all, it still produced a full stack of filters in 5 of 5 attempts — proof that finding rules proves nothing by itself.

Consequence: none of those filters is in the product. This is evidence of discipline, not of immunity — it shows that additional optimisation does not hold up, not that the core parameters are validated out-of-sample. They were chosen with hindsight, like any backtested parameter set.

Could look-ahead bias explain the results?

A backtest that quietly trades on the same bar that produced its signal will look excellent and cannot be reproduced live. Here the signal is formed on the daily close and executed at the next open at the earliest — never on the bar that generated it. The backtest trades come from the same pipeline that produces the live signals, so there is no separate "research version" that could differ.

Does survivorship bias affect these results?

Survivorship bias distorts results when a strategy is tested on a universe of individual stocks from which the failed companies have quietly disappeared; studies have found it can understate drawdowns by double-digit percentage points. This strategy trades one instrument — the S&P 500 itself, via futures. There is no universe to select from and no delisted constituent to omit, so the classic effect does not apply. What remains is the index's own composition history, which is a property of the benchmark and affects the Long Only (ETF) comparison in exactly the same way.

Are trading costs included?

Commission per contract per side and slippage per side are applied to every trade in every figure of this report, and both are shown as absolute amounts rather than hidden in a footnote. What a backtest cannot model is the day your order is filled worse than assumed, or not at all.

Normalize Positions — the Sizing Limits and What They Cost

Every figure in this report is produced with Normalize Positions ON. It bundles two limits that keep a 60-year compounding run from drifting into positions no private account could hold: a price floor (SPX 1500) for sizing — without it the low index levels of the early decades (SPX stood at 65 in 1963) would allow absurd contract counts — and a hard cap of 500 MES / 50 ES contracts per trade. The cap is not a liquidity limit but a plausibility bound: reaching it takes a seven-figure balance.

Once the account reaches the cap, the position stops growing while the account keeps growing, so the percentage return per trade falls structurally:

The headline CAGR is therefore a blend of an early phase below the limit and a later one at it — not a rate that can be extrapolated indefinitely. A small account compounds at the higher rate for years; a large one sits at the limit from the outset. The limit is a fixed contract count while the notional per contract rises with the index, so most of the time spent at it comes from the years when the index stood low. In the app's backtester it is a toggle; this report keeps it ON, which is the more conservative choice.

7. Glossary

Sorted alphabetically — each term with definition and AVALONPLUS-specific example.

CAGR (Compound Annual Growth Rate)
The geometrically averaged annual return an investment would need to achieve to grow from starting to ending capital.
Example: $10,000 grow over 26 years to $18.4M. This equals a CAGR of ~33% — as if the value rose by that percentage every year, even though actual annual returns varied.
Calmar Ratio
CAGR divided by Max Drawdown. Measures return per unit of drawdown risk.
Example: AVALONPLUS 2000–today (Reinvest, $10K): CAGR ~33% / DD 27.7% ≈ Calmar 1.2. S&P 500 (TR): CAGR ~8.4 % / DD ~55.8 % ≈ Calmar 0.15. The higher, the more efficient.
Drawdown
The maximum decline from the last peak to the trough before a new high.
Example: Account at $20K, falls to $16K, rises again to $25K. Drawdown = ($20K – $16K) / $20K = 20%. AVALONPLUS: Max DD 27.7% (Reinvest) or 9.2% (no reinvest) over 26 years (2000–today, $10K).
Leverage
Ratio between nominal value of the position traded and the capital deployed.
Example: $10K capital, 2 MES at SPX 5,000 = $50K nominal → leverage 5×. A 1% move in SPX moves your account by 5%. AVALONPLUS: L1 ~5.6×, S1 ~6.3×, L2 ~10×, L3 ~8×.
MAE (Maximum Adverse Excursion)
How far a trade moved against the position during its lifetime, even if it was profitable at the end.
Example: Long at SPX 5,000, falls to 4,800, rises to 5,300. MAE = –4%. Profit at end: +6%. AVALONPLUS: historically worst MAE 8% — well below the L1 stop at 11%.
Margin Requirements (Initial & Maintenance Margin)
Every futures broker requires two capital amounts per contract: the initial margin (deposit when opening the position) and the maintenance margin (minimum amount to be held during the lifetime of the position). If the account falls below the maintenance margin, a margin call is issued. For the MES Future the CME minimum margin is approx. $1,200–$1,500 per contract (varies with volatility). Brokers may require higher amounts.
Example: L1 signal, SPX 5,000: initial margin $1,400/contract. With $10K capital up to 7 contracts would be mathematically possible — AVALONPLUS limits to 2 (MAE sizing). Even after an 8% MAE trade the account remains well above the maintenance margin. The sizing is designed so that margin calls do not occur under normal market conditions.
MES (Micro E-mini S&P 500)
Smallest futures contract on the S&P 500. Multiplier: $5 per index point.
Example: SPX at 5,000. One MES contract = 5,000 × $5 = $25,000 nominal value. With $10K capital you trade approx. 2 contracts at an L1 signal ($50K nominal, leverage ~5×).
Out-of-Sample
Backtest data that was NOT used for strategy development. The actual robustness criterion.
Here: there is no such period. The signal rules were developed on the whole SPX history from 1963, and the stop distances were derived from the worst adverse move the futures ever showed. What was tested out-of-sample is something narrower: later attempts to improve the rules — searched on one half of the history, applied unchanged to the other. They failed, which is why none of them ship. Live forward performance has been tracked since May 2026 and is not yet statistically meaningful.
Position Sizing
The method determining how many contracts to trade per signal.
Example: AVALONPLUS: qty = floor(capital / (EP × (DD% + Margin%) / 100 × 5)). The same formula runs in the futures position size calculator. At $10K, EP=5,000, L1 (11%+7%=18%): qty = floor(10,000 / 4,500) = 2 contracts.
Profit Factor (PF)
Sum of all gains divided by sum of all losses. A value above 1 means gross profits exceeded gross losses over the selected backtest; assess it together with trade count, drawdown and out-of-sample evidence.
Example: AVALONPLUS: PF ~8.0 (1963–today, no reinvest) over 203 trades. The magnitude is plausible: the system is very selective (~3.2 trades/year) and losses are rare.
Reinvest / Compounding
Profits are not withdrawn but increase the capital available for subsequent trades. This leads to exponential rather than linear growth.
Example: $10K doubles to $20K → $40K → $80K — each doubling is larger in absolute terms. AVALONPLUS: factor ~1,839× (Reinvest) vs. ~20× (no reinvest) over 26 years.
Sharpe Ratio
Risk-adjusted return. Measures how much return is achieved per unit of volatility. Rule of thumb: >1.0 = good, >2.0 = very good.
Example: AVALONPLUS Sharpe ~0.45 — similar to S&P 500 (~0.5). Misleading: the system makes only ~3.2 trades/year. Months without a trade count as 0% return and artificially inflate the standard deviation.
Slippage
Difference between expected and actually executed price. In liquid markets typically 1–2 ticks, in stress phases 5–20 ticks.
Example: AVALONPLUS backtest assumption: 2 ticks of slippage per side. For MES this equals $2.50 per side, or $5.00 per contract round trip; with two MES contracts, total round-trip slippage is $10.00. Even with heavier slippage in crashes, MES gains are typically four-digit.
Sortino Ratio
Like Sharpe, but only downside volatility (negative returns) counts in the denominator. Does not penalize strategies for rising strongly.
Example: AVALONPLUS Sortino 2.23 (2000–today) — well above the market. Historical downside volatility was reduced by the sizing system: L1/S1/L3 stops were never triggered, L2 stops rarely. Therefore Sortino is the more relevant metric.
Stop-Loss
A preset price at which the modeled backtest position is closed — or a stop order you place with your broker. AVALONPLUS does not close positions automatically.
Example: Long position at SPX 5,000, stop at 4,450 (–11%). AVALONPLUS: L1 stop at –11% (63 years, never triggered), L2 stop at –1.5% (triggered in ~14% of L2 trades — by design).
Win Rate
Percentage of profitable trades.
Example: AVALONPLUS: ~66% win rate over 203 trades. Important: not meaningful on its own. What matters is the ratio of avg. win to avg. loss. A system with 40% win rate and 5× payout is more profitable than one with 80% win rate and 1.1× payout. The L3 momentum signal (~49% hit rate) deliberately lowers the overall win rate but still contributes positive expected value.