Backtest methodology
How I backtest Meanward Revert Strategy across a watchlist. Data, window, fees, leverage, how drawdown is measured, and what a TradingView backtest can't tell you.
Rule one: when I publish a backtest number, it comes with this method and with the maximum drawdown. A number without those two isn't something I said.
Rule two: a backtest is a simulation on past data with the assumptions of the TradingView strategy tester. It isn't a record of real trades and it doesn't predict the next year.
What a run is
One run = one settings variant × one watchlist × one timeframe.
- Variant: a named set of strategy settings, saved as a template in TradingView, with a one-line description of how it differs from the others. Every report starts with the full settings table, so two runs can be compared without guessing what changed.
- Watchlist: my working list is 78 Binance USDT-M perpetuals (as of September 2026). The symbols are TradingView's
BINANCE:…USDT.Ptickers. - Timeframe: one per run; mostly 3m and 5m, the timeframes I trade.
For each symbol the same layout and settings are loaded, and the strategy runs in the TradingView tester with Deep Backtesting over the whole window.
Window
From the strategy's Start time to the day of the run, usually about a year. The start date is passed to Deep Backtesting explicitly, so the tester covers exactly the period the strategy was allowed to trade.
A symbol listed later than the start has a shorter history. The report flags it (short_history) when its data starts more than 30 days after the requested start.
Costs, leverage and fills
The tester properties the script sets, unchanged in my runs unless noted:
| Property | Value |
|---|---|
| Initial capital | 10,000 USDT; 5,000 and 1,000 in the home page runs (see below) |
| Commission | 0.04% of each order: entry, every add, exit |
| Slippage | 1 tick per market fill |
| Margin | 10% for long and short, which is 10x leverage |
| Fills | the signal is decided on a bar's close; the order fills at the next bar's open |
| Positions | one entry plus up to ten adds per side |
What isn't modelled: funding payments, the exchange's order minimums and step sizes, partial fills, and any delay between the alert and the exchange.
One account, not 78
The TradingView tester runs each symbol on its own, each with its own 10,000 USDT. Adding those up would be a fantasy of 780,000 USDT of capital.
So the report treats all symbols as one 10,000 USDT account: every symbol's trades go on one timeline, and the results add up on that one capital. The net result, the drawdown and the margin in use are all measured against the same 10,000. That's harsher than any single-symbol report, and closer to what running the whole list on one account looks like.
The runs behind the backtest cards on the home page start with 5,000 USDT (Central-line exit, 5m) and 1,000 USDT (TP exit, 3m) for the whole list. The tester still gives each pair its own account with the full amount, but at the peak the margin of all open positions together took 27% and 57% of it, so those results are closer to a real account.
How drawdown is measured
The tester's list of trades gives entry and exit time, price, size and side for every tester entry. That's not enough for drawdown: an open position's loss moves every minute.
What I do:
- Download the full 1-minute history of each symbol from Binance's public data (no keys involved).
- At every minute, take the realized result of closed tester entries plus every open entry marked at that minute's close.
- Sum across all symbols. That's the equity curve of the one account.
- Maximum drawdown = the deepest fall from a previous peak, in USDT and in % of the 10,000.
The report also gives the time of the peak and the trough, how many symbols were in a position at the trough, the longest stretch under a previous peak, and the peak combined size of open positions with the margin it needed.
Cross-check. For every symbol, this minute-based drawdown is compared with the tester's own intrabar drawdown for that symbol. Across a run the median ratio is close to 1, and every symbol where mine comes out more than 5% higher is listed in the report. The two can't match exactly: the tester uses intrabar highs and lows, the minute curve uses minute closes.
What else is in a report
- Net with and without open positions. Positions still open at the end of the window are listed with their floating result. With the stop loss off, closed trades alone can look like a perfect win rate, so the net including open positions is the honest number.
- Per-symbol table: net, trades, adds, worst drawdown, worst adverse move, longest time in a trade, open at the end. The three worst values in each risk column are in bold.
- Anomalies: open positions at the end, an exhausted cascade (all adds used), stops, hedges, short history, errors.
- Arithmetic check: the report's grouping of tester entries into trades is checked against the strategy's own dashboard on every symbol. A mismatch fails the run.
What a TradingView backtest can't tell you
- Funding. Not modelled. A position held for days on a perpetual pays or receives funding several times a day.
- Real fills. The tester fills at the next bar's open plus a fixed slippage. Live orders fill at whatever the order book gives, sometimes worse, sometimes after an exchange hiccup.
- Survivorship. The watchlist is today's list. Symbols that were delisted or collapsed during the window aren't in it, which flatters the result.
- Selection. I run many variants. The one I keep is the one that looked best on this data, and part of that "best" is luck fitted to this period. Expect worse live.
- Execution limits. Exchange order minimums, the connector's plan limits and a late or expired alert all change what actually trades. See Execution statuses.
- The future. Past results, backtested or live, don't predict future results.
Rerun it yourself
Everything above is something you can repeat. Put the strategy on your own chart, set the same Start time and tester properties, and use Deep Backtesting. Your numbers on your pairs beat mine on mine, because they're the ones you'll actually trade.