Capacity is a number you owe before you fund a strategy, not a discovery you make afterwards when the fills stop resembling the research. It is also what separates a backtest from a proposal, because a backtest is silent on size by construction. It assumes every order filled at the price it asked for, in full, against a book that did not notice. At a hundred thousand dollars that assumption is roughly harmless. Somewhere above that it stops being harmless, and the entire job is finding out where.
The exercise below produces one figure per profile: the AUM at which the strategy's own market footprint consumes a stated fraction of its gross edge. It is arithmetic rather than research, it takes an afternoon, and the number is defensible because every assumption in it is written down next to it.
Participation is the constraint, not notional
The instinct is to think in dollars, and dollars are the wrong unit. A two hundred thousand dollar order is nothing in a front month index future and is most of a session in a thinly traded name. What binds is participation: your order as a fraction of the volume that trades in the window you are willing to execute across.
So the first move is to convert every trade in the backtest from a notional into a participation rate, which requires three things per trade and no more. The instrument, the timestamp, and the intended weight or size. Then join that to the instrument's traded volume over the execution window you would realistically use, which for a signal driven profile is usually measured in minutes to hours rather than days, because the whole premise of the signal is that it decays.
That window choice is the most consequential assumption in the exercise and the one people leave implicit. If you assume you can work an order across a full session, your capacity number will be several times larger than if you must be done inside thirty minutes. Write down which you assumed, and be honest that a momentum profile that waits all day to complete is no longer trading the signal it backtested.

Getting a trade list you can actually scale
One thing to be straight about first. I am not going to tell you which fields the Backtest tab exposes or whether it offers a notional input you can vary, because that is not something I can confirm from the readings I have, and inventing a control would waste your afternoon. What I can tell you is that the tab exists next to Analytics and History in the Autopilot navigation, and what you need out of it.
You need three columns per trade: instrument, entry timestamp, and intended size expressed as a weight of the book. If the tab gives you those, export and proceed. If it does not give you all three, the fallback is the same one I use when a research platform will not hand over its internals, which is to reconstruct the trade list from the signal source the profile follows. The profiles on my overview were named Follow: NDX MTE 1day and Follow: XAG/USD MTE 4h, and a profile that follows a published signal source can have its trade list rebuilt from that source plus the profile's own sizing rule. Slower, but it means the capacity note does not depend on an export format.
Volume data comes from outside the platform either way, and use a median over the lookback rather than a mean, because a mean gets carried by the event days you cannot trade in size.
The arithmetic that turns a trade list into an AUM number
Four steps, in this order because the failure modes appear at different points.
- For each trade, express the order as a participation rate at a trial AUM. Order value equals weight times AUM. Participation equals order value divided by the volume traded in your chosen execution window.
- Apply a cost model to that participation rate. You do not need a proprietary one. The long standing family of impact models in the execution literature has cost rising roughly with the square root of participation, and using that shape with a coefficient calibrated to your own measured fills is far better than using a sophisticated model calibrated to somebody else's market.
- Compare modelled cost per trade against the profile's gross edge per trade from the same backtest, both in basis points. The ratio is the number that matters.
- Raise the trial AUM until that ratio crosses the threshold you set in advance. I use a third of gross edge as the point where a strategy is no longer worth running and a fifth as the point where it stops being comfortable, but the threshold is a house decision and its only real requirement is that it was chosen before you saw the answer.
Run this per instrument, not on the portfolio. The output is a capacity figure for each instrument, and portfolio capacity is not their sum. Take the minimum across the instruments that generate a meaningful share of gross P and L, because a strategy whose returns come mostly from two names has the capacity of those two names, however many liquid instruments sit alongside them. That P and L weighting step is where most capacity notes go wrong, usually flattering, and it is the first thing a competent allocator will probe.
Two haircuts the arithmetic will not give you
The number that falls out of the four steps is an upper bound on a good day, and two effects push it down in ways no volume series can show you.
The first is shared signal crowding. If the profile follows a published signal source, your execution window is shared with everyone else following it, and the denominator in step one is not the instrument's volume, it is that volume less whatever the other followers take out at the same moment. You cannot observe that quantity. What you can do is treat it as an explicit haircut, state it in the note, and monitor it by tracking whether your realised shortfall on the first minute after a signal is systematically worse than on trades you initiate at other times. That comparison is observable and it either confirms the haircut or retires it.
The second is that volume is not a constant, it is a variable that collapses at exactly the wrong moment. A capacity figure computed on median volumes describes a market that is functioning. On the day an instrument gaps, volume in the first window can be a fraction of normal while the profile fires at the same size, because the sizing rule is denominated in your book and knows nothing about the venue. That is not a modelling subtlety, it is the ordinary way a capacity number gets exceeded.
What the profile does with the number once you have it
A capacity note that lives in a document changes nothing. It has to become two enforced limits and one review trigger.
The enforced limits are a per order notional cap and a per instrument exposure cap, both set from the capacity figure with margin, and both configured in the profile's own risk guards rather than held as an intention. The engine offers per profile guards, per source rules and an audit trail, so a cap set there is a control. A cap held in a spreadsheet is a preference.
The review trigger is a volume drift check. Re run the participation arithmetic quarterly, and immediately when an instrument's traded volume moves materially from the median your note assumed. Capacity is not a property of the strategy, it is a property of the strategy against a market, and only one of those two is stable.
And the caps do not make the profile safe to leave unattended, which is worth saying because a capacity exercise creates a strong feeling that the risk has been handled. It has not. A correctly sized profile with binding caps will still send orders into a venue outage, still keep firing after the signal source has stopped updating, and still execute the full sequence during a gap where every fill is far outside the band your model assumed. The caps bound the damage per order. The engine wide pause and the kill switch on the overview bound the damage per incident, and only if a named person is watching closely enough to press them. Capacity work tells you how large the position can be. It says nothing about whether anyone is looking.