VEEMANDocs
DocumentationSupportOpen Dashboard

Getting started

  • Introduction
  • Quick start
  • Core concepts

Importing data

  • Supported formats
  • How import works
  • Splitting a file
  • Troubleshooting

Building your portfolio

  • Workspace & equity
  • Weights & capital
  • Weekday filter
  • Library
  • Variants & comparison
  • History (undo/redo)
  • Shared spaces

Analytics

  • Metrics reference
  • Charts (deep-dive)
  • Monthly P&L
  • Correlations
  • Strategy comparison
  • Monte Carlo
  • Equity Control
  • Optimization
  • Veeman AI

Reference

  • Keyboard & command palette
  • Exporting data
  • Settings

Technical

  • Architecture
  • API reference
  • Security
  • Your data & privacy
  • Risk disclosure
← PreviousCore conceptsNext →How import works

Supported formats

VEEMAN reads the trade exports your broker or backtester already produces. Several formats are recognised automatically; everything else goes through a universal mapping engine.

Recognised automatically

Drop one of these and it imports with no configuration:

SourceNotes
Option OmegaPortfolio or single-strategy exports. Trade-level detail is retained for per-strategy sizing.
TradeStationExport the full Trades List report.
TradingViewStrategy-tester "List of trades" export.
Interactive BrokersActivity Statement export. Reads the executed-trades section (Dettaglio eseguiti / Trades) and sums the realized P/L of each fill on its close date.
Portfolio BuilderNative export.
Invest StudioA daily equity export (not per-trade — so it has no trade count). It marks equity on every calendar day; VEEMAN derives P/L on weekdays only, folding any weekend drift into the following Monday so no phantom Saturday/Sunday rows leak into the day-of-week stats. The total P/L is unchanged.

Interactive Brokers specifics

An IBKR Activity Statement bundles every asset class and several non-trade items. VEEMAN reads it deliberately:

  • Split by asset category. If the executed-trades section spans more than one asset category (options, stocks, futures…), the review step asks whether to load it as one aggregated line or to split into a line per category — the same choice offered for Option Omega portfolios. With a single category it imports straight to one line.
  • Currency conversion is optional and separate. When the account base currency differs from the traded currency (e.g. a EUR account trading USD options), the statement books a cash FX conversion P/L on the idle cash. That isn't a trade — it has no per-day detail and lives in the Cash Report, not the executions. It's excluded by default; you can opt in from the review step to add it as a separate Forex (cash conversion) line: a single point dated on the last trade day in the imported series. It stays a distinct line — never merged into the trade curve — because it's in the base currency while the trades may be in another.
  • Lot detail is not double-counted. With lot detail enabled, IBKR repeats the same realised P/L on several rows: one for the execution and one ClosedLot per lot closed. VEEMAN keeps only the execution rows (reading the DataDiscriminator column), so a $300 result stays $300 instead of becoming $600. If a statement carries both order-level and execution-level rows, the order rows win — an order is the sum of its executions.

The universal engine — for everything else

If a file isn't one of the above, VEEMAN's mapping engine locates the date and the profit/loss automatically. It comfortably handles tastytrade (via its cash ledger), NinjaTrader, MetaTrader, Sierra Chart and, in general, any CSV that contains a date and a P/L (or something P/L can be derived from). How it decides is covered in How import works.

File types & limits

File types
.csv, .txt, .xlsx, .xls. (Excel needs the openpyxl package on the server — if it's missing, export to CSV.)
Size
Up to 10 MB per file, and up to 200,000 rows × 64 columns per table (larger files are rejected — export a shorter period or split the file).
Batch
Up to 20 files per upload — each becomes a strategy. A session holds up to 50 strategies.
Encoding & delimiter
UTF-8 / Windows-1252 / Latin-1 and comma or semicolon delimiters are detected automatically.
Numbers
Money like $1,234.56, parenthesised negatives (123.45), and EU/US decimal styles are parsed.

Decimal comma or thousands separator? Decided once per column

12,345 is 12345 in US convention and 12.345 in European convention, and nothing inside that one cell says which. So the decision is taken once for the whole column, by looking at all of its values together — a single 1,5 or 0,375 anywhere in the column proves the comma is decimal, because neither is a valid thousands grouping. Cells that would be ambiguous on their own are resolved by their neighbours.

If a column offers no decisive evidence — every value looks like 12,345 — VEEMAN picks the US convention (the more common in exports) and opens the review step, because at that point it is a convention, not a reading.

Amounts that cannot be read at all are excluded and counted, never turned into 0. A fabricated zero is indistinguishable from a genuine break-even day and would enter win rate, profit factor and the VaR tail as if it were real.

The canonical shape

Whatever the input, VEEMAN reduces each strategy to a single series: one profit/loss value per day (multiple trades on the same day are summed). That uniform shape is what makes strategies from different platforms directly comparable.

Alongside the P/L, VEEMAN also captures — where the file exposes it — the contracts and number of trades closed each day. These feed the per-strategy manual costs control: TradingView, TradeStation, IBKR and Option Omega carry a quantity column, so they unlock the accurate per-contract basis; any per-trade export unlocks per-trade; pure equity-curve exports (no trade rows) fall back to a flat per-day cost.

Minimum requirement

A file is ingestible if VEEMAN can find a date and a P/L — either directly, from a cash-flow ledger (value minus commissions and fees), or from a running equity/balance column it can difference day to day. Files with none of these (e.g. position snapshots or holdings reports) can't be turned into a P/L series.

Next: How import works — the mapping engine and the review step.