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
  • Keyframes
  • Currencies & FX
  • Library
  • Strike guard
  • Variants & comparison
  • History (undo/redo)
  • Shared spaces

Analytics

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

Research

  • Research overview
  • Define
  • Composing a backtest
  • How the engine trades
  • Results & archive
  • Parameter study
  • Rewind
  • Tactics
  • Indicators

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.

Trades you can replay in Rewind

A strategy's trades can be replayed minute by minute in Rewind, and checked by the portfolio's strike guard, when its file is a trade log that keeps, for each trade, the columns Rewind needs:

Legs
Every leg as quantity month day strike P|C STO|BTO price, legs separated by | (for example 1 May 7 7355 P BTO 6.05 | 1 May 7 7325 P STO 2.05). The year comes from the open date, also across New Year.
Times
Date Opened, Time Opened and Time Closed (not needed for a trade that expired), in New York time. Date Closed, when present, must be the same day.
Result
P/L is required. No. of Contracts sets the position's size (without it, the legs' quantities do); Premium gives the position slippage; Reason For Close gives the exit. The opening and closing commissions, or without them Premium and Avg. Closing Cost, from which they're worked out, give the file's own costs.
Market
Opening Price (the SPX at entry) lets Rewind check the file's clock against its data; Opening VIX is shown at the entry.

The file is kept whole when it's imported, so this works for strategies and portfolios saved before too, with nothing to re-import. A portfolio file split into one line per strategy keeps the detail; one imported as a single aggregated line doesn't. Files read by the universal engine below keep only the date and the P/L of each trade, so their trades can't be replayed.

For now Rewind replays SPX options expiring the same day (0DTE), in US dollars. A trade with legs on different expirations (calendar, diagonal) or expiring on a later day is listed as not replayable, with the reason.

The same file can rebuild the backtest recipe behind it in Research, checked trade by trade on the engine: see Rebuilding from a trade log.

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). An Excel file is also rejected if it expands past 64 MB once opened: .xlsx is compressed, so a small file can still be huge inside.
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.