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
← PreviousSupported formatsNext →Splitting a file

How import works

Recognised formats import instantly. For everything else, the mapping engine inspects your columns, derives a daily P/L, and — when it isn't fully certain — asks you to confirm in a short review panel.

Three ways to find P/L

The engine tries, in order of reliability:

MethodWhat it readsTypical source
Per-tradean explicit profit/loss columnmost broker / backtester exports
Cash flowa ledger value minus commissions and feestastytrade-style statements
Equitya running balance / account-value column, differenced day to dayequity-curve exports (e.g. Invest Studio)

All three end up at the same place: a daily P/L series.

A cash ledger also contains your deposits

A statement in cash flow form lists every movement of the account, not only trades: deposits, withdrawals, transfers, dividends and interest sit in the same column as the fills. Summed blindly, a $10,000 deposit becomes an extraordinary trading day.

VEEMAN reads the row-type column (Type, Sub Type, Action, Activity…) and excludes movements of capital, plus dividends and interest — real income, but not produced by the strategy. It then always opens the review step, so the exclusion is a decision you see rather than one made for you.

If the file has no row-type column, the review step opens anyway: without it there is no way to know whether the file mixes trades and funding, and saying so is more honest than guessing.

Balance or per-trade P/L?

A running balance and a column of per-trade results look alike to a machine, and confusing them is off by orders of magnitude — summing a balance as if it were trades inflates the total by roughly the number of rows.

The engine tells them apart by shape: in a balance the levels are much larger than the steps between them, and the sign hardly ever flips. That ratio is dimensionless, so it works on a €500 account, on a $2M account and on an index-points curve alike. Column names like Cum. net profit, Equity curve or Saldo progressivo are also recognised directly — the name is the more robust signal when the curve is short or hovers around zero.

When the shape falls in between, the file goes to review with the question asked in plain terms rather than being decided silently.

Trade-level extras: size, premium, margin

A daily P/L series is all the equity curve needs, but a per-trade file often carries more — and what is dropped at import cannot be recovered later. So when the method is per-trade, the engine also keeps, whenever the file has them:

Contracts
Position size — No. of Contracts, Contracts, Quantity, Qty, Lots, Shares.
Premium
Credit or debit per contract — Premium, Credit.
Margin
Margin requirement of the position — Margin Req., Margin, Initial margin.
Time of day
A separate time column (09:35:00) is folded back into the trade's datetime. A date column that already carries its own time is left untouched.

The time of day is not cosmetic: the daily loss budget and the margin cap consume a day's trades in order of opening time, so losing it (every trade at midnight) changes which trade gets its full size and which one gets trimmed.

They follow the Option Omega convention: contracts and margin are row totals (so P/L and margin are divided by the size to get the per-contract figures the engine works in), while premium is already per contract. Keeping them is what lets a plain per-trade CSV still show the margin column in the trade log, draw the margin band under the chart, size on a margin basis, and charge costs per contract.

Each column found is listed in the review panel next to the date and P/L (Margine → «Margin Req.»). Ambiguous headers are deliberately skipped rather than guessed: a Contract column holding a symbol is rejected because it isn't numeric, and Trade Size (usually a notional) or any %/ratio column is never read as a size or a margin.

Confidence & the review step

The engine scores how confident it is about the date column, the P/L column and the date format.

  • High confidence and unambiguous → the file is imported automatically.
  • A review panel opens when VEEMAN can't be sure: always for an ambiguous date order (a date like 01/02/2024) or when it had to guess an equity column, and otherwise when smaller uncertainties — a date column inferred from content, several date-like columns, or a P/L derived from cash flow — stack up enough to drop the confidence below its threshold. A single mild uncertainty still imports automatically, carrying a warning to check.
  • Review is also forced when the file needs a judgement call the data cannot settle: a cash ledger (see above), a column where the comma is ambiguous (12,345 with nothing else to disambiguate it), or more than ~1% of rows with an unreadable amount or date.

The review panel

When review is requested, you can set:

Date column
Which column holds the (close) date.
Value column
Which column holds the P/L, cash flow or equity.
Method
Per-trade, cash flow or equity (see above).
Date order
Day/month vs. month/day — resolves dates like 01/02/2024.
Split
Break the file into several strategies — see Splitting a file.
Name
The strategy name (defaults to the file name).

Each pending file shows a confidence badge — auto (ready to import) or needs review — and any warnings explaining what to check. Rows whose amount or date cannot be read are left out and counted, never silently turned into a $0 day: an invented flat day is indistinguishable from a real break-even one and would quietly enter win rate, profit factor and the VaR tail. Uploading several files at once collects all the pending ones into a single panel you can confirm or discard individually.

Ambiguous dates

01/02/2024 could be 1 February or 2 January. If VEEMAN can't tell from the data, it flags the file and asks you to pick the day/month order — getting this wrong shifts every trade to the wrong date.

If something looks off after import, see Troubleshooting, which lists every warning and error with a fix.