Explore more topics
Worked strategy research

Genetic optimization: follow a real NVDA search

See the starting NVDA rules, actual genetic changes, later backtests and filled order. Open the complete experiment in Aurora.

As of 2026-10-10

Jump to a section

TL;DR

The NVDA genetic search made money on later dates but failed the intended daytrading task. Its April to June 2024 test returned 22.06%, versus 36.00% for the stored NVDA hold comparator, with 12.73% drawdown and zero closed round trips. The selected version bought once and never sold because its exit required position value above $378,389.83 in a $10,000 account. Inspect changed rules and actual holdings, preserve all failed requirements, and treat published dates as reproduction windows rather than fresh unseen tests.

Inspect the full later-date comparison

NVDA genetic winner, original morning strategy, NVDA buy and hold, and SPY buy and hold: April to June 202415.5K8.3K2024-04-012024-06-29
Genetic winner 2024-06-29, 00:00:00 UTC
12,205.98
Original morning strategy 2024-06-29, 00:00:00 UTC
8,980.94
NVDA buy and hold 2024-06-29, 00:00:00 UTC
13,600.01
SPY buy and hold 2024-06-29, 00:00:00 UTC
10,371.61
Genetic winnerOriginal morning strategyNVDA buy and holdSPY buy and holdHistorical simulation

The frozen winner gained 22.06%; NVDA buy and hold gained 36.00%; SPY buy and hold gained 3.72%. The original strategy lost 10.19%. Every curve starts at $10,000.

The chart uses only timestamps shared by the exported histories. All returned samples remain in the public receipt. Strategy values include the stated fees. Benchmark lines use the engine's exported comparison values rather than orders submitted by the strategy.

Follow the recorded example

Recorded NVDA morning seed: buy 30 to under 60 minutes after open, price above its 20-minute average, no position; buy 95% of buying power; sell the full position from minute 200.
The actual original rules, translated into a reading map. This is not an app screenshot.
Step 1 of 4

Start with rules you can explain

Buy NVDA during the morning when its price is above its recent average, and sell the full position later that day. The search changes rules, scores each version on earlier prices, and keeps candidates for another round. This run used six versions per round for three rounds; the receipt preserves six final scores, not every parent-to-child change. Follow this completed experiment before setting up your own.

Search budget
6 versions per round, 3 rounds, 1 training window
Development dates
Jan 2 to Mar 28, 2024
Test settings
$10,000; Minute data; 0.05% stock fees per fill
What you should see

The exact starting strategy, including its exit and sizing. A name such as morning strategy cannot replace the saved rules.

Actual genetic changes: entry at open, 789-minute average with equality, dollar-sized buy; selected sell requires NVDA position value above $378,389.83.
Actual selected condition and action values from the public receipt. Full precision is available below.
Step 2 of 4

Inspect the changes the search chose

The search changed the entry time, comparison sign, moving-average length, buy size and exit. Its chosen entry could buy at the open. Its sell threshold was much larger than the starting account. Check these changes before calling the result an improved morning strategy.

What you should see

The actual selected rules, including the changed exit. This search was broader than changing one average length.

NVDA genetic winner, original morning strategy, NVDA buy and hold, and SPY buy and hold: April to June 202415.5K8.3K2024-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 winnerOriginal morning strategyNVDA buy and holdSPY buy and holdHistorical simulationDates shown in New York time
Recorded April 1 to June 28, 2024 test. All four exported curves start at $10,000. Candidates use cash dividends and pay 0.05% stock fees per fill. NVDA/SPY engine comparisons reinvest dividends and do not pay candidate commissions. Published dates are now historical reproduction dates.
Step 3 of 4

Check what happened on the later dates

Keep the selected rules unchanged and compare the April to June results. The selected version made money, but lagged buying and holding NVDA. Its rise alone does not show that it still traded each day.

Selected version
22.06%
NVDA buy and hold
36.00%
SPY buy and hold
3.72%
Original morning strategy
-10.19%
What you should see

The actual four value histories and their costs, rather than the optimizer's earlier score.

One actual NVDA Filled buy on April 1, 2024 at 13:30 UTC, no Filled sells, and an open position at test end.
A reading map of the actual backtest order and final history sample. These are simulated fills, not brokerage transactions.
Step 4 of 4

Read the trade before accepting the result

The selected version bought once and never sold. Its exit required a position worth more than $378,389.83. The test ended with $8,169.45 still held. That is different from the intended morning strategy, which was supposed to close its position each day.

Closed round trips
0
Largest drop from the peak
12.73%
What you should see

A profitable historical result that failed the intended daytrading task. The unchanged seed also weakened later; this record does not isolate one statistical cause.

See the real starting rules, what the search changed and how the result traded. Then open the complete configuration in Aurora. Browsing these steps runs nothing.

This page holds the complete search ledger. Use the overfitting guide to interpret the failure, or the prevention guide to set acceptance rules before a new experiment.

Continue with the complete example

Choose the Aurora button in the final step. Review the request and exact starting rules, then choose Start in Aurora. Send it when ready. Aurora has the recorded dates, search settings, fees, requirements and seed configuration; you do not need to invent them. Opening the modal starts no research or trading.

For a historical reproduction, approve the displayed research cost before submitting. Keep each returned reference and inspect the same job if its response is slow. The published 2024 dates are already known; choose later untouched dates before evaluating a new version.

2. Write down the search budget and success criteria first

2. Write down the search budget and success criteria first

A genetic optimizer tries a population of rule variants and changes that population over successive generations. We used Parameter mode, population 6, 3 generations and 1 training window, with 75% training. The final leaderboard returned 6 candidates. It does not supply a count of every unique rule evaluated during the search.

We ranked using validation selection with percent return as the primary metric and maximum drawdown as the tie-breaker. No activity constraints were set in that search. The separate acceptance requirements below were written before inspecting the later test. They are choices for this experiment, not universal trading rules.

In Optimization, choose Parameter for the genetic search. Review Population Size, Num Generations, Training Windows and dates. Sweep is a different method for comparing a defined set of settings; do not describe this broad genetic search as changing only one SMA parameter.

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

Positive later return22.06%Pass
Beat the stored NVDA buy-and-hold return22.06%Fail
Maximum drawdown at most 10%12.73%Fail
At least 10 closed round trips0Fail
No position held overnightOne buy, no sells; position held to test endFail

All five requirements had to pass. The NVDA benchmark threshold was 36.00%; the drawdown ceiling was 10%; the activity minimum was 10 closed round trips.

3. Inspect what the winning rules actually became

3. Inspect what the winning rules actually became

The Parameter search changed the time comparisons, moving-average length, position guard, allocation and exit threshold. Read the complete selected portfolio rather than relying on its original name.

The selected exit required an NVDA position worth more than $378,389.83 before selling 86.23%. That threshold was far above the portfolio's $10,000 starting value. The order record below shows what happened in the later test.

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

4. Separate training, selection and the later test

4. Separate training, selection and the later test

The selected candidate returned 38.14% in the optimizer's training window and 0.00% in validation, where its participation was zero. The other five final candidates had negative validation returns. A top rank therefore did not mean the selected rules had demonstrated profitable validation trades.

Validation was part of choosing the winner, so it was not our final unseen test. We froze the selected configuration before testing April to June. The full January-to-March replay shown above covers a different window from the optimizer's training result.

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

5. Ask Aurora to explain the signal and the resulting holdings

5. Ask Aurora to explain the signal and the resulting holdings

The later test's complete Filled-order query returned one buy: 66.015730 NVDA shares at $90.30, on 2024-04-01T13:30:00.000Z, with a $2.98 fee. There were no Filled sells. The final exported position was worth $8,169.45, beside $4,036.53 in cash.

At that entry, the signal trace recorded price and SMA as equal and all four entry conditions as true. An LLM can translate those condition values into an explanation, then follow the order and holdings. Give it the actual trace rather than asking it to invent a reason from the equity curve.

The gain came from a position held across sessions. Zero closed trades and remaining shares show why the return alone did not answer our daytrading question.

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

Minutes after open0≤0True
Minutes after open0≤139True
NVDA price / SMA90.29900360107422=90.29900360107422True
Position value0≥0True

6. Keep the failed version and plan the next experiment

6. Keep the failed version and plan the next experiment

We kept this as a failed worked example, rather than publishing a successful daytrading case study. The original seed weakened on later dates; the selected version made money but changed the holding behavior and missed four requirements. Raising the drawdown ceiling or removing the intraday requirement after seeing the result would change the question.

For a new attempt, define the strategy family and allowed changes before searching. Inspect exits and activity before accepting a candidate. Record each restart as another trial. Choose later dates that were excluded from every rule revision and corpus search; these published 2024 dates are now a reproduction for readers.

After freezing a version that meets your research criteria, observe its signals, orders and holdings in paper trading. An optional final lockbox is another reserved period you choose before development. Use a worked broker guide when you are ready to review account connection and deployment steps.

Inspect exact configurations and the earlier NVDA study

Inspect exact configurations and the earlier NVDA study

The public receipt contains the original seed, exact selected rules, all six final leaderboard rows, completed statistics, signal values, the Filled order and exported histories. It excludes private account and research job identifiers.

The earlier NVDA/NVD case study used an exhaustive parameter sweep across five folds. Its short-window lead did not hold over the longer test. It supplied context for this experiment, but its rules and measured results are separate from this genetic search.

JSON
View complete record
{
  "initialValue": 10000,
  "supportsFractionalShares": true,
  "dividendPolicy": "cash",
  "deployment": {
    "frequency": "Constant",
    "intervalSeconds": 60
  },
  "strategies": [
    {
      "name": "Selected entry",
      "action": {
        "type": "Buy",
        "targetAsset": {
          "name": "NVDA",
          "type": "Stock",
          "symbol": "NVDA"
        },
        "amount": {
          "type": "dollars",
          "amount": 5961.154601309878
        }
      },
      "condition": {
        "name": "Minutes After Market Open ≤ Constant 0 and Minutes After Market Open ≤ Constant 139 and NVDA last price = 789 Minute NVDA SMA and Position market value (NVDA) ≥ Constant 0",
        "type": "And",
        "conditions": [
          {
            "lhs": {
              "targetAssets": [],
              "type": "MinutesAfterOpen",
              "name": "Minutes After Market Open"
            },
            "rhs": {
              "targetAssets": [],
              "value": 0,
              "type": "Value",
              "name": "Constant 0"
            },
            "name": "Minutes After Market Open ≤ Constant 0",
            "comparison": "lessThanOrEqual",
            "type": "Base"
          },
          {
            "lhs": {
              "targetAssets": [],
              "type": "MinutesAfterOpen",
              "name": "Minutes After Market Open"
            },
            "rhs": {
              "targetAssets": [],
              "value": 139,
              "type": "Value",
              "name": "Constant 139"
            },
            "name": "Minutes After Market Open ≤ Constant 139",
            "comparison": "lessThanOrEqual",
            "type": "Base"
          },
          {
            "lhs": {
              "targetAsset": {
                "name": "NVDA",
                "type": "Stock",
                "symbol": "NVDA"
              },
              "targetAssets": [],
              "type": "Price",
              "name": "NVDA last price"
            },
            "rhs": {
              "targetAsset": {
                "name": "NVDA",
                "type": "Stock",
                "symbol": "NVDA"
              },
              "targetAssets": [],
              "window": {
                "length": 789,
                "interval": "Minute"
              },
              "type": "SimpleMovingAverage",
              "name": "789 Minute NVDA SMA"
            },
            "name": "NVDA last price = 789 Minute NVDA SMA",
            "comparison": "equal",
            "type": "Base"
          },
          {
            "lhs": {
              "targetAssets": [
                {
                  "name": "NVDA",
                  "type": "Stock",
                  "symbol": "NVDA"
                }
              ],
              "type": "PositionValue",
              "name": "Position market value (NVDA)"
            },
            "rhs": {
              "targetAssets": [],
              "value": 0,
              "type": "Value",
              "name": "Constant 0"
            },
            "name": "Position market value (NVDA) ≥ Constant 0",
            "comparison": "greaterThanOrEqual",
            "type": "Base"
          }
        ]
      },
      "automaticOrderApproval": false,
      "active": true,
      "orderExecution": {
        "type": "Market"
      }
    },
    {
      "name": "Selected exit",
      "action": {
        "type": "Sell",
        "targetAsset": {
          "name": "NVDA",
          "type": "Stock",
          "symbol": "NVDA"
        },
        "amount": {
          "type": "percent of current positions",
          "amount": 86.22988061050232
        }
      },
      "condition": {
        "name": "Minutes After Market Open = Constant 213 and Position market value (NVDA) > Constant 378389.83165016794",
        "type": "And",
        "conditions": [
          {
            "lhs": {
              "targetAssets": [],
              "type": "MinutesAfterOpen",
              "name": "Minutes After Market Open"
            },
            "rhs": {
              "targetAssets": [],
              "value": 213,
              "type": "Value",
              "name": "Constant 213"
            },
            "name": "Minutes After Market Open = Constant 213",
            "comparison": "equal",
            "type": "Base"
          },
          {
            "lhs": {
              "targetAssets": [
                {
                  "name": "NVDA",
                  "type": "Stock",
                  "symbol": "NVDA"
                }
              ],
              "type": "PositionValue",
              "name": "Position market value (NVDA)"
            },
            "rhs": {
              "targetAssets": [],
              "value": 378389.83165016794,
              "type": "Value",
              "name": "Constant 378389.83165016794"
            },
            "name": "Position market value (NVDA) > Constant 378389.83165016794",
            "comparison": "greaterThan",
            "type": "Base"
          }
        ]
      },
      "automaticOrderApproval": false,
      "active": true,
      "orderExecution": {
        "type": "Market"
      }
    }
  ],
  "name": "NVDA genetic winner: frozen research example"
}

Exact starting rules and completed source

Inspect or download the full starting configuration

It excludes private account and research identifiers. Six final rows are not a verified count of every unique candidate evaluated.

JSON
{
  "initialValue": 10000,
  "supportsFractionalShares": true,
  "dividendPolicy": "cash",
  "deployment": {
    "frequency": "Constant",
    "intervalSeconds": 60
  },
  "strategies": [
    {
      "condition": {
        "type": "And",
        "conditions": [
          {
            "type": "Base",
            "lhs": {
              "type": "MinutesAfterOpen"
            },
            "comparison": "greaterThanOrEqual",
            "rhs": {
              "type": "Value",
              "value": 30
            }
          },
          {
            "type": "Base",
            "lhs": {
              "type": "MinutesAfterOpen"
            },
            "comparison": "lessThan",
            "rhs": {
              "type": "Value",
              "value": 60
            }
          },
          {
            "type": "Base",
            "lhs": {
              "type": "Price",
              "targetAsset": {
                "name": "NVDA",
                "type": "Stock",
                "symbol": "NVDA"
              }
            },
            "comparison": "greaterThan",
            "rhs": {
              "type": "SimpleMovingAverage",
              "targetAsset": {
                "name": "NVDA",
                "type": "Stock",
                "symbol": "NVDA"
              },
              "window": {
                "length": 20,
                "interval": "Minute"
              }
            }
          },
          {
            "type": "Base",
            "lhs": {
              "type": "PositionValue",
              "targetAssets": [
                {
                  "name": "NVDA",
                  "type": "Stock",
                  "symbol": "NVDA"
                }
              ]
            },
            "comparison": "equal",
            "rhs": {
              "type": "Value",
              "value": 0
            }
          }
        ]
      },
      "action": {
        "type": "Buy",
        "targetAsset": {
          "name": "NVDA",
          "type": "Stock",
          "symbol": "NVDA"
        },
        "amount": {
          "type": "percent of buying power",
          "amount": 95
        }
      },
      "orderExecution": {
        "type": "Market"
      },
      "name": "Enter NVDA morning trend",
      "active": true,
      "automaticOrderApproval": false
    },
    {
      "condition": {
        "type": "And",
        "conditions": [
          {
            "type": "Base",
            "lhs": {
              "type": "MinutesAfterOpen"
            },
            "comparison": "greaterThanOrEqual",
            "rhs": {
              "type": "Value",
              "value": 200
            }
          },
          {
            "type": "Base",
            "lhs": {
              "type": "PositionValue",
              "targetAssets": [
                {
                  "name": "NVDA",
                  "type": "Stock",
                  "symbol": "NVDA"
                }
              ]
            },
            "comparison": "greaterThan",
            "rhs": {
              "type": "Value",
              "value": 0
            }
          }
        ]
      },
      "action": {
        "type": "Sell",
        "targetAsset": {
          "name": "NVDA",
          "type": "Stock",
          "symbol": "NVDA"
        },
        "amount": {
          "type": "percent of current positions",
          "amount": 100
        }
      },
      "orderExecution": {
        "type": "Market"
      },
      "name": "Exit NVDA at midday",
      "active": true,
      "automaticOrderApproval": false
    }
  ],
  "name": "NVDA morning trend | genetic generalization example | inactive research",
  "supportsCrypto": false,
  "alertsEnabled": false
}

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.