Weights, sizing & capital

Each strategy in the workspace runs in one of two sizing regimes, and the portfolio has an initial capital. The regimes can be mixed freely inside the same session — strategy A on 3 fixed contracts, strategy B dynamically sized at 2% of capital.

Fixed regime: weight is a multiplier

In the default Fixed regime (× on the strategy row), the weight scales the strategy's daily P/L before everything is summed. It is not an allocation percentage and weights do not need to add up to 1.

WeightEffect on that strategy
1.0unchanged (default)
2.0doubles its P/L contribution
0.5halves it
0mutes it (kept in the session, excluded from the curve)

Because the equity curve is the cumulative sum of weighted P/L, changing one weight rescales that strategy's contribution and the whole portfolio — and every metric — updates live.

Weight vs. visibility

Setting a weight to 0 keeps the strategy listed but out of the maths. Hiding a strategy does the same visually. Both are non-destructive — the data stays in your session.

Dynamic regime: risk or margin sizing

Switching a strategy to Sizing (% on the strategy row) replaces the fixed multiplier with a per-trade contract count, computed exactly like the standalone Risk Sizing engine. For every trade, in time order within its day:

contracts = floor( capital × Cap% ÷ unit )

where unit is the per-contract denominator chosen by the basis:

  • Risk basisunit = SL $ if a fixed dollar stop is set, otherwise unit = |premium| × SL% ÷ 100 (requires per-trade data with premiums);
  • Margin basisunit = the trade's margin requirement from the CSV, or the manual per-contract margin you set.

The optional Min 1 contract floor and Max contracts cap are applied last (the max wins over the min if they conflict). The strategy's realized P/L becomes contracts × per-contract P/L, attributed to the trade's close date.

Strategies without per-trade data

Daily-only imports (no premiums) are sized as one synthetic trade per day. The premium-based SL% cannot work there — declare the per-contract risk as SL $, or use the margin basis with a manual value. The engine warns explicitly when a strategy ends up at 0 contracts.

Portfolio-level parameters

Two parameters appear in the workspace header once at least one strategy uses dynamic sizing:

  • Daily budget (max daily loss %) — a per-day risk ceiling as % of current capital. Sized trades consume it in time order; once the day's cumulated risk reaches it, later trades are scaled down (to 0 if needed). Fixed-regime legs do not consume the budget — they declare no per-contract risk. 100% is effectively no limit.
  • Compounding — when on, the capital used to size contracts follows the realized P/L of the whole portfolio (fixed legs included, counted strictly before the sizing day). When off, sizing always uses the initial capital. The equity curve itself is always the additive cumulated P/L in both cases.

How the hybrid composes

Fixed legs are aggregated exactly as before (weighted daily P/L on the master calendar). Sized legs are allocated per-trade with the rules above. The portfolio's daily P/L is the sum of both, the equity is initial_capital + cumsum, and the margin band adds the fixed legs' margin (scaled by weight) to the sized legs' allocated margin (contracts × per-contract margin).

With sizing active the charts card also exposes the Trades band (one row per sized trade: contracts, risk, running capital, P/L) and any engine warnings right under the KPI strip. The Rolling band (moving-window returns, 1w→1y) is available for every portfolio, fixed ones included.

Initial capital

The initial capital is the equity the P/L accumulates on:

equity(t) = initial_capital + cumulative_sum(daily P/L up to t)

It sets the baseline and therefore scales every percentage figure (Profit %, CAGR, drawdown %), while the dollar P/L itself comes from your trades. In the dynamic regime it is also the sizing base (the current capital when compounding is on). You can edit it inline in the status bar, or set a default for new sessions in Settings.

Quick ways to set weights

From the command palette (⌘K / Ctrl-K):

  • Equal weights — distribute 1/n across the visible strategies.
  • Reset weights — set every weight back to 1.00.

Next: filter by day of the week with the Weekday filter.