The Two Tickers Carrying My Curve
Suneet Malhotra
May 16, 2026
The options engine has closed 25 trades on the paper account so far. I made the spreadsheet I should have made a month ago this morning, broke the 25 trades down by underlying, and the chart had one line on it that mattered.
Two tickers, NVDA and TSLA, fired four of the 25 trades and produced most of the engine's net positive P&L. The other six tickers, across 21 trades, netted close to zero R.
The breakdown
NVDA fired twice and TSLA fired twice. Three of those four trades were winners and the median R across the four was about 1.4. Across the full 25-trade book the median R was 0.34. The two-ticker subset has paid for nearly all of the upside the engine has produced since I started tracking expectation per ticker.
The remaining six underlyings, AAPL, MSFT, AMD, AMZN, META, and GOOGL, accounted for 21 of the 25 closures. Their combined net expectation rounds to negative zero point zero five R per trade. The win rate on that subset is 52 percent. The median R is 0.18. They make money on some days, lose it back on others, and over the sample they have not paid for the engine's existence.
If you handed me this dataset stripped of labels and asked which underlyings were generating the edge, I would point at the two without hesitation. The labels are real.
The chart
If I plot cumulative P&L by ticker, six lines hover near the zero axis and two lines step up and to the right. The shape is the punchline. There is no rotation between underlyings. The two carriers carry. The six riders ride.
The take
Twenty-five trades is not enough sample to claim NVDA and TSLA are the edge. It is enough sample to refuse to claim the other six are.
There are two readings of the chart and the engine's next two months depend on which reading is right.
The first reading is that the engine has a real edge on high-momentum names with above-average implied volatility, and the two carriers are the only underlyings in the universe that consistently match that texture. The other six get traded by the engine because the bias-score gate fires on them sometimes, but the underlying behavior is different, and the expectation is correspondingly different. Under this reading I should narrow the universe. Probably to four names. The original two plus the next two highest in momentum-times-IV rank.
The second reading is that the engine is general, the two carriers got lucky on the four trades I have so far, and a wider sample will revert. Under this reading I keep the universe as it is, log forty more closures, and rerun the audit at n=65.
The second reading is the responsible one given the sample. The first reading is the one I want to act on. That gap is the discipline test.
What I am doing
Nothing yet. The threshold I set for changing the universe in production is fifty closures per ticker. I am at two for each carrier and somewhere between three and four for each rider. The sample does not warrant a structural change.
What I did change is what I track. The daily Telegram now prints expectation-per-ticker as a tail line on the EOD summary. If six weeks from now NVDA and TSLA are still the only two contributing positive expectation, the next audit is not whether to narrow. It is how to narrow without overfitting.
The most expensive mistake a small-sample trader can make is acting on the n=25 chart. The second most expensive is pretending the chart is not there.
Share this post
You Might Also Like
The Check That Passes Until the Day It Does Not
Every day my engine reconciles its own record of open positions against the broker's. Almost every day the two lists match. I do not run the check for those days.
OpenClaw TutorialsThe Three-Percent Daily Stop That Freezes at $3,000
My engine has two daily loss limits: three percent of equity and a flat $3,000. They are the same number on exactly one day, the day the account opened. After that they quietly diverge.
Agentic AIEverything in My Context Window Is an Instruction
This routine reads the open web, then commits to a live site with no human in the loop. Those two facts sit in the same context window, and the model has no way to tell them apart.
Quantitative TradingThe Edge I Assume Is Already Decaying
Wall Street spent this week arguing that AI is cutting the useful life of a trading edge from seven years to eighteen months. If that is even half right, it changes what a signal is worth.
Latest Blog Posts
Everything in My Context Window Is an Instruction
This routine reads the open web, then commits to a live site with no human in the loop. Those two facts sit in the same context window, and the model has no way to tell them apart.
The Edge I Assume Is Already Decaying
Wall Street spent this week arguing that AI is cutting the useful life of a trading edge from seven years to eighteen months. If that is even half right, it changes what a signal is worth.
The If Statement My Audit Never Read
On May 20 I published a rule for which steps of a routine are safe to run twice, and put my repo pull in the safest bucket. On July 9 that step failed. It never ran.
Related Tools & Demos
Multi-Model LLM Harness
One interface to call any AI model — capability routing, fallback chains, budgets, circuit breakers, and a quality feedback loop. A practical architecture pattern write-up.
Automated Trading System
Multi-engine trading platform with real-time risk management, regime-based strategy selection, and automated order execution.
View Source Code →Personal Health Analytics
Multi-modal health data platform integrating wearables, lab results, and lifestyle tracking with predictive habit modeling.
View Source Code →
Stay in the Loop
Get weekly insights on AI-driven QA, engineering leadership, and automation strategies.
No spam, ever. Unsubscribe anytime.