Risk Sizing answers a sizing question: how many contracts should each trade take, across several strategies, so the book respects a daily-loss budget and a per-trade risk cap — optionally letting size compound as capital grows.
This module has moved into the Workspace
The standalone Risk Sizing module has been retired from the app — it's no longer in the sidebar,
overview or command palette. Its engine now runs inline in the Workspace: switch any
strategy to dynamic sizing from the rail (the ×/% toggle) and mix fixed and sized legs in the same
portfolio, including the max daily risk, compounding, the rolling windows and the per-trade allocation
table (see Weights, sizing & capital for the composition rules). With sizing
active, the workspace's Monte Carlo also switches automatically to the per-path
re-allocation engine described below. This page is kept for reference.
Manual costs under dynamic sizing
Per-strategy manual costs apply to dynamically-sized legs too — but on the
allocated units, not the original ones. On the per-contract basis a trade's cost is
allocated contracts × (commission + slippage); on per-trade it's one charge per executed trade.
The net P/L feeds the equity, the per-trade table and — with compounding on — the capital that sizes the
following trades, so a sized book compounds on its net returns.
It runs on its own data
Risk Sizing is independent of the analysis session. It works on trade-level CSVs, requiring at
least: Date Opened, Premium, P/L and Time Opened. Upload them directly, or use Import from
workspace to pull in the strategies of your current live session — exactly what you have loaded
right now, so any strategy you added, renamed or removed (or a full workspace reset) is reflected. With
an empty workspace the picker has nothing to offer. Only Option Omega strategies carry this
trade-by-trade detail; strategies with daily P/L only won't appear in the picker.
Simulations run in the background
Both the run and its Monte Carlo execute on the server, not inside the browser request. When you press run the calculation is handed to a background job and the page just polls for the result — so it keeps going if you switch tabs, lock your phone, or move to another app, and picks the result back up when you return. It even survives a full page reload or a backend restart mid-run. You don't need to keep the tab in the foreground.
Global, for the whole run:
Per strategy:
For each trading day the tool sets the available capital (fixed, or compounded from realised P/L), then for each trade:
unit = stop-loss $ per contract (or premium × SL%, or the margin requirement)
contracts = floor( capital × cap% / unit )
# then capped so the day's cumulative risk stays within max-daily-loss × capital,
# and finally clamped to the min / max contracts you set.
Realised P/L is contracts × per-contract P/L, accumulated into an equity curve. All per-trade
quantities are read per contract: Option Omega reports Premium per contract but P/L and
Margin Req. as position totals, so the engine divides those totals by the row's
No. of Contracts — a multi-lot backtest sizes exactly like a 1-lot one.
Where to read the per-trade loss
To choose a stop-loss or cap from the strategy's own history, use the Per-trade risk ($) block in each strategy's Metrics detail — the 5% threshold loss and worst-5% mean loss in dollars on 1 contract. That is the per-trade loss distribution you are sizing against (not the account-level VaR %, which is diluted by idle days).
Σ contracts × margin per contract, using each trade's margin (the CSV's margin
column, or the reference margin when you size on the margin basis). A position counts on every
business day it is open, close date included, not only on the day it was entered: margin is released
at the close, so a trade held Monday to Friday ties up capital for five days and overlapping positions
add up. That is what makes the peak of this histogram the figure to read. Because it uses the sized
contract count, the bars reflect the margin the re-sized book would actually post. A pinned badge
shows the median and mean across the trading days. In percent it is the
utilisation rate (margin ÷ that day's equity — with compounding the sizing follows the current
capital, so the rate measures the actual share of the account in use). It appears only when the
trades carry a margin; otherwise the panel explains how to supply one.contracts × per-contract P/L), the risk taken, cumulative daily risk and the capital available
that day. Export CSV (button in the table header) downloads the whole list as a CSV — one trade
per row, raw numbers (no currency formatting) ready to re-open in Excel or another tool.0.0% here: the simulation enforces your
daily-loss budget and shrinks position size as capital falls, so with a real edge the account
rarely revisits a low floor. If it's positive but rounds to zero, the readout shows < 0.1%.Every time you press Run, Risk Sizing keeps a snapshot of it. Open it from History on the run toolbar, or from the Risk Sizing history button on the session History (Timeline) page. The list shows every run — its PnL, CAGR, Max Drawdown, MAR and Sharpe at that moment and a small equity sparkline, newest first. It is the same idea as the session Timeline, applied to this module.
The history lives in your browser (local to this device), like the module's configuration: it survives a reload but is not synced across devices, and Clear empties it. Only base runs are recorded — Monte Carlo is a sub-analysis of the current run, not a separate history entry.
The rolling windows ask "what if I had entered at this moment?". Without compounding, sizing stays fixed on the starting capital, so a single window's path can fall past −100% of that capital — meaning a fresh account starting there would have lost everything. By default the window still shows the whole path (e.g. a −350% trough that "recovers" to +250%), with a "Conto bruciato" badge warning you the figure is theoretical: a real account would have stopped at zero and never seen that recovery.
Turn on Settings → Risk Sizing → "Stop when blown (rolling windows)" to make the windows realistic: any window whose path touches −100% is truncated there and pinned to −100% — the worst window reads −100% with no closing return, because the account is blown. Default off: you see each window's full path with the warning badge.
This is purely a display choice for the rolling windows. It does not change the main equity curve (where a real blow-up already shows as the line crossing zero), the trade-by-trade table, or the Monte Carlo. Flip it, then re-run.
If a strategy keeps allocating 0 contracts, the per-trade risk budget is too small to cover one contract. Common fixes: raise Cap %, raise the initial capital, reduce the stop-loss, or enable minimum 1 contract. Risk Sizing surfaces a plain-language warning in exactly these cases (for example, when both a % and a $ stop-loss are set, or when a margin basis has no margin available).