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
← PreviousCorrelationsNext →Monte Carlo

Comparison

The comparison section (Analysis → Comparison, right after the per-strategy breakdown) puts 2–6 items side by side so you can judge how they differ — and how they compensate each other. An item can be:

  • Current: the portfolio as it stands in the workspace, all its visible strategies together;
  • a saved variant: a frozen configuration, including variants made from a CSV or from another portfolio in the library;
  • a single strategy of the session.

Items mix freely: Current against two variants, a variant against the strategy you are thinking of dropping, three strategies among themselves.

The section never computes a metric of its own. Every number is the same number shown elsewhere: a strategy's figures come from the per-strategy breakdown (its real behaviour inside the portfolio, with weight, dynamic sizing and compounding active), Current's from the Metrics ledger, a variant's from the figures frozen with it — or, on a framed period, recomputed by the same engine as the live session.

Choosing what to compare

The chips at the top come in two rows. Portfolio lists Current and every saved variant, pinned or not; Strategies lists the strategies of the session. Click a chip to add it, click it again to remove it. Up to 6 items can be compared at once; the counter on the right shows how many are selected.

Each item keeps the look it has on the Workspace chart, so you recognise it at a glance:

ItemColourLine
Currentthe accent coloursolid, slightly thicker
Variantits slot in the variant palette (by position in the registry)dashed
Strategyits own colour, the same as its individual linesolid

Hovering a selected chip highlights that item in the radar and the equity chart. The selection is remembered per session while the browser tab lives. On first opening, the section compares Current against the most recent variant when you have saved variants, otherwise the first two visible strategies.

Two marks can appear on a chip:

  • an eye-slash on a strategy excluded from the portfolio: it is still selectable, with metrics computed single-leg (with its own sizing) exactly as in the per-strategy breakdown, but it has no equity curve;
  • on a variant, the same warnings as in the variants tray: a clock when it was frozen with an earlier engine version (its stored figures are not literally comparable with today's), or a currency code when the exchange rate was unavailable and its figures stayed in the currency it was frozen in.

Mixing a portfolio with its strategies

A strategy's figures measure its contribution: its P/L as it runs inside the portfolio, on the portfolio's whole initial capital. Its growth, drawdown % and risk-adjusted ratios are therefore all measured on that capital — and since Sharpe and Sortino subtract the risk-free rate from a small return, a single leg can read negative there while adding money to the portfolio. Comparing Current with one of its strategies answers "how much of the portfolio is this leg?", not "which one is better". Profit factor, win rate and correlations don't depend on the capital base and compare directly.

The radar and its scale

The radar draws one polygon per selected item over six axes:

AxisMetricDirection
CAGRannualized growth ratehigher is better
SharpeSharpe ratiohigher is better
CalmarCAGR ÷ max drawdownhigher is better
Profit factorgross profits ÷ gross losseshigher is better
Max DDmaximum drawdown, % (a value ≤ 0)closer to zero is better
CVaR 95expected shortfall of the worst 5% of trading dayslower is better

Raw metrics live on incompatible scales (a Sharpe near 1.5, a CAGR near 20%, a drawdown near −30%), so the radar plots a normalized score, computed like this:

  • for each axis, the reference frame is the roster of what you are comparing:

    • only strategies selected → every strategy of the session;
    • only Current and variants selected → Current and every saved variant;
    • both kinds selected → all of them together.

    The best value in the roster maps to the outer edge, the worst to the inner end of the scale: score = (value − worst) / (best − worst);

  • the two risk axes are oriented so that further out always means better: Max DD is a negative percentage (closer to zero plots further out), CVaR is a positive magnitude (smaller plots further out);

  • the drawn scale has a small visual floor (15 on a 0–100 radius): the worst item of the roster keeps a visible polygon instead of collapsing into the centre. The semantics are unchanged — the innermost vertex still reads "worst of the roster";

  • if every item in the roster has the same value on an axis, all polygons sit at mid-scale on that axis; an item missing a metric sits at the floor and shows "—" in the tooltip.

Because the scale is anchored to the roster rather than to the current selection, adding or removing an item of a kind already on the radar never reshapes the others. Adding the other kind does: the roster grows, and so does the reference frame. Strategies are compared with strategies and portfolios with portfolios, because a portfolio usually beats any single leg on growth and trails it on drawdown — measured on one scale, the strategies' differences would shrink to nothing.

Variant polygons are drawn with a dashed outline, like their curves.

The radar is a reading aid, not a measurement

The polygon's shape and area are relative to the roster: they change when strategies enter or leave the session or variants are saved or deleted (the reference min–max moves), and a "full" polygon only means "best of this roster", not "objectively good". Read magnitudes from the tooltip and the table — they always show the raw values.

Metrics face to face

The table lists the institutional metric set in the same groups as the per-strategy breakdown (performance, risk-adjusted ratios, drawdown and risk, daily distribution), one column per selected item, plus two context rows:

  • Period: the dates the item covers. For Current, the span of the portfolio's equity; for a variant, the span it was frozen over; for a strategy, its own first and last day.
  • Days/trades: the sample size. For a strategy, its trade count (or rows, for files without single trades). For Current and for a variant, the sum over their visible strategies, counted with the same rule — so Current's column adds up with the columns of its strategies.

The best value of each row is underlined in the winning item's colour. For risk metrics "best" means least severe: the Max DD closest to zero, the lowest volatility, VaR, CVaR and drawdown duration. Ties are all marked. The two context rows are not marked.

Rebased equity and pairwise correlation

The equity chart overlays the selected items' curves, rebased to cumulative return in % of each curve's own starting value:

  • Current is the portfolio's aggregated equity — the very curve of the Workspace chart;
  • a strategy is its individual line from the Workspace chart, weekday filters included;
  • a variant is the equity frozen with it.

Rebasing puts items with different capital footprints on one honest scale, and makes the timing of gains and drawdowns comparable: complementary items visibly zig when the others zag. The date axis is the union of the items' dates — a variant built from another portfolio can cover a different stretch, and its line simply starts and ends where its data does.

Below the chart, one row per selected pair lists the Pearson correlation of daily P/L, computed by the same engine as the correlation matrix: pairwise-complete (only the days both sides actually traded) and only when they share at least 10 such days. Each item contributes one daily P/L series:

  • a strategy, the same series the matrix uses (its own P/L with the session's weekday filter applied) — so for two visible strategies the ρ is exactly the matrix cell. Strategies excluded from the portfolio get a ρ too, which is the question to ask before switching one back on;
  • Current, the portfolio's real daily P/L, with weights, group sizes, dynamic sizing, compounding and weekday filters already inside;
  • a variant, the same series rebuilt from its recipe, as if it were the live session.

A strategy against a portfolio that contains it is correlated by construction: the number says how much of the portfolio's day-to-day movement follows that leg. Between Current and one of its variants a ρ close to 1 means the change barely moved the daily results; a lower one means it changed when the portfolio makes and loses money, not just how much.

The ρ value is coloured on the same scale as the matrix — red for positive correlation (concentration risk), blue for negative (hedge/diversification), neutral near zero. As a rough guide — the same one the matrix documentation uses — pairs below ≈ 0.2 compensate well, pairs above ≈ 0.6 tend to move together. A pair reads "n/a" when the two sides have fewer than 10 trading days in common.

Framed period

This module follows the workspace's reading calendar, like the Metrics ledger and the Monthly P&L grid. Turn on align starting capital in the workspace and pick a range: radar, table, curves and ρ all move to the framed window together, with a band above them naming the active period. A comparison whose panels covered different stretches would not be a comparison at all — that is why they move as one and never separately.

Inside a window:

  • each strategy's equity is rebased to the initial capital on the window's first day, with that leg's own factor — the very same curve the workspace draws for it — and Current is recomposed from its legs the same way, so the lines restart from 0% and the table underneath reports the same numbers;
  • variants are recomputed on the window by the server, with the same per-leg recomposition as the live session — never their frozen full-history figures, which would put two calendars in one table. While that runs their cells show "…" (and the radar waits for every variant of its roster), rather than a number from another period;
  • the metrics, the covered period and the sample size describe the framed stretch only, so an item that traded little in that period honestly shows a small sample;
  • the pairwise ρ is computed on the framed days alone (the tooltip says so), on the P/L actually realized on those days — like the matrix, it is clipped, not re-anchored: a correlation measures co-movement, not returns. That is what makes it answer "were they correlated then?" instead of "on average, ever".

Without that checkbox the range selector is a pure zoom and this module stays on the full history.

Next: freeze configurations and overlay them on the Workspace charts with Variants & comparison.