Explore more topics
Worked strategy research

Trading strategy overfitting: inspect a real earlier and later test

Compare the same NVDA strategy on earlier and later dates, then inspect the changed rules and actual orders before explaining the failure.

As of 2026-10-10

Jump to a section

TL;DR

A high training return can select an inactive or unintended strategy. This NVDA candidate returned 38.14% in training, 0% with no participation in validation and 22.06% on frozen April to June 2024 dates. It bought once and never sold, holding overnight instead of completing the requested intraday trades. Its exit threshold exceeded $378,389 in a $10,000 account. Inspect source coverage, entry conditions and reachable exits before attributing the failure solely to statistical overfitting; return alone does not establish the intended behavior.

A top training return did not establish an active validation strategy

Animation: a 2024 strip shows an NVDA trading bot's three stages: training Jan 2 to Mar 6 returned 38.14%, validation Mar 7 to Mar 28 returned 0.00% with zero participation, and the later test Apr 1 to Jun 28 returned 22.06%. The later test then expands into four $10,000 curves, ending at $13,600.01 for NVDA buy and hold, $12,205.98 for the selected bot, $10,371.61 for SPY buy and hold and $8,980.94 for the original morning strategy.
In the later test the bot bought once and never sold. It ended at $12,205.98, below NVDA buy and hold at $13,600.01.
Show the table · 3 rows, 4 columns

Scroll sideways to compare all columns. Select a heading to sort.

Training2024-01-02T00:00:00.000Z to 2024-03-06T12:00:00.000Z38.14%Develop candidates
Validation2024-03-07T12:00:00.000Z to 2024-03-28T00:00:00.000Z0.00%Select among final candidates
Frozen later test2024-04-01 to 2024-06-2822.06%Apply the predeclared acceptance criteria

Training returned 38.14%; validation returned 0.00% with zero participation; the frozen later test returned 22.06%. The other five final candidates had negative validation returns, so the selected zero-return candidate won the validation ordering without demonstrating profitable validation trades.

These observations diagnose a selection problem; they do not by themselves prove that statistical overfitting is the only cause. Inspect inactive validation, source availability, changed entry conditions and unreachable exits before naming the failure.

Inspect the frozen later test

Portfolio value (USD)

NVDA genetic winner, original morning strategy, NVDA buy and hold, and SPY buy and hold: April to June 2024$15.5K$8.3KLargest decline in plotted observations: 12.40%, 2024-06-20, 04:01:00 EDT to 2024-06-25, 04:01:00 EDT2024-04-012024-06-28
Genetic winner 2024-06-28, 20:00:00 EDT
$12,205.98
Original morning strategy 2024-06-28, 20:00:00 EDT
$8,980.94
NVDA buy and hold 2024-06-28, 20:00:00 EDT
$13,600.01
SPY buy and hold 2024-06-28, 20:00:00 EDT
$10,371.61

Genetic winner: 12.40% largest decline in plotted observations. 2024-06-20, 04:01:00 EDT ($13,328.24) to 2024-06-25, 04:01:00 EDT ($11,675.87).

Genetic winnerOriginal morning strategyNVDA buy and holdSPY buy and holdHistorical simulationDates shown in New York time

The selected candidate earned 22.06% in the later test. The stored order record contains one filled buy and no filled sells, so this positive result came with an overnight position and zero completed round trips. Compare the winner, unchanged morning seed and the stored NVDA/SPY baselines on their shared later dates.

Check whether optimization changed the strategy's meaning

Inspect the exact historical measurements

The selected exit required position value above $378,389.83 in a $10,000 account. The entry guard changed from an empty holding to position value ≥ 0. Read those changes alongside the one-buy/no-sell result: a candidate named as an intraday strategy actually held across sessions.

Scroll sideways to compare all columns. Select a heading to sort.

Entry timeMinutes after open ≥ 30 and < 60Minutes after open ≤ 0 and ≤ 139
Price rulePrice > 20-minute SMAPrice = 789-minute SMA
Position guardNVDA position value = 0NVDA position value ≥ 0
Buy size95% of buying power$5,961.15
ExitAt or after 200 minutes; position value > 0Exactly 213 minutes; position value > $378,389.83
Sell size100% of the position86.23% of the position

Separate three explanations before the next experiment

Show the table · 3 rows, 3 columns

Scroll sideways to compare all columns. Select a heading to sort.

Validation participation 0Whether complete source history and entry operands existedCount evaluated, eligible and active decisions; do not rank inactivity as successful trading
Only one buy and no sellsWhether the selected exit is reachable under the declared capital and price pathRequire observed closed round trips and no overnight holdings for an intraday task
Training ranked higher than validationHow many variants, restarts and rule changes used the same validation datesFreeze a new rule family and untouched final evaluation before selecting again

Continue exploring

Discussion

Sign in or create a free account to join the discussion.

No comments yet.

Aurora · AI research assistant

Try this in Aurora

Edit the request, then open it in Aurora. You choose when to send it.