Start free — 14 days of Pro includedNo card needed; until you subscribe, Trader's AI budget and charts for NQ, ES, GC and their micros. Afterwards you keep a free plan with one synced account.Start free →
Docs Importing trades

CSV and Excel imports

Uploading a Tradovate or TopstepX export, or the generic CSV format, into Tradelyst.

CSV / Excel is the fastest path to backfill history. The importer recognises Tradovate and TopstepX (ProjectX) exports, plus one generic Tradelyst format for trades from anywhere else — you bring them into that format's columns. Files in any other layout aren't recognised; convert them to the generic format first.

What to upload

  • ▸Tradovate — the Orders, Fills or Performance export. Each becomes one trade per position: from flat to flat, with scale-ins and scale-outs merged into one trade at the average entry and exit. The Fills export carries Tradovate's commission (net P&L = gross − fees); the Orders export carries your stop orders, so the trade gets its R. Upload both — in any order — and the same trades are completed rather than duplicated. Positions still open are skipped until they close.
  • ▸TopstepX (ProjectX) — the trades export; one row per closed trade.
  • ▸NinjaTrader — prop accounts on the Tradovate API (Apex, MyFundedFutures, FundedNext, …) sync live through the Tradovate connection, no export needed. For NinjaTrader Brokerage direct accounts, bring the trades into the generic format below.
  • ▸Generic CSV — one row per closed trade with exactly these headers (case-insensitive): symbol, side, qty, entry_at, entry_price, exit_at, exit_price; optional stop_price, setup, tags, thesis, reflection, mood, energy. side is LONG or SHORT.
  • ▸Excel (.xlsx) — the same formats as CSV; SheetJS parses the workbook.

Dedup

Every imported trade gets a fingerprint, unique per trading account. Re-uploading the same file is safe — only new trades land — and for Tradovate the fingerprint is the same whichever export (or the live sync) a trade came from. This is also what makes weekly "drop the latest export" workflows reliable. A trade you delete stays deleted: re-uploads and the sync skip it.

What happens after upload

  • ▸The file uploads to /import. Validation runs first; bad rows surface inline with line numbers.
  • ▸The importer runs in the same request — small files (≲1k trades) typically finish in well under a second.
  • ▸The result shows how many trades were added, skipped as existing or deleted earlier, and updated with a missing stop or fee.
If your broker's export doesn't match any preset, share a sample CSV (any 5 rows suffice) — adding a new parser is a one-hour build once we have real fixtures.