$274,406. That's the gross profit in the Rentabilio backtest, and on its own it means nothing. A number like that is worth exactly as much as the method behind it. That is why the useful skill isn't reading a backtest, it's interrogating one.
The good news: it takes an afternoon to learn, and it works on anybody's numbers, ours included.
What a backtest actually is
A backtest is a simulation. You take a set of rules, run them over historical price data as if they had been live, and record what would have happened. Nothing was bought or sold, no money was at risk. It is the standard way to test whether a trading bot's rules had an edge.
That's its strength and its weakness at once. The strength: thousands of trades across conditions nobody could live through in a reasonable time. The weakness: every input is controlled by whoever ran it, and the temptation to keep adjusting until the curve looks beautiful is enormous.
A backtest is a hypothesis, not a track record. It is evidence that a set of rules had an edge in a defined period under defined assumptions. Check the assumptions, or the number is decoration.
Look-ahead bias: the lie that's hardest to see
Look-ahead bias means the simulation used information that wasn't available at the moment of the trade. It is the most common way a backtest turns beautiful, and it rarely happens on purpose.
- Deciding on a bar you haven't finished. "Buy when the 5-minute candle closes above the open" is fine, as long as the entry is at the next bar, not inside the one used to make the decision.
- Revised data. Economic figures get restated months later. A system reacting to a number must react to the number as first published.
- Knowing the roll in advance. Futures contracts expire, and stitching a continuous price series with hindsight about where volume moved is not what you knew that morning.
- Filters chosen after the fact. "The system skips Fridays" is legitimate if it was decided before the test, and curve fitting in disguise if it appeared after someone noticed Fridays were bad.
Look-ahead is why a strategy looks flawless in testing and falls apart in its first live week. Nothing broke. The simulation was playing with cards it wouldn't have held.
Tick data versus minute data
This decides whether the numbers are honest for any system that places a stop and a target at once, which is what Rentabilio does, with its target set at 2× the risk.
Picture a one-minute bar whose range covers both your stop and your target. Which was hit first? Minute data cannot tell you. The software has to assume, and every assumption is a policy: optimistic ones credit the target, conservative ones charge the stop. That single assumption can swing the result by a wide margin.
Tick data doesn't assume. It has every trade in sequence, so the simulation knows which price came first. It is heavier, slower and often costs money. It is also the only way a stop-and-target backtest means anything.
If a seller can't tell you what data resolution their backtest ran at, you've learned everything you needed to know.
Commissions, slippage and the zero-cost fantasy
Set commissions to zero and any marginal system becomes profitable. It is the cheapest trick in the industry because it requires no dishonesty: just leaving a field at its default.
Micro futures commissions are small but not zero: roughly $1 per micro contract round turn, all-in. Across 4,557 trades that's real money: about 5% of gross, which is how $274,406 becomes approximately $260,700 net, an average near $35,500 a year or $2,900 a month over more than seven years.
Slippage is the other half. Market orders don't always fill at the price on your screen, and stops fill worse in fast conditions. A backtest with perfect fills describes a market that does not exist.
Cherry-picked periods, survivorship and sample size
Three ways of showing a flattering slice of reality.
Cherry-picked periods. Almost any long strategy looks superb from 2020 to 2021. The question is never "how good is it" but "what period, and why that one." A test should cover several regimes (trending, choppy, volatile, boring) because you will trade in all of them. The Rentabilio backtest runs 88 months, day by day, long enough to include stretches it handled badly.
Survivorship bias. Mostly a stock problem: test on today's index members and you've excluded everything that went bankrupt or got delisted. Index futures dodge it, since the contract is the contract. A related version still applies to systems: you are shown the strategy that survived the developer's own selection. The twelve that failed aren't on the page.
Sample size. Two hundred trades is a story. A few thousand is a statistic. At a 46.2% win rate (this system loses more often than it wins), the gap between a real edge and luck only becomes visible over many trades.
Curve fitting, the sophisticated version
Curve fitting is tuning parameters until the system fits history so tightly it has memorized it rather than learned anything. The telltales: many parameters, oddly specific values, filters that exclude particular dates, and results that collapse when you nudge an input by 10%.
The defense is a stability test: change a parameter slightly and watch whether performance degrades gently or falls off a cliff. A genuine edge is a plateau; a fitted one is a needle.
How to read the Rentabilio report
Read the numbers in this order. Profit comes last, not first.
| Figure | Value | What it tells you |
|---|---|---|
| Max drawdown | $4,379 | Worst peak-to-trough stretch. Start here: it's what you'd have had to sit through. |
| Total trades | 4,557 | Whether the sample is big enough to mean anything. |
| Period | 88 months | Whether more than one kind of market is represented. |
| Win rate | 46.2% | How often it is wrong. Below 50% is normal at 2-to-1. |
| Average winner / loser | $354 / $193 | Ratio 1.84: the asymmetry that makes a losing majority pay. |
| Profit factor | 1.58 | Gross profit over gross loss. Much above 2 on intraday futures deserves suspicion. |
| Net after commissions | ≈ $260,700 | The only profit figure that matters, from $274,406 gross. |
Then do the thing almost nobody does: check the numbers against each other. 46.2% of 4,557 trades is about 2,105 winners and 2,452 losers. Winners: 2,105 × $354 ≈ $745,000. Losers: 2,452 × $193 ≈ $473,000. The difference is roughly $272,000, within rounding of the reported gross, and $745,000 ÷ $473,000 ≈ 1.58, the stated profit factor. The report is internally consistent. If it weren't, that would tell you more than any equity curve.
The full report is published with the drawdown, the losing stretches and the settings needed to run it yourself. If your figures don't match ours, open a ticket and we'll work out why.
How to reproduce it in NinjaTrader 8
The Strategy Analyzer is a standard tool inside NinjaTrader 8. Anyone with the strategy installed can run it.
- Install the strategy and confirm it compiles without errors.
- Get the data. Download historical data for the instrument over the full period. An honest result needs tick data, and tick data is large: budget disk space and download time.
- Open New > Strategy Analyzer and select the strategy from the list.
- Set the instrument and date range to match the published report exactly. A different range is a different test.
- Set the account size to $50,000 at one contract, which is what the published backtest used.
- Set order fill resolution to High, 1 tick. The setting from the tick-data section above, and the one people skip.
- Set commissions and slippage. Roughly $1 per micro contract round turn, plus a realistic slippage figure. Zero gives you a prettier number and a useless one.
- Run it, then compare the summary and the trade list against the published report.
Two runs rarely match to the dollar, because data feeds differ slightly in their tick history. The shape has to match: trade count within a small margin, same win rate, same drawdown neighborhood. Finding out why it doesn't is the whole exercise. Live behavior is described on how it works.
Hypothetical performance. Every figure here comes from a simulation over historical data, not a live account. Simulated results are prepared with hindsight, carry no financial risk, and cannot fully reflect real execution, slippage or liquidity. Past performance, real or simulated, does not guarantee future results.
What a backtest still can't tell you
Even a clean one has hard limits, and the honest thing is to name them.
- It can't know the future. It describes a period that already happened, and if market structure changes the rules keep applying regardless. That is why judging when a system is broken stays a human job, as covered in automated vs manual trading.
- It can't simulate you. The backtest never switched itself off after four red days. You might.
- It can't model account rules. A funded account has a floor that closes it regardless of what the equity curve does afterward: a separate calculation, laid out in how funded accounts work.
Frequently asked questions
Is a backtest the same as a track record?
No, and treating them as equivalent is the most expensive mistake in this field. A track record is money that moved in a real account, with real fills and real slippage. A backtest simulates what the rules would have done, prepared with hindsight. Good evidence; not proof of anything that happened.
How long should a backtest be?
Long enough to include several distinct market environments, which for an intraday futures system means years, not months. Trade count matters more than calendar time: a few thousand trades across varied conditions tells you more than two calm years. Under a few hundred trades is an anecdote.
What profit factor should I look for?
On an intraday futures system, roughly 1.3 to 1.8 is plausible and defensible. Much above 2 over a long period on a liquid instrument warrants hard questions about data resolution, commissions and parameter count. A high profit factor is not automatically good news; it is a reason to look closer.
Can I run the backtest myself before I buy?
Reproducing it needs the strategy installed, which is why we publish the settings rather than a summary. Before buying, check that the report is internally consistent and that drawdown, win rate and trade count are disclosed. A vendor who publishes profit but not drawdown has told you something important.
Why does my result differ from the published one?
Usually one of four things: a different date range, a different fill resolution, commissions left at zero, or a different data feed. Work through them in that order and the gap almost always closes. If it doesn't, open a ticket through the contact form with your settings.