Don’t take our word for it. Audit it.
Everything behind the QQQ LEAPS record quoted on our landing page: the exact method, every trade, every assumption, and every limitation. We publish what most backtests hide, because a number you cannot check is a number you should not trust.
The record, in full
| Total return | CAGR | Sharpe | Max DD | Calmar | Final value | |
|---|---|---|---|---|---|---|
| QQQ LEAPS (backtest) | +1,070.7% | 55.1% | 1.83 | -14.5% | 3.79 | $292,669 |
| QQQ buy & hold | +136.4% | 16.6% | 0.79 | -35.6% | 0.47 | $59,089 |
January 4, 2021 to August 14, 2026, 5.6 continuous years, starting from $25,000. Worst drawdown period: October 11 to October 26, 2023. QQQ buy & hold is measured on the same dates from the same data feed.
Audit trail for each headline number
Total return: +1,070.7%
Formula. (Final NAV - Starting NAV) / Starting NAV = (292,669 - 25,000) / 25,000 = 10.7067.
Inputs. Computed on the 1,410 daily NAV marks in trademind-v4-equity-curve.csv, which includes option mark-to-model, slippage, and commissions on every fill.
Check. Reproduce: sum the P&L column of the public ledger, add residual option marks, divide by 25,000. The public harness run.py prints the same figure.
CAGR: 55.1%
Formula. (Final NAV / Starting NAV) ^ (365.25 / days) - 1, with 2,048 calendar days from 2021-01-04 to 2026-08-14.
Inputs. Same NAV series as total return. The window is fixed and identical for every visitor.
Check. Reproduce: (292,669 / 25,000) ^ (365.25 / 2048) - 1 = 0.551. Printed by run.py in the public harness.
Sharpe ratio: 1.83
Formula. Mean of daily excess returns over the 10-year Treasury proxy, divided by their standard deviation, annualized with sqrt(252).
Inputs. Daily returns from the equity curve CSV; risk-free proxy from the ^IRX series listed in the run configuration file.
Check. Reproduce: metrics_v4_canonical.json in the repo contains the identical value from the same inputs.
Max drawdown: -14.5%
Formula. Largest peak-to-trough decline of the daily NAV series: min over t of (NAV(t) / running-max NAV - 1).
Inputs. The model-priced daily equity curve. The 15-month real-quote validation tape measured -30.4% over its window; the difference is stated next to this table.
Check. Reproduce: compute running max of nav in trademind-v4-equity-curve.csv and take the minimum drawdown. Printed by run.py.
Calmar ratio: 3.79
Formula. CAGR divided by the absolute max drawdown: 0.551 / 0.145 = 3.79.
Inputs. Derived from the two figures above; no separate data.
Check. Reproduce: divide the two values as shown.
Calendar year returns
2026 is a partial year through August 14. 2022 was the weakest year, barely positive. The record is not smooth, and the table above is not an average of good years.
HYPOTHETICAL PERFORMANCE RESULTS HAVE MANY INHERENT LIMITATIONS, SOME OF WHICH ARE DESCRIBED BELOW. NO REPRESENTATION IS BEING MADE THAT ANY ACCOUNT WILL OR IS LIKELY TO ACHIEVE PROFITS OR LOSSES SIMILAR TO THOSE SHOWN. IN FACT, THERE ARE FREQUENTLY SHARP DIFFERENCES BETWEEN HYPOTHETICAL PERFORMANCE RESULTS AND THE ACTUAL RESULTS SUBSEQUENTLY ACHIEVED BY ANY PARTICULAR TRADING PROGRAM.
ONE OF THE LIMITATIONS OF HYPOTHETICAL PERFORMANCE RESULTS IS THAT THEY ARE GENERALLY PREPARED WITH THE BENEFIT OF HINDSIGHT. IN ADDITION, HYPOTHETICAL TRADING DOES NOT INVOLVE FINANCIAL RISK, AND NO HYPOTHETICAL TRADING RECORD CAN COMPLETELY ACCOUNT FOR THE IMPACT OF FINANCIAL RISK IN ACTUAL TRADING. FOR EXAMPLE, THE ABILITY TO WITHSTAND LOSSES OR TO ADHERE TO A PARTICULAR TRADING PROGRAM IN SPITE OF TRADING LOSSES ARE MATERIAL POINTS WHICH CAN ALSO ADVERSELY AFFECT ACTUAL TRADING RESULTS. THERE ARE NUMEROUS OTHER FACTORS RELATED TO THE MARKETS IN GENERAL OR TO THE IMPLEMENTATION OF ANY SPECIFIC TRADING PROGRAM WHICH CANNOT BE FULLY ACCOUNTED FOR IN THE PREPARATION OF HYPOTHETICAL PERFORMANCE RESULTS AND ALL OF WHICH CAN ADVERSELY AFFECT ACTUAL TRADING RESULTS.
Past performance is not necessarily indicative of future results. This is a backtest: no actual account produced these results. The next drawdown could be deeper than -14.5%. TradeMind publishes signals for you to review and enter at your own broker; it never connects to or submits orders to your brokerage.
The exact method, step by step
No black box. If a step below is vague, that is a bug in this page, not a secret in the model. Tell us and we will fix it.
The data
Hourly and daily QQQ bars, daily VIX, VIX3M, and the 13-week T-bill rate as the risk-free rate, January 2021 through August 2026. The engine evaluates once per hour and acts in a single window per trading day at 3:00 PM ET. The equity curve is marked at each daily close.
The core position
When entry conditions line up, the engine buys a deep in-the-money QQQ LEAPS call: delta near 0.80 to 0.85 with 12 to 24 months of time, depending on regime. Position size is capped at one third of account value, with at most 3 open positions, 5 contracts, and a 5% cash reserve. The LEAPS is the engine. Everything else is plumbing.
The income overlay
Against each LEAPS, the engine sells 32-day calls near delta 0.15 to 0.28, collecting premium. It takes profits at 10 to 20%, cuts losers at twice the credit received, and rolls or closes managed positions at 21 days to expiry or delta 0.40. In this window: 392 short calls sold, 85.2% profitable.
The pricing model, stated plainly
There is no historical options data anywhere in this run. Every option is priced with Black-Scholes, using VIX scaled by regime-dependent multipliers as the volatility input and the 13-week T-bill rate as the risk-free rate. Fills and daily marks are theoretical values, not market prints. What that means in practice is the next section.
The costs, included on every fill
One dollar commission per contract, plus slippage on every entry and exit: 0.35% of the option premium in calm markets, rising to 2% when VIX is above 35. Costs are modeled as a function of VIX and are therefore highest exactly when spreads actually widen.
The validator
The QQQ LEAPS gate was not tuned on this window and then reported on it. We ran combinatorial cross-validation across 21 recombined sub-windows of the same period: QQQ LEAPS beat the unfiltered engine on return and Sharpe in 18 of 21 paths. The live execution stack imports this same configuration and these same gates.
When the model refuses to trade
Selling calls into the wrong tape is how covered-call overlays die. The engine skips the overlay whenever any of these fire:
- Strong trend: regime is strong bull and ADX reads 16 or higher. Skipped 788 times.
- Thin premium: implied volatility is below 0.7 times realized volatility. You would be selling insurance for less than the historical cost of claims. Skipped 149 times.
- Strong trend with thin premium (the QQQ LEAPS rule): ADX above 25 while implied volatility is below realized. Skipped 95 times.
Total: 1,032 days the model looked at the overlay and declined it. Saying no is most of the job.
What this record cannot tell you
We would rather lose a sale to an informed skeptic than win one from a misled believer. These are the limitations, stated as confidently as the results:
Black-Scholes is not a market
Real option prices carry skew, term structure, and microstructure that a formula does not. Our IV-from-VIX scaling captures the level of volatility reasonably well, but individual fills can deviate from what your broker would have quoted, in either direction. This is the single biggest limitation of this record.
Slippage is modeled, not measured
The VIX-scaled slippage schedule is an estimate. Real fills at real brokers will differ, especially on the multi-leg rolls. We chose conservative values, but conservative is not the same as correct.
Hourly granularity hides the bad fifteen minutes
Decisions happen on hourly bars in one daily window. Prices moved inside those hours in ways the backtest never sees. Intraday spikes can be better or worse than the bar implies.
One strong bull market
Five and a half years, mostly rising, including the 2022 bear. The window contains one deep QQQ correction, not three. A strategy that shines here can sag in a decade of chop.
Survivorship of design
We tried variants before settling on QQQ LEAPS, and you are reading about the one that worked. The cross-validation above mitigates this; it does not eliminate it. Treat the number as evidence, not destiny.
If you want to see what this strategy looks like priced by the real options market instead of a formula, our 15-month real-quote simulation showed a -30.4% maximum drawdown over its window. We publish that number too.
What this would mean for a $10,000 retirement account*
No new claims in this box. It is the same backtested CAGR from the table above, compounded forward so the arithmetic is visible.
| Year 0 | $10,000 |
| Year 5 | ~$89,400 |
| Year 10 | ~$799,400 |
| Year 15 | ~$7,146,600 |
The path was not smooth. The same record includes a nearly flat 2022 at +10.8% and a -14.5% drawdown in late 2023. Compounding at this rate is an average across those years, not a straight line.
Which accounts can run this
Buying long-dated calls and selling covered calls against them are permitted in most IRAs and Roth IRAs, subject to broker approval. Standard employer 401(k) plans generally do not support options trading.
*Hypothetical illustration based on backtested results, not a projection or promise. The rate used is 55% per year, the backtested CAGR rounded down. Backtested performance has many inherent limitations and is not necessarily indicative of future results. A 55% rate sustained for 15 years would exceed nearly all verified long-horizon public track records. Shown for arithmetic illustration only.
Check us the way you would check anyone
Here are the red flags auditors look for in a backtest, applied to this record before you have to ask:
| The red flag | This record | Verdict |
|---|---|---|
| Sharpe above 3 usually means overfitting | 1.83 | Passes |
| Win rate above 90% usually means curve-fitting | 85.7% on short calls, 82.5% on SMH spreads, 90.9% on LEAPS entries | Passes, watch the small LEAPS sample |
| Zero losing months means the data is wrong | 20 losing months out of 67, with 2022 nearly flat at +10.8% | Passes |
| Drawdown that never exceeds 10% is cosmetic | -14.5% peak to trough over three weeks in late 2023 | Passes |
| Returns immune to parameters are real; returns balanced on one setting are not | One entry threshold set at 0.43 instead of 0.45 adds a single trade and moves CAGR from 54.0% to 55.1% | Disclosed, not hidden |
The last row is the one to sit with. Two adjacent settings of one gate differ by about a point of CAGR because of a single 2026 entry. We publish both numbers and the ledger entry for that trade. Judge accordingly.
The proof kit
Download everything. Check our arithmetic in a spreadsheet, or rerun the whole engine yourself:
Reproduce this record in three commands
- git clone https://github.com/taocodao/trademind-v4-harness && cd trademind-v4-harness
- pip install -r requirements.txt
- python run.py, then compare your output/ directory against the files above
One piece stays private: the confidence model behind the entry gate. The repo ships its precomputed walk-forward output as data, so every trade in the ledger still reproduces exactly, while the model internals remain ours. Everything else, the regime classifier, the pricing, the gates, the exits, the costs, is right there for you to read, run, and break.
Code and data lineage
The exact code and data behind every number on this page, pinned so you can verify we have not moved the goalposts.
- Harness commit
- 2937348
- Release tag
- v1.0.0-public-audit
- Input data
- QQQ 1h/1d, VIX, VIX3M, ^IRX via download_data.py; ml_confidence.csv (SHA-256 in repo)
Artifact checksums (SHA-256)
926ee4bd518f56b7fad1a851297efee5c6a1be80af42a0520ae2f4c762ea23f9ba135e4ab369a1b8aaa4f420e7cb24661721ff45f5f75c2f317a6d44eebdd6e0ec187a58047b00e587867f7dfaa423603ac2b84a0d253cd5a75feca93499225cc5fb9592e06eef3b7665fb5ca6cc2342be280250f31b00c8de94fa07c824cbdce9338bc11037eca59125e930bfe28d0df8520c7f1ff37e370e6990b4ba486765If any downloaded file hashes differently from what is listed here, assume it has been altered and tell us. The same checksums are committed to the public repo.
QQQ Defensive: the record, in full
QQQ Defensive holds only ETFs: QQQ, QLD (2x QQQ), TQQQ (3x QQQ) and SGOV, a cash-like Treasury bill fund. It needs no options trading permission and works in any brokerage account. Below are its out of sample record, its method, its limitations, and the data to check it yourself.
| Total return | CAGR | Sharpe | Max DD | Calmar | Final value | |
|---|---|---|---|---|---|---|
| QQQ Defensive (backtest) | +93.9% | 13.7% | 1.05 | -15.0% | 0.91 | $48,478 |
| QQQ buy & hold | +119.7% | 16.5% | 0.79 | -36.8% | 0.45 | $54,917 |
May 7, 2021 to June 30, 2026, 5.2 continuous out of sample years, starting from $25,000, default (moderate) risk level. QQQ buy & hold is measured on the same hourly bars. Worst drawdown period: QQQ Defensive, July 10, 2024 to June 5, 2025. QQQ buy & hold, November 22, 2021 to October 13, 2022. QQQ Defensive earned less than buy & hold here. What it gave up in return it traded for a shallower worst fall: -15.0% against -36.8%.
The same method at the other two risk levels: Conservative 10.10% CAGR with a -12.65% worst fall, and Aggressive 17.75% CAGR with a -22.29% worst fall. Each level is a fixed, published variant of the same model.
Calendar year returns
| Year | QQQ Defensive | QQQ buy & hold |
|---|---|---|
| 2021 | +17.8% | +18.7% |
| 2022 | -3.4% | -33.0% |
| 2023 | +22.3% | +53.7% |
| 2024 | +10.7% | +24.8% |
| 2025 | +4.5% | +20.2% |
| 2026 | +20.6% | +19.8% |
2021 starts May 7 and 2026 ends June 30. QQQ Defensive trailed buy & hold in 2021, 2023, 2024 and 2025, and was ahead in 2022 and 2026. This is a steadier record, not a smooth one, and 2024 and 2025 were modest.
HYPOTHETICAL PERFORMANCE RESULTS HAVE MANY INHERENT LIMITATIONS, SOME OF WHICH ARE DESCRIBED BELOW. NO REPRESENTATION IS BEING MADE THAT ANY ACCOUNT WILL OR IS LIKELY TO ACHIEVE PROFITS OR LOSSES SIMILAR TO THOSE SHOWN. IN FACT, THERE ARE FREQUENTLY SHARP DIFFERENCES BETWEEN HYPOTHETICAL PERFORMANCE RESULTS AND THE ACTUAL RESULTS SUBSEQUENTLY ACHIEVED BY ANY PARTICULAR TRADING PROGRAM.
ONE OF THE LIMITATIONS OF HYPOTHETICAL PERFORMANCE RESULTS IS THAT THEY ARE GENERALLY PREPARED WITH THE BENEFIT OF HINDSIGHT. IN ADDITION, HYPOTHETICAL TRADING DOES NOT INVOLVE FINANCIAL RISK, AND NO HYPOTHETICAL TRADING RECORD CAN COMPLETELY ACCOUNT FOR THE IMPACT OF FINANCIAL RISK IN ACTUAL TRADING. FOR EXAMPLE, THE ABILITY TO WITHSTAND LOSSES OR TO ADHERE TO A PARTICULAR TRADING PROGRAM IN SPITE OF TRADING LOSSES ARE MATERIAL POINTS WHICH CAN ALSO ADVERSELY AFFECT ACTUAL TRADING RESULTS. THERE ARE NUMEROUS OTHER FACTORS RELATED TO THE MARKETS IN GENERAL OR TO THE IMPLEMENTATION OF ANY SPECIFIC TRADING PROGRAM WHICH CANNOT BE FULLY ACCOUNTED FOR IN THE PREPARATION OF HYPOTHETICAL PERFORMANCE RESULTS AND ALL OF WHICH CAN ADVERSELY AFFECT ACTUAL TRADING RESULTS.
Past performance is not necessarily indicative of future results. This is a backtest: no actual account produced these results. The next drawdown could be deeper than -15.0%. TradeMind publishes signals for you to review and enter at your own broker; it never connects to or submits orders to your brokerage.
How QQQ Defensive works
The data
Real hourly bars for QQQ, QLD, TQQQ and SGOV from Interactive Brokers market data, plus the VIX and a high yield bond fund as a credit stress reading. Training begins in December 2019 and the test begins on May 7, 2021. No prices are modeled.
The decision
Every hour the model reads QQQ against its 200 day average, two regime models, a machine learning confidence score and the VIX term structure. In a bull regime it picks a mix of QQQ, QLD and TQQQ, always keeping at least 15% in SGOV, and the leveraged share rises and falls with the confidence score. In a bear regime, or when QQQ sits well under its long average, the account moves toward SGOV. A VIX guard and a crash drawdown rule adjust the leveraged part.
The costs
Commission is zero, as at most US brokers today. The test still charges the bid ask spread on every trade: 1 basis point round trip for QQQ, 4 for QLD and TQQQ, 1.5 for SGOV. That came to $1,997 over 2,664 fills, and it lowered the CAGR by roughly two points. A 5% no trade band and a hysteresis rule keep the model from churning.
The out of sample test
The history is cut into 11 folds. Each fold trains on about 1.5 years, then trades the next 6 months it has never seen, and the models are refit on training data only. The six month test windows join into one continuous equity curve.
What this record does not tell you
Every backtest has gaps. These are the ones we know about.
Only one bear market
The window holds one full bear market, 2022. The hourly data starts in 2019, so earlier declines such as 2008 or 2000 to 2002 have not been tested on this model. A different kind of decline could behave differently.
Settings were chosen on this same window
The live settings were picked after earlier runs on these same dates. The folds are out of sample for the models, but not for the choice of settings, so this record is more flattering than a true forward test.
Costs are assumptions
Spreads are modeled, not measured from real fills. Fills at your broker can be better or worse, especially in fast markets. Taxes are not included.
The worst fall was slow
The deepest fall ran eleven months, from July 2024 to June 2025, with short rallies inside it. A shallower fall is not a quick one, and the next fall could be deeper than -15.0%.
It lagged in strong years
In 2023, 2024 and 2025 buy & hold earned far more. That is the price of the shallower fall, and it is why this record leads with the drawdown and not the return.
Models age
The live models are frozen between refits and can drift as markets change.
Hypothetical results have many limitations. Read the notice above, then decide for yourself.
QQQ Defensive data downloads
Check the arithmetic in a spreadsheet. A trade by trade ledger for QQQ Defensive is not published yet, but the weights file shows every change in holdings at each daily close.
Artifact checksums (SHA-256)
583df5bd4829fad6f414d07449129c10f3dc81cdbac016d46760df3f041a054a035ffe3d85d81ac9e2b9fc1291b5078fce8e8a4294dddb31cb35bdde61920ddc636ec6a2836ad1c1c6e6c631b3ccb6a2f22e8bbacdada32cce44b24da469985d