Can I download all 3,500 trades in the STS NQ backtest and check them myself?

STS ResearchPublished October 6, 2026Data as of August 5, 2026Hypothetical backtest, 2011 to 2026

Short answer. Yes. We publish every trade so you can check us: one CSV file lists all 3,500 trades in the STS hypothetical NQ backtest, August 2011 to August 2026, and a few spreadsheet formulas or a short Python script rebuild its published figures, from the $1,112,232 net and the 45.5% win rate to the largest dollar drawdown, $51,836.

This page gives you the file and two ways to check it: a spreadsheet route with no coding, and a Python route. Checking matters because a backtest you cannot rebuild is only a claim. The same file also shows what a headline figure hides: our largest drawdown in dollars is the most recent one, and most of the profit came from 2021 on. Every number here is from a hypothetical backtest. What the live signals did is on our forward record.

Download sts-trade-list-2011-2026-08-05.csv (3,500 rows, about 115 KB). Licence: CC BY 4.0: free to use and share, with credit to STS Futures (stsfutures.com).

What is in the file?

One row per trade, 3,500 rows in time order, five columns. A trade is one entry and its exit, also called a round trip. Every row is hypothetical: a backtest of how our five-strategy book would have traded NQ futures (the E-mini Nasdaq-100), one position at a time, at one to three contracts sized by recent volatility.

Column Name What it means
A trade_number The trade's place in time order, 1 to 3,500
B exit_month The month the trade closed, written YYYY-MM, New York time
C after_go_live 1 if the trade was entered on or after July 6, 2026, the day our signals went live; 0 if before
D net_pnl_usd What the trade made or lost in US dollars, after commission, at one to three NQ mini contracts
E cumulative_pnl_usd The running total: column D added up from trade 1 to this row

How do I check the STS numbers myself?

Count the rows and add up column D for the trade count and the net; track how far the running total falls below its best level so far for the largest dollar drawdown. Both routes below, a spreadsheet with no coding or a short Python script, give the same answers.

Two terms first. The win rate is the share of trades that made money. No trade in the file nets exactly zero, so the other 1,909 trades are all losses. A drawdown is the drop from a previous high in the running total. We measure it each time a trade closes, which is called closed-trade drawdown.

Route 1: Google Sheets or Excel

  1. Click the download link above and save the file.
  2. Open the file.
    • In Google Sheets:
      1. Go to sheets.google.com and click Blank spreadsheet.
      2. Choose File > Import, then click the Upload tab.
      3. Select the file, set Import location to Replace current sheet, and click Import data.
    • In Excel: choose File > Open > Browse, select the file and click Open. If it is not listed, set the file type to All Files.
  3. Check the layout. Row 1 holds the column names and rows 2 to 3501 hold the 3,500 trades. Column D is net_pnl_usd and column E is cumulative_pnl_usd. Your spreadsheet may show exit_month as a date; that does not affect any formula here.
  4. Click cell F2, type =MAX(0,E2) and press Enter. Column F will hold the running peak: the best running total so far, starting from $0.
  5. Click cell F3, type =MAX(F2,E3) and press Enter.
  6. Click F3 and press Ctrl+C (Cmd+C on a Mac) to copy it.
  7. Click the Name Box, the small box left of the formula bar that shows F3, type F3:F3501 and press Enter. This selects the column down to the last trade.
  8. Press Ctrl+V (Cmd+V) to paste. Every cell down to F3501 now holds the running peak.
  9. Click cell G2, type =F2-E2 and press Enter. Column G will hold the drawdown after each trade.
  10. Copy G2 down to row 3501 the same way as steps 6 to 8, typing G2:G3501 in the Name Box.
  11. Type each formula below into its own empty cell, for example J2, J3 and so on, and compare the result with the last two columns.
Check Type this You should see Our published figure (hypothetical)
Trades =COUNT(D2:D3501) 3500 3,500
Net P&L =SUM(D2:D3501) 1112232.4 $1,112,232
Win rate =COUNTIF(D2:D3501,">0")/COUNT(D2:D3501) about 0.4546 45.5%
Largest dollar drawdown =MAX(G2:G3501) 51836.2 $51,836
The same drawdown as a share of the $100,000 account =MAX(G2:G3501)/100000 about 0.5184 51.8%
  1. To see a result as a percentage, click its cell and choose Format > Number > Percent in Google Sheets, or click the % button on Excel's Home tab.
  2. Optional, for the drawdown section below: type =SUMIF(C2:C3501,0,D2:D3501)-MINIFS(E2:E3501,C2:C3501,1) in an empty cell. You should see 41109.7, the fall from $1,106,089.50, the last total before go-live, to the low of $1,064,979.80. MINIFS needs Google Sheets or Excel 2019 or later.
  3. Optional: click H2, type =G2/(100000+F2), copy it down to H3501 as in steps 6 to 8, then type =MAX(H2:H3501) in an empty cell. You should see about 0.2043 (20.4%), the deepest drawdown as a share of the account's value at the time.

Route 2: Python

  1. Go to python.org/downloads and click the yellow Download Python button.
  2. Run the installer. On Windows, tick "Add python.exe to PATH" on the first screen, then click Install Now.
  3. Open a terminal, the window where you type commands. On Windows, press the Windows key, type cmd and press Enter. On a Mac, press Cmd+Space, type Terminal and press Enter.
  4. Check that Python works: type python --version (on a Mac, python3 --version) and press Enter. You should see Python 3 followed by a version number.
  5. Install pandas, a free library that reads tables: type pip install pandas (on a Mac, pip3 install pandas) and press Enter. The last line should start with Successfully installed, or Requirement already satisfied if you already have it.
  6. Make a new folder and move the downloaded CSV into it.
  7. Open a plain text editor: Notepad on Windows, or TextEdit on a Mac followed by Format > Make Plain Text.
  8. Paste the script below into the editor.
  9. Save it in the folder from step 6 as check_sts.py. In Notepad, set Save as type to All files so the name does not end in .txt.
  10. In the terminal, type cd and a space, drag the folder into the terminal window, and press Enter.
  11. Type python check_sts.py (on a Mac, python3 check_sts.py) and press Enter.

The script reads the file, rebuilds the running total and its drawdowns, and prints seven checks. Every line has a comment above it saying what it does.

# Load pandas, the library that reads and adds up tables.
import pandas as pd

# Read the trade list: one row per trade, 3,500 rows.
df = pd.read_csv("sts-trade-list-2011-2026-08-05.csv")

# Take each trade's result in US dollars.
pnl = df["net_pnl_usd"]

# Add the results up in order: the running total after each trade.
total = pnl.cumsum()

# The running peak: the best running total so far, starting from $0.
peak = total.cummax().clip(lower=0)

# The drawdown after each trade: how far the running total sits below its peak.
drawdown = peak - total

# Count the trades.
print("Trades:", len(df))

# Add up every result.
print("Net P&L in dollars:", round(pnl.sum(), 2))

# The share of trades that made money, as a percentage.
print("Win rate %:", round(100 * (pnl > 0).mean(), 1))

# The largest dollar drawdown.
print("Largest dollar drawdown:", round(drawdown.max(), 2))

# The same drawdown as a share of the $100,000 account.
print("Largest dollar drawdown % of $100,000:", round(100 * drawdown.max() / 100000, 1))

# The deepest drawdown as a share of the account's value at the time ($100,000 plus the peak).
print("Deepest drawdown % of equity:", round(100 * (drawdown / (100000 + peak)).max(), 1))

# The part of the largest dollar drawdown from trades entered on or after go-live (after_go_live = 1):
# the last total before go-live minus the lowest total after it.
live = df["after_go_live"] == 1
print("Drawdown after go-live in dollars:", round(pnl[~live].sum() - total[live].min(), 2))

You should see exactly this (hypothetical backtest figures):

Trades: 3500
Net P&L in dollars: 1112232.4
Win rate %: 45.5
Largest dollar drawdown: 51836.2
Largest dollar drawdown % of $100,000: 51.8
Deepest drawdown % of equity: 20.4
Drawdown after go-live in dollars: 41109.7

If either route gives different numbers, your copy of the file is incomplete or the file has changed.

What does the largest dollar drawdown in the file look like?

The largest dollar drawdown is the most recent one, and most of it came after our signals went live. The running total peaked at trade 3,472, closed June 15, 2026, and fell $51,836 to its low at trade 3,492, closed July 20, 2026. Of that $51,836, $41,110 (79%) came from backtest trades entered on or after July 6, 2026, the day the signals went live.

Step line of cumulative hypothetical P&L for all 3,500 trades, below its first-trade level until trade 792 in October 2014 and ending at $1,112,232 in August 2026. An inset of the last 60 trades shows the peak on June 15, 2026, the low on July 20, 2026, $51,836 lower, and the July 6, 2026 go-live line between them.Step line of cumulative hypothetical P&L for all 3,500 trades, below its first-trade level until trade 792 in October 2014 and ending at $1,112,232 in August 2026. An inset of the last 60 trades shows the peak on June 15, 2026, the low on July 20, 2026, $51,836 lower, and the July 6, 2026 go-live line between them.
The inset is the point: the largest dollar drawdown, $51,836, sits at the very end of 15 years, mostly after the July 6, 2026 go-live line, so the largest dollar drawdown in the file is also the newest. Hypothetical backtest, NQ mini 1 to 3 contracts sized by volatility, data as of August 5, 2026.

The backtest closed at a new high on August 4, 2026, at trade 3,499, and the file ends $5,508 below it.

How large that drop looks depends on what you divide it by. It is 51.8% of the fixed $100,000 account our returns are quoted on, and 4.3% of the $1,216,816 equity peak it fell from. On micro contracts at the same one to three count (MNQ, one tenth the size, so every dollar times 0.1) it is $5,184. What that means for account size is in who STS is not for.

The deepest drawdown as a share of the account's value at the time is a different, older episode: 20.4%, $20,573 below a $100,721 peak. That peak was the very first trade, on August 11, 2011, and the low came in September 2013. It took just over three years, and 791 more trades, to close above that first trade's total, at trade 792 in October 2014.

Two stacked area charts of closed-trade drawdown for the hypothetical backtest. Top, in dollars below the running peak: the deepest point is -$51,836 in July 2026. Bottom, as a percentage of equity at the time: the deepest point is -20.4% in September 2013.Two stacked area charts of closed-trade drawdown for the hypothetical backtest. Top, in dollars below the running peak: the deepest point is -$51,836 in July 2026. Bottom, as a percentage of equity at the time: the deepest point is -20.4% in September 2013.
The two measures put the worst point in different years, -$51,836 in July 2026 and -20.4% in September 2013, because they divide by different amounts, so a drawdown figure means little until you know its basis. Bottom panel: drawdown over $100,000 plus the running peak. Hypothetical backtest, NQ mini 1 to 3 contracts sized by volatility, data as of August 5, 2026.

Did the backtest make money in every period?

No. Trades closed from 2011 to 2015 were close to flat, and about a third of all months lost money. Those 2011 to 2015 trades netted $3,121 across 1,136 trades. Trades closed from 2021 on produced $959,501, or 86.3% of the $1,112,232.

Part of that gap is the index level. Every NQ point is worth $20, and NQ moves more points at 20,000 than at 2,000. Measured per contract as a percentage of price, which removes that effect, 2021 onward still holds 78.1% of the total and 2011 to 2015 holds 0.7%. How the book did in each NQ decline covers the same years.

Two bar charts by exit year, 2011 to 2026. Top: hypothetical net P&L per year in dollars; 2011 to 2015 total $3,121 across 1,136 trades and 2021 on totals $959,501, 86.3% of the net. Bottom: the same trades per contract as a summed percentage of entry price; 2021 on is 78.1% of the total and 2011 to 2015 is 0.7%.Two bar charts by exit year, 2011 to 2026. Top: hypothetical net P&L per year in dollars; 2011 to 2015 total $3,121 across 1,136 trades and 2021 on totals $959,501, 86.3% of the net. Bottom: the same trades per contract as a summed percentage of entry price; 2021 on is 78.1% of the total and 2011 to 2015 is 0.7%.
The green bars, 2021 on, hold most of the profit in dollars (86.3%) and still most of it per contract (78.1%), so the early years add little to the total even after the index-level effect is removed. The bottom panel uses trade prices, which are not in the file; 2011 runs from August 11 and 2026 to August 5. Hypothetical backtest, NQ mini 1 to 3 contracts sized by volatility.

Losing months are routine. Of the 179 complete calendar months from September 2011 to July 2026, 62 (34.6%) lost money in book dollars. The median month, the one in the middle when all 179 are sorted by result, made $2,177. The worst was July 2026 at -$12,340, which includes one trade entered on July 2, before go-live.

Histogram of hypothetical net P&L for 179 complete calendar months in $5,000 bins. 62 of 179 months lost money (34.6%), the median month made $2,177 and the worst month, July 2026, lost $12,340.Histogram of hypothetical net P&L for 179 complete calendar months in $5,000 bins. 62 of 179 months lost money (34.6%), the median month made $2,177 and the worst month, July 2026, lost $12,340.
Most months land within $5,000 of zero on either side, and 62 of 179 lost money, so a losing month is normal in this backtest. Net P&L by exit month, the 179 complete months from September 2011 to July 2026; July 2026 includes a July 2 trade entered before go-live. Hypothetical backtest, NQ mini 1 to 3 contracts sized by volatility.

How much of the result depends on a few large trades?

Most of it. The best 100 trades earned 105.6% of the $1,112,232 net, more than the whole profit; the best 10 earned 24.7% and the best 50 earned 70.1%. The backtest won 1,591 of 3,500 trades (45.5%), so it lost more often than it won and was paid by the size of its winners. The 1,591 winners earned 2.8 times the net, and the 1,909 losers gave back 1.8 times it. The long runs of small losses between those winners are in our worst losing streak.

Line chart of the running share of the $1,112,232 hypothetical net, with trades ranked best first. The top 10 trades reach 24.7%, the top 50 70.1%, the top 100 105.6%, and all 1,591 winners 283.1%, before the 1,909 losers bring it back to 100%.Line chart of the running share of the $1,112,232 hypothetical net, with trades ranked best first. The top 10 trades reach 24.7%, the top 50 70.1%, the top 100 105.6%, and all 1,591 winners 283.1%, before the 1,909 losers bring it back to 100%.
The curve passes 100% of the net within the best 100 trades and peaks at 283.1% after all 1,591 winners, so the result rests on a small number of large winning trades. Hypothetical backtest, NQ mini 1 to 3 contracts sized by volatility, data as of August 5, 2026.

What costs are already in the numbers?

Commission is in every row and slippage is charged on market and stop orders; exchange data fees, platform fees and taxes are not included. Commission is $4.10 per contract per round trip, $2.05 on each side.

Slippage means filling at a worse price than the order asked for. The backtest charges two ticks on every market and stop order, where a tick is the smallest price step, 0.25 points or $5 per contract, so $10 per contract per fill. That covers 864 of the 3,500 entries and 3,439 of the 3,500 exits. The other 2,636 entries and 61 exits are limit orders, which fill only at a set price; the backtest fills them at the bar's closing price with no slippage.

We checked that model against another vendor's independent NQ price series, which runs to May 2025. 779 of 802 market entries sit exactly two ticks worse than the independent price at that moment, which is the slippage the backtest charges. 2,268 of 2,426 limit entries match it exactly.

Costs do not decide the full-file result. If every unslipped fill had also paid $10 per contract, those 4,533 contract-fills (one contract bought or sold once) would have cost a further $45,330, or 4.1% of the $1,112,232 hypothetical net. Across all 12,672 contract-fills the net is $87.77 per fill, or 17.6 ticks. The 2011 to 2015 trades are different: their $3,121 across 4,214 contract-fills is $0.74 per fill, under a fifth of a tick, so a small extra cost would have erased that period.

What can't the file tell you?

It cannot show live results, and it cannot be checked against market prices. It is a backtest, not an account statement.

Nineteen of the 3,500 trades were entered on or after July 6, 2026; they are the backtest results of the signals we sent from July 6 to August 5. At book size (1 to 3 contracts) and before commission, the 16 entered in July lost $10,425 ($10,645 per NQ contract) and the three entered from August 1 to 5 made $16,695, together $6,270, the backtest figure our forward record shows beside the live results. Our first 30 days of signals compares July trade by trade.

The file leaves out entry and exit times, prices, contract counts and which strategy took each trade, because times and prices together would publish when each strategy enters. What it proves is narrower: our published figures are the arithmetic of one fixed list of results. Full Access members also get the complete backtested trade list on the dashboard, filterable by date, direction and P&L. It also leaves out the deepest point each open trade reached, so our published open-trade drawdown of $55,050, which also counts losses on trades still open, cannot be rebuilt here. Methods for testing a backtest harder are in is my backtest overfit.

What does this mean for you?

You do not have to take our backtest figures on trust. A few formulas rebuild the headline figures, including the $51,836 largest dollar drawdown and the 79% of it that came after go-live. If you are weighing the signals, judge them against what the file shows:

All of that is a hypothetical backtest. For what the signals have done since July 6, 2026, use the forward record.

How we measured this

STS sends NQ futures signals from this five-strategy book by email, the web dashboard and a live feed, at $50 a month or $500 a year.


Hypothetical Performance Disclaimer (CFTC Rule 4.41): These results are based on simulated or hypothetical performance results that have certain inherent limitations. Unlike the results shown in an actual performance record, these results do not represent actual trading. Also, because these trades have not actually been executed, these results may have under- or over-compensated for the impact, if any, of certain market factors, such as lack of liquidity. Simulated or hypothetical trading programs in general are also subject to the fact that they are designed with the benefit of hindsight. No representation is being made that any account will or is likely to achieve profits or losses similar to these being shown.

Past performance is not necessarily indicative of future results. Futures trading involves substantial risk of loss and is not suitable for all investors.

See what STS NQ futures signals are and how they reach you and our forward record, every live signal we have sent, dated and public.

Hypothetical performance disclosure (CFTC Rule 4.41). These results are based on simulated or hypothetical performance results that have certain inherent limitations. Unlike the results shown in an actual performance record, these results do not represent actual trading. Also, because these trades have not actually been executed, these results may have under-or over-compensated for the impact, if any, of certain market factors, such as lack of liquidity. Simulated or hypothetical trading programs in general are also subject to the fact that they are designed with the benefit of hindsight. No representation is being made that any account will or is likely to achieve profits or losses similar to these being shown.

Past performance is not indicative of future results. Trading futures involves substantial risk of loss.