Skip to content
QuantWright

Comparing your live trades (/fills)

/fills sets the trades you actually took beside the backtest of the same strategy over the same dates, and beside a prop firm’s rules replayed on your own profit and loss.


How to use it

Press Upload trades, pick the export from your broker or platform, and send it with /fills. The comparison is against the latest run in the chat; /fills v2 uses version 2 instead. Your trades are kept in the chat with the result, so a follow-up needs no second upload, and they are deleted with the chat.

Example/fills v2 within 30m times UTC+2 firm=topstep account=50k

v2

Which version of the strategy to compare with. Without it, the latest.

within 30m

How close your entry must be to the backtest’s to count as the same trade. Without it: 1 hour on 1-hour bars (one bar, and never less than five minutes on any intraday bar size) and 1 day on daily bars. Hours (within 2h) and, for daily bars, days (within 2d) work too.

times UTC+2

The clock your file’s times are written on: UTC, UTC+2, New York, Chicago, London or a zone name such as Europe/Prague. See The clock.

firm=topstep account=50k

Checks your profit and loss against that firm’s rules at that account size. See Prop-firm simulator for the firms.

What it reads

The file is recognised from its column headers. These exports are read:

  • TradingView "List of trades" export
  • MetaTrader 5 history (Positions)
  • MetaTrader 5 history (Deals)
  • Tradovate Performance export
  • trade list with one row per round trip

The last one covers most broker exports: a symbol, a side, an entry time and an exit time on each row, with entry and exit prices and a quantity or a profit column. A file that looks like one of these but lacks a column is refused with the column named, and a trade whose direction the file does not state is refused too, never guessed from its prices.

Each closed trade is kept as its symbol (if the file has one), side, entry and exit time, its return from your own entry and exit prices before fees, and its profit or loss in your account’s currency, taken from the file or worked out from your prices and quantity. Your fill prices are read and not kept: the comparison does not need them, so it cannot show you the entry price of one of your own trades afterwards. Dates written 03/04/2026 are read month first when nothing else in the file settles it, and the result says so; a file that writes some dates each way is refused.

The clock

A time with no offset of its own is read on a clock the result names. When you have not said which, it is the exchange’s clock (New York for stocks and currency pairs, Chicago for futures, UTC for crypto) and UTC for a MetaTrader file, and the result marks it “assumed”. MetaTrader writes times on the broker’s server clock, often UTC+2 or UTC+3, so send /fills times UTC+2 if that is yours. If a different clock would match clearly more of your trades, the result says which and changes nothing.

The entry times in the result’s tables are written on the same clock your file was read on, so they can be set beside your file line by line. Trading days (for the period and for a firm’s daily limit) are cut where the exchange, or the firm, cuts them.

What it compares

With the backtest. The version’s code is run again on the bars for your dates: the run’s own window, widened where your trades fall outside it, with that run’s costs, leverage and starting account. Trades are paired by entry time, within the tolerance, on the same side, one backtest trade to one of yours, closest first. The result lists the pairs, the backtest trades you did not take and the trades you took that the backtest did not, with how late your entries were, whether the outcome agreed, and the gap between your return and the backtest’s (both before costs, or yours before fees and the backtest’s after the costs it models; it says which). Each list shows its first 200 rows; the counts and averages cover all of them.

If the re-run did not land on the same bars as the run it describes, the result says so and names the difference rather than presenting it as that run’s result.

With a firm’s rules. Your profit and loss is replayed trade by trade in the order the trades closed, with each day cut on the firm’s own clock, against the profit target, the daily loss limit, the maximum loss, any consistency rule and the minimum trading days. A multi-phase evaluation is checked against its first phase. The result says whether a rule was broken and on which day, and which rules were kept.

On runs whose market data is licensed for results only, no backtest price is ever shown, and each backtest trade’s own return, and your gap to it, is withheld; averages appear once at least 3 trades are matched.

What it cannot see

  • Open positions. A firm counts an open trade’s loss while it swings. A file of closed trades holds only what each trade ended at, so a breach on a dip that recovered before the close is invisible here.
  • Rules it does not check: news restrictions, position-size limits, scaling plans and payout conditions.
  • Your prices. They are not kept (above), and the backtest’s are never shown, so no price of yours is set beside a backtest price.
  • Trades it cannot place in time. A trade with a date and no time of day cannot be paired with an intraday backtest trade; the result counts these.
  • Other symbols. One comparison covers the symbol the run trades. Your trades on other symbols are counted and left out.
  • Runs it cannot repeat. A run that reads a second feed, or more than one bar size, or that has no Python code behind it, is not re-run, and the result says it compared nothing with it. Your firm check still works.

A model of the firm’s published rules, not a prediction or a guarantee. QuantWright is not affiliated with any firm; check its current rules before you buy an evaluation. Your own trades are compared as recorded; this is not investment advice.

Not answered here? Write to us through the Support page.

Comparing your live trades (/fills) — QuantWright Help