Free tool · runs in your browser
Is your edge real,
or luck?
Drop in your trade history. Edge Check tests whether your results stand out from luck after costs, checks whether they hold up across time, and simulates how many trades you would need before they mean something.
A statistics tool, not financial advice · past results do not guarantee future results
1. Load your trades
Or paste rows
Header row with at least a result column, for example date,symbol,result,cost. One trade per line.
Or try an example:
Settings
A significant result can still come from data-mining if you tried many strategies (set N tried). Testing 20 variants and keeping the best is like buying 20 lottery tickets: one will often look good by luck.
2. The result
Checks
Luck band: your trades vs the same trades with no skill, costs paid
3. What it would take
How many trades you need
Edge or no edge, don't get blown up
Manage your risk based on real structure: the same simulated futures, now as an account balance.
How to read this
- The question it answers: "Could results like mine come from a strategy with no edge, just luck?" It looks at your average result per trade after costs, how much the results vary, and how many trades there are.
- The verdict is the weakest reading that applies, checked in this order: average zero or negative → NO EVIDENCE; fewer than 30 trades → WEAK; p of 0.25 or more → NO EVIDENCE; not significant after the correction for strategies tried → WEAK; any failed check → LOOKS SIGNIFICANT - CHECK STABILITY & COSTS; otherwise SIGNIFICANT AND STABLE.
- p is the chance of a net average (after costs) at least this good if the true net average were zero. Small p means "unusual for luck", not "proven". The random-sign check tests the same question a second way: it flips the sign of each net result at random.
- Strategies tried (N): if you tested many systems, settings or pairs and kept the best, the best one looks good by chance. The tool multiplies p by N (Bonferroni). Be honest with N; it is the setting that changes the verdict most often.
- The checks ask whether the result depends on one half of the record, one year, five trades, low costs, or the period you designed it on. "n/a" means there is not enough data for that check; it does not count as a pass for your confidence, only for the verdict rule.
- The luck band: random direction, real costs. A trader with no skill still pays the spread, commission and swap, so having no edge is not breakeven: it loses about your average cost on every trade. The band keeps your exact trade sizes before costs, picks each trade's direction at random, and still takes your costs off, so it drifts down by your costs. If your real curve stays inside the grey band, a trader with no skill paying your costs could have done the same. The line under the statistics gives that trader's average and how often one reached your net average. If no costs are known, this no-skill world breaks even, which is optimistic, and the page says so.
- Trade-to-trade dependence (an information line in the checks; it never changes the verdict). The t-test, the random-sign test, the bootstrap and the default simulations all treat your trades as independent: one trade's result says nothing about the next. Real trading can break that, for example a market regime that lasts for weeks, or tilt after a big loss or overconfidence after a big win. The line tests your results in trade order two ways: the lag-1 autocorrelation (does a good trade tend to follow a good trade) and a runs test (are there fewer, longer streaks of wins and losses than chance gives). If either test has p below 0.025, the line says wins and losses cluster. Clustered results also make the t-test's p too optimistic, because streaky trades carry less independent information than their count suggests.
- Block resample (keeps streaks), a simulation model under Settings. Resampling single trades shuffles them, so a run of five losses in your record is broken up and spread out. A drawdown is a run of losses before the next high: when losses come in streaks, they pile up instead of being interrupted by wins, so the fall is deeper than shuffled trades suggest. The block model copies runs of consecutive trades from your own record (block length = the cube root of your trade count, rounded, at least 2: 7 for 350 trades, 8 for 520; the record wraps around at the end), so streaks up to that length survive into the simulated futures and their drawdowns. With independent trades it gives about the same answer as resampling; with streaky trades it gives a lower safe risk per trade and needs more trades to show the edge. "No edge" uses the same blocks shifted to zero edge before costs. Streaks longer than a block are still cut, so treat it as a lower bound on the effect.
- The bootstrap range resamples your own trades: it shows how much the average itself could move with a different draw of the same kind of trades.
- How many trades you need assumes your measured average is the true edge and simulates many futures. Measured edges are usually too high (the best-looking strategy is the one you keep), so treat the number as a minimum.
- Drawdown and risk per trade use the same simulated futures with fixed-fractional sizing. "No edge" there also means random direction, real costs: zero edge before costs, your average cost still paid, so the account drifts down. That line matters even with a real edge: it is what sizing and costs alone do to an account.
What this tool does not check
- Whether your backtest used future data (lookahead, repainting indicators, unfinished higher-timeframe bars).
- Whether trades overlap or several pairs trade the same move; that makes results look more certain than they are.
- Whether your live trading matches your backtest, or whether your journal left out trades.
- Whether the broker's prices and costs in the file are the ones you will get.
A statistics tool, not financial advice. Past results do not guarantee future results. A significant result can still come from data-mining if you tried many strategies (set N tried). Nothing here says anything about your future profits. The no-skill world assumes random direction with your real costs: the costs in your file (a cost entered as a credit, such as positive swap, is counted as zero there), or the cost per trade you set.
File formats
- CSV (comma, semicolon or tab): a header row with
result(or R, profit, pnl, pips), and ideallydate,symbolandcost(cost per trade as a positive number). Dates like 2025-03-04 14:30 or 2025.03.04 work best. - APXTT journal (Premium .xlsm, Premium Demo .xlsm or Basic .xlsx): drop the journal file itself. Only closed trades are read (Check = OK); empty rows, open trades and rows the journal flags as incomplete are skipped. Premium and Demo: result = the R multiple, cost = the commission in R (the journal's R is before commission). Basic: result = Net P/L in your account currency, already after commission. Swap is not in the journal. The file must have been saved in Excel after the last change, so the results are calculated.
- APXTT MT5 export script: a free MetaTrader 5 script that writes your closed trades, with commission, swap and fees, to a CSV this page reads. It does not trade and does not connect to the internet. (Download link coming.)
- MT5 history report: in MetaTrader 5, History tab → right-click → Report → Open XML (.xlsx) or HTML. The Positions table is used; result = profit, cost = commission + swap. The .xlsx version was tested on a real report; the HTML version is read the same way but was not tested on a real HTML export.
- MT5 Strategy Tester report (HTML): the Deals table is used, one trade per closing deal.
- MT4 Detailed Statement (HTML): beta, not yet tested on a real statement. Always compare the trade count and total with your statement.
Reports in languages other than English are not recognised yet; use the export script or a CSV.