Docs Importing trades

CSV and Excel imports

Dropping a Tradovate, NinjaTrader, or generic broker export into Tradelyst.

CSV / Excel is the fastest path to backfill history. The importer recognises Tradovate and NinjaTrader exports out of the box and falls back to a generic OHLC+fills schema for anything else.

What to upload

  • Tradovate — Order history export. The importer maps fills to trades and pairs entries with exits.
  • NinjaTrader — Trade Performance → Trades grid → "Save grid as". Maps directly.
  • Generic CSV — any spreadsheet with columns for symbol, side, entry price, entry time, exit price, exit time. The importer asks you to map the columns on first upload.
  • Excel (.xlsx) — same shapes as CSV; SheetJS parses the workbook.

Dedup

Every imported trade gets a (source, externalId) pair, and the import job enforces uniqueness against that. Re-uploading the same file is safe — only new trades land. This is also what makes weekly "drop the latest export" workflows reliable.

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.
  • Result page shows added / skipped (existing) / errored counts and links straight to the trades list.
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.