Methodology: how StrategyCheck measures whether a strategy works
StrategyCheck's methodology computes every metric on closed trades of a single strategy version and publishes it with its n. Below the sample for the horizon (100 trades intraday, 40 swing, 20 position, 4 rebalances for portfolios) no percentages are shown. Gains are net of costs, slippage is compared against the broker statement, and every figure carries its PAPER, BACKTEST or REAL label. Version 1, November 2, 2026.
This page is the product's only source of definitions. When the panel, the daily message or the CSV audit shows a number, it is computed as written here. If something changes, this page changes first, with a new date and version.
Contents
- The three labels: PAPER, BACKTEST, REAL
- What a closed trade is (FIFO)
- The three gates
- Thresholds by horizon and why 100 trades
- How n is counted
- Net gain per trade (expectancy)
- Profit factor
- Costs: commission and slippage
- Maximum drawdown and limit
- Concentration
- Benchmark
- Plausible range
- What "it can't be known yet" means
- When it says "it does not work" and what it says
- How a version is cut
- What the daily message can and cannot say
- What the CSV audit will compute
- What we do not measure
1. The three labels: PAPER, BACKTEST, REAL
Every figure that carries an amount, a number of trades or a percentage carries one of three labels. They do not go in a footer: they sit next to the number, every time.
- BACKTEST
- Computed on past data with the same code that later runs live. Nothing was traded. A backtest does not count toward the gate.
- PAPER
- Simulated by StrategyCheck with real market prices and modeled costs (assumed commission and slippage). Not real money. There are two kinds of paper and which one is always stated: the one simulated by StrategyCheck (no external statement) and Alpaca paper via OAuth (with a broker statement).
- REAL
- Trades in your account at a broker, according to its statement. In the CSV audit it reads "REAL (per your file)" because StrategyCheck did not verify it against the broker.
PAPER and BACKTEST results are hypothetical and do not guarantee REAL results: in real there are price, execution and cost differences that the simulation does not reflect.
2. What a closed trade is (FIFO)
The unit of measurement is the closed trade, also called a round trip: an entry and the exit that closes it, in the same symbol. Open positions do not count; they are mentioned separately.
Executions are matched by FIFO (first in, first out): each sale is assigned to the oldest purchases that still have unclosed quantity, in date and time order. Partial executions of the same order are grouped before matching.
What is excluded: sales with no earlier purchase in the file (how many is reported), instruments that are not US stocks or ETFs (options, futures, crypto: they are detected and stated) and rows that are not trades (dividends, deposits, standalone fees). In the beta there are no shorts: strategies return long or flat.
3. The three gates
A strategy goes through three stages in order: backtest, paper and real. Between paper and real there is a gate that the system verifies by code. The "trade for real" button is disabled until it is met; nobody can enable it by hand, not even the StrategyCheck team. Passing the gate does not guarantee future gains, and the product says so every time.
The gate is evaluated on a single version of the strategy. It has five conditions:
- Closed trades: at least the sample for the horizon (table below).
- Market days without version changes: at least those for the horizon.
- Net gain per trade greater than 0.
- Profit factor greater than 1.3. For rebalanced portfolios, instead: net return greater than the benchmark.
- Maximum drawdown of the version, not the current one, within the limit you set.
4. Thresholds by horizon and why 100 trades
| Horizon | Closed trades, minimum | Market days, minimum | Result criterion |
|---|---|---|---|
| Intraday (discipline mode) | 100 | 40 | Net gain per trade > 0 and profit factor > 1.3 |
| Swing | 40 | 60 | Same |
| Position | 20 | 120 | Same |
| Rebalanced portfolio | 4 rebalances | 180 | Net return > benchmark, with drawdown within the limit |
In every horizon: maximum drawdown of the version within the limit and no version changes. Defined on October 27, 2026.
Why 100. With few trades, the observed average moves a lot from one sample to the next: a method with zero expected gain easily produces runs of 20 or 30 positive trades. With 100 trades the standard error of the average shrinks to one tenth of a single trade's dispersion, enough to tell a positive average from a null one in short-term strategies, where trades are many and alike. It is not a magic number; it is the point where not showing percentages stops being prudent and starts being convenient.
Why by horizon. 100 trades in 40 market days cannot be reached outside intraday: a swing strategy reaches day 40 with some 20 to 25 trades and would say "75 to go" for months. That is why slower horizons require fewer trades but more days: the sample is offset with calendar time, which is what exposes the strategy to different markets. The price of that decision is that a position strategy with 20 trades has a less firm verdict than an intraday one with 100; the plausible range (section 12) shows it.
5. How n is counted
n is the number of closed trades of the current version, since it entered PAPER (or REAL), up to the close of the last market day. It does not add backtest trades or earlier versions. For rebalanced portfolios, n counts executed rebalances, not orders.
Golden rule: when n is below the sample for the horizon, win rate, net gain per trade and profit factor are null. No sentence in the product reads them without first requiring the sample.
6. Net gain per trade (expectancy)
It is the average, after costs, of what each closed trade left. At level 1 the product says "average of +US$ 6.20 per trade, after costs"; the word expectancy appears only at the technical level and in the glossary.
7. Profit factor
In plain language: "for every US$ 1 you lost, you made US$ 0.87". The gate requires more than 1.3, that is, more than US$ 1.30 made for every US$ 1 lost; exactly 1.30 does not pass. If there were no negative trades the ratio is undefined and is not shown.
8. Costs: commission and slippage
Every result figure is net of costs. In PAPER simulated by StrategyCheck, costs are modeled: a commission per trade and a slippage per share, both declared on the strategy's sheet. In REAL and in Alpaca paper, costs are those of the broker statement.
The decision is made at the close of bar t and execution starts at the open of t+1: a price the strategy could not have known is never used. When there is a statement, real slippage is compared with the modeled one and the difference is shown in the edge report.
If a CSV file has no commission column, the result is labeled gross and the report says it probably overstates what you made. A fixed commission per trade can be entered, and it is noted.
9. Maximum drawdown and limit
The gate uses the maximum drawdown of the version, not the current one: a version that fell 12% in March and recovered in April still fails a 10% limit. In the CSV audit, where there is no initial capital, the drawdown is reported in dollars on the cumulative result curve and not as a percentage.
10. Concentration
It measures what share of the result came from a single day. It is stated when it reaches 50% and there are at least 10 trades, even if the gate has been passed, because it is a descriptive fact and not a verdict: "75% of the PAPER gain came from a single day". In the CSV audit it is computed over trades instead of days, from 3 closed trades.
11. Benchmark
For rebalanced portfolios, the result criterion is net return compared with buying and holding the reference ETF (SPY by default) over the same period, computed and labeled BACKTEST because nothing was traded. For the other horizons the benchmark is shown in the edge report but is not part of the gate.
12. Plausible range
Next to the net gain per trade a range is shown: the interval within which the average falls in 90% of resamples of the same trades (bootstrap, 2,000 resamples). If the range includes negative values, the product says so: "It works so far. The plausible range includes negative values". The exact method is published with the edge report code in Phase 1; this definition is version 1.
13. What "it can't be known yet" means
It is the verdict while n is below the sample for the horizon. It is not an error state or an empty screen: the product shows how many trades so far, how many to go and how many market days the version has, and does not show win rate, average per trade, profit factor or comparison with the market. It does show descriptive facts: cumulative net result with its n, drawdown from the peak, concentration and outages.
14. When it says "it does not work" and what it says
With the full sample there are three verdicts and nothing else:
- It works so far: it covers its costs (net gain per trade greater than 0). Shown with the plausible range.
- It does not work: with the full sample, the net average per trade is less than or equal to 0.
- It can't be known yet: n below the sample.
When it says "it does not work", it states the fact, the sample and the cost, and a single reason if the data support it: a partition by weekday, by opening hour or by market regime with at least 20 trades, whose average is worse than the rest's and which explains at least half of the loss. Then it proposes one thing to try, marked as a lead and not a certainty. If no pattern meets that, it says so: "there is no clear pattern yet for why". The subject is always the version, never the person.
15. How a version is cut
Any change to the strategy (a rule, a parameter, a line of code, the symbol universe) creates a new version. The new version starts with n = 0 and 0 market days: the gate counter restarts. The previous version's trades are kept with their own verdict and are not added. This prevents the most common mistake: adjusting the strategy until the past looks good and counting that past as proof.
16. What the daily message can and cannot say
The daily message is composed by code from a closed vocabulary of 36 sentences, each with a condition on the day's facts and a test. No language model generates a number, a judgment or a sentence. Rules:
- Fixed section order: Status, Today, Cumulative, Gate, Incidents, Next step. A section with no sentences disappears.
- There is no "nothing new" and no "all good". That there were no outages, lost bars or broker differences is stated because it is a verified fact.
- Below the sample no win rate or verdict comes out; the validator rejects the output if they appear together.
- No evaluative adjectives, no exclamation marks, no future tense, no promises. One idea per sentence.
- If the data is not current, it says when it is from: "data as of 17:00".
- If there was no market session, there is no message.
17. What the CSV audit will compute
The public tool "Audit your trading history for free" has a planned date: November 20, 2026. It is not published yet. When it is, it will compute exactly this, with no sign-up:
- Reading of the trades CSV from any broker (date and time, symbol, buy or sell, quantity, price and, if present, commission), with a review of how each column was interpreted before computing.
- Closed trades by FIFO (section 2), grouping partial executions. Sales with no earlier purchase and open positions are reported and excluded.
- Costs: commissions paid, result before and after costs. With no commission column, the result is labeled gross.
- Concentration over trades, from 3 closed trades.
- Worst drawdown in dollars on the cumulative result curve, with dates.
- Pace: trades per month and in how many months, at that pace, 100 is reached. It is a pace, not a prediction.
- With fewer than 100 trades: no percentages are shown (no win rate, no gain per trade, no profit factor, no market comparison). With 100 or more: net gain per trade with plausible range, profit factor and comparison with buying and holding SPY over the same period.
- Label on every figure: "REAL (per your file)". Scope: US stocks and ETFs.
Processing plan: the file is read in the browser and is not uploaded. If for technical reasons the computation had to run on the server, the page will say so and will delete the file after 24 hours.
18. What we do not measure
- Annualized ratios (Sharpe, Sortino) at level 1: with samples of 20 to 100 trades their error is larger than the value.
- Expected future performance. Nothing in the product predicts.
- Ranking of strategies by return: it does not exist and will not exist.
- Other users' results: they are neither published nor compared.
- Futures, crypto, forex and options: outside the scope of v1.
This methodology describes how the software measures. It is not financial advice. Paper and backtest results are hypothetical and do not guarantee real results. Last revised: November 2, 2026, version 1. Future changes are noted in the changelog with a date.