Portfolios
The portfolio replays several instruments as one account: one balance, one equity curve, one set of risk limits, one clock. It exists because risk is shared — a gold position and a euro position draw down the same account at the same time.
Starting a portfolio test
Open Portfolio test on the dashboard, tick up to four instruments you have imported, choose the start date and number of days, then press Start. Instruments whose profit is not in USD need conversion data on your device too: EURGBP needs GBPUSD (added automatically as a conversion-only stream), and USDJPY converts through its own price. Tests are saved as you go and can be reopened from the same page.
What is in the account
Six instruments are supported in portfolio mode, each with its own pip size, contract size and quote currency:
- EURUSD — five-digit price, USD quote, 100,000-unit contract.
- GBPUSD — five-digit price, USD quote; also the conversion rate for GBP profits.
- USDJPY — three-digit price, JPY quote, so a pip is 0.01: profit is earned in yen and valued at 1 / USDJPY.
- EURGBP — GBP quote: profit is earned in GBP and valued at the GBPUSD mid price.
- XAUUSD — gold: two-digit price, a pip of 0.1, 100-ounce contract.
- XAGUSD — silver: three-digit price, a pip of 0.01, 5,000-ounce contract.
Each of these is a separately declared, versioned specification. The metals are not derived from EURUSD by guesswork, and a provider correction to pip or contract size produces a new metadata revision rather than silently repricing the history you already tested against.
One account, one clock
The portfolio steps one event at a time across all symbols. An order you place is queued and fills at the open of the next bar of that instrument — never at a price you already saw — and no instrument ever sees a bar before it has closed, so there is no look-ahead across instruments. Inside a bar the engine walks a fixed path (open → one extreme → the other → close); that is an approximation, not the real tick order, and the results say so. Costs are charged at event boundaries, and where a cost is shared across positions it is allocated pro-rata down to the cent, with the rounding residual assigned so the sum is exactly the charge.
Account currency and conversion
The account currency is USD. Profits and margin in another quote currency are converted over predeclared FX routes using frozen mid prices; a route never spans more than two edges, and inverse edges are inverted rather than approximated.
The strict part is deliberate: if a required rate is missing, zero, non-finite or expired, valuation is rejected rather than silently treating the currency as 1:1. A missing rate is a bug in the data, not a reason to invent a number.
Exposure, checked rather than assumed
Account exposure is the sum of absolute USD notional across every instrument in the book. Above 100× the account balance it is flagged — the same guard the single-symbol replay engine applies — because a book that size is running on leverage the balance cannot support, and a strategy that only works there was never a strategy.
The other guard is about arithmetic rather than risk: if an FX route needed to value a position is missing, zero, non-finite or expired, the engine rejects the valuation instead of inventing a rate. A number you cannot defend does not belong in a report.
Prop-style rules are evaluated across the whole book, with the policy version recorded in the report: news relevance considers every instrument you actually hold, and the consistency ratio is computed on the portfolio as a whole — not on whichever symbol happened to behave.
Strategies in a portfolio
The portfolio engine can run a strategy under the shared account through the same scheduler, exposure checks and journal as manual orders. The portfolio page does not offer strategy binding yet — today it is for manual trading; automated strategies run on single-symbol tests from the Strategy page.
Related
- Single-symbol replay: Creating a Replay.
- Rules and sweeps: Strategies.