One unit of risk, declared before a figure is read

The engine computes in R, where one unit is what a stopped-out trade costs. An account node on the canvas declares the starting capital, the currency, the share of that capital carried by one R, and the value of a pip and of an index point. A curve read without that declaration is a curve in R, and it stays readable as such.

The conversion happens at display time. Switching the reported unit re-runs no backtest and moves no verdict, so an equity axis carries the unit it was read in and the run underneath it is unchanged. The same convention travels into the research paper an export writes: the P&L is stated in risk units, with no leverage assumption embedded in the curves.

The product carries a single conversion from R to account terms, and the sizing readings reuse it. A second unit convention living beside the first would give two screens that disagree on the same run.

The account node governs what a figure is reported in. The size a sizing reading applies comes from a different place: the parameter on the sizing node you placed, or the rulebook declared by a prop-firm node, whose risk per day reaches the reading through the run. A reading with neither of those available states which field is missing.

the engine's unitR — one unit is what a stopped-out trade costs
what the account node declarescapital, currency, risk per R, pip value, point value
when the conversion happensat display time; the run and the verdict are unchanged
Return distribution in Stochastly, Full desk · 155 nodes, light theme.Open full size
The distribution of per-period returns in the recorded strategy run.

What a sizing reading covers, and against what

The sizing family ships 6 nodes, of which 4 are validated by executable checks, and 2 are declared roadmap. A fixed-fractional risk, a fractional Kelly, a Kelly capped by a declared drawdown ceiling and the account node itself make up the validated set. Each of the sizing readings takes the P&L series the run already produced and restates it at the size you declared.

Because the series arrives in R, a size costs no price data: choosing to risk a given share of the account per R is the same series read at another scale. That is what makes this family computable on a finished run, and it is also what bounds it.

Settings come from the node you placed. A fraction left undeclared produces a reading that states the missing field and where to declare it, in place of a customary value; a fraction entered at zero or below comes back reported as a value that designates no size, with your entry left alone. A declared zero is treated as a value, and an empty field as an absence.

The nodes counted as roadmap are named with what they lack, and they are declared in different places. Per-regime sizing is marked ported in the shipped catalogue and marked for later work by the calculation that would produce it. The reason is that the regime it would read reaches no point of the run, the node exposes no parameter of its own, and inventing a window, a threshold and a scale would import three decisions absent from the graph. The volatility-target node is declared roadmap in the shipped catalogue without a reason beside it, so the reader has no missing input to read.

what a sizing reading takes as inputthe P&L series of the best configuration, already in R
a setting you did not declarean absent setting, with the missing field named
the nodes themselvesNode catalogue
VaR / ES exceedance in Stochastly, Full desk · 155 nodes, light theme.Open full size
Returns, rolling risk thresholds and the observations that cross those thresholds.

The part of a sizing answer that involves no draw

Equity accumulates additively in R, so the drawdown expressed as a share of the account equals the declared fraction times the drawdown measured in R. That is an equality, and final equity, the deepest historical trough and the heaviest single day come out of it with no simulation, no seed and no threshold in the path.

The distribution around that trough does involve a draw. Days are resampled with replacement under a fixed seed, reproducing the resampling the lifecycle simulation already performs, and inheriting its declared limit: autocorrelation is absent from the draw, so a run of consecutive losing days comes out understated.

A historical trough is a single realisation, and it is usually milder than the law it came from. The reading publishes the mean, the median and upper percentiles of the resampled distribution beside it, so a mild history stays readable as a draw and a lucky path is harder to take for a bound.

Additive equity is a modelling choice, and the reading prices it. The same series at the same size is also accumulated as a compounded path, and the gap between the two is reported beside the figure. It widens with size, which is the information a reader wants before raising the risk. Where the compounded path would reach zero on that series, the reading states that the additive figure above it is optimistic.

drawdown as a share of the accountthe declared fraction times the drawdown in R — an equality
what the percentiles come froma seeded resample of days, with autocorrelation absent
what the compounded figure is forpricing the additive convention on your own series

Why an unequal aggression measures the aggression

A scheme that commits more capital produces a larger return and a deeper trough. On the return axis alone it looks like an improvement, and it is a scale anyone could have applied to the baseline. Holding the scale fixed is what leaves the remaining difference attributable to the scheme under test.

Equal span carries the same requirement. A variant that suppresses activity early in the sample often drops those dates from its own statistics, so it is scored over a shorter, later window. A variant that sometimes stays flat spends part of its difference on time out of the market, which is exposure and not skill in the entry.

The practical form is to print the first date, the last date, the count of active periods and a realised risk measure for each arm, and to leave the performance column unread until those match. Where they cannot match by construction, equalise deliberately — rescale both arms to the same realised volatility, or compare on the intersection of their active dates — and state which was done.

Pairing the randomness closes the last gap. Identical seeds and identical resampling indices leave one source of Monte-Carlo error inside the difference, so what moves between two arms is the component under test.

a gain paid for in riskshown at matched risk, or it is the position size
what to print before the performance columnfirst date, last date, active periods, realised risk
what pairing the seeds buysone source of Monte-Carlo error in the difference

A size that varies moves the odds without predicting

Matching the mean size answers one question: whether the extra return came from a bigger bet. It cannot see a modulation pattern, because rescaling a varying bet by a single factor leaves it varying. Near an absorbing barrier, a bet that moves changes first-passage odds on its own, and that mechanism is available to a rule with no forecasting content.

The permutation control answers the other question. It reuses the same multiset of per-day sizes and re-aligns them, holding the mean, the dispersion and the distribution bit for bit while destroying which day each size lands on. What survives is alignment; what dies was mechanics.

The measurement that made this a gate is on the record: sizing candidates that had cleared a matched-mean-size control looked like a Pareto dominance, and a modulator carrying no information reproduced that dominance under the same judge. Both candidates were dropped.

Clearing the gate requires the permutation and a flat size together. A modulator can beat its own permutation while being worse than applying no modulation at all, so information and value are read as separate bars. A draw whose metric comes back non-finite is counted as a draw that did not happen, and the reading abstains below a declared count of valid draws.

The null is a rotation, which holds the modulator's own serial structure and destroys the alignment. What the reading covers is therefore alignment, and stationarity stays outside it. When the rotation group is small enough to enumerate, the p-value carries no sampling error of its own, and the result states which of the two regimes produced it.

Legitimacy stays outside this gate as well. A modulator that reads ahead of itself aligns perfectly and clears it with the best score available; causality is the business of the engine's future-poison probe, which runs before the first configuration.

what a matched-scale control answerswhether the extra return is a bigger bet
what the permutation control answerswhether size and outcome are aligned
what clears the gatethe permutation and a flat size, together
what stays outside itWhy a run gets refused

A fraction fitted on data, and the segment that judges it

The growth-optimal fraction is solved on the series the run produced, by bisection on the derivative of expected log-wealth, which is decreasing in the fraction. A grid search would have returned the best point of a grid, and that answer moves when the step changes.

The domain has a hard edge. Expected log-wealth exists while one plus the fraction times each observed loss stays positive, so the solution stops at the reciprocal of the deepest loss in the sample. The reading states when the answer landed on that edge, because a sample containing no large loss leaves the fraction unbridled by the data.

Fitting and judging on the same series makes the fraction optimistic. With a split declared on the canvas, the fraction is estimated on the in-sample window and the figures beside it are measured on the out-of-sample window, so the size has seen none of the days that judge it. With no split declared, the reading states that the figure is entirely in-sample.

Both estimates stay published. The gap between the in-sample fraction and the full-history fraction is a direct measure of the estimator's instability, and it is the reason practitioners shrink toward a fraction of the full bet. A series whose expectation sits at or below zero returns a fraction of zero, which is the negative control of this calculation.

how the fraction is solvedbisection on a decreasing derivative, to machine precision
with a split declaredestimated in-sample, judged out-of-sample
with none declaredthe reading states that the figure is in-sample

Which trough a cap is set against

A declared ceiling resolves into a division, since the trough as a share of the account is proportional to the size. Which trough enters that division is the decision that changes the answer, and the node's own wording settles it: the cap applies to the expected maximum drawdown, so the bound is the mean of the resampled distribution.

The law of the maximum drawdown is skewed to the right, so its mean exceeds its median. Bounding on the median would authorise a larger size than the wording carries, which is why the median is published beside the mean and takes no part in the bound.

Bounds from the historical trough, from the expected trough and from an upper percentile are published together, and the reading names which one is active. The historical bound is computed from a single realisation and tends to authorise the largest size of the set; the percentile bound is the more prudent, and it holds the ceiling in the great majority of resampled paths.

A ceiling is a promise, and a promise verified on the data that produced it is unverified. With a split declared, the trough is measured on a segment that took no part in the calibration, so the verification can fail. Bounding on an expectation means it fails on roughly half of the paths by construction; a ceiling that held on the calibration segment would be a tautology on the sample.

how the cap resolvesthe declared ceiling divided by the drawdown in R
which trough bindsthe mean of the resampled distribution, as the node's wording carries
what the verification coversthe segment that took no part in the calibration
Drawdown survival in Stochastly, Full desk · 155 nodes, light theme.Open full size
The share of recorded drawdown episodes remaining underwater as duration increases.

What the shipped catalogue leaves for you to run by hand

Scaling exposure inversely to a volatility forecast is a published sizing rule, and its declared node is roadmap in the shipped catalogue. The measurable claim behind it is that volatility is more persistent than returns, so a forecast of the next period's dispersion carries information a forecast of its direction lacks.

The reported gain concentrates in the shape of the distribution: shallower troughs and a thinner left tail, with the effect on raw return far weaker than the effect on higher moments. It arrives with a turnover cost, since a size that follows a volatility estimate rebalances whenever that estimate moves.

It is also the case the permutation control was built for. A vol-scaled size varies, and a varying bet lowers a ruin rate through mechanics alone, so the question is whether the alignment between size and outcome survives a re-alignment of the same sizes. A vol-target run assembled outside the harness is worth submitting to that control before it is believed.

where the reported gain sitsin the shape of the distribution, weakly in raw return
what it coststurnover, in proportion to how often the estimate moves
the control it calls forthe permutation, because the size varies

Why the fraction is small, stated as a count of units

With no positive cost-net expectancy, ruin is certain given enough time, and no sizing rule repairs that. With a genuine expectancy, the probability of ruin decays geometrically in the number of capital units at stake, so halving the fraction risked per bet lowers it sharply. Fixed-fractional sizing brings that probability down without reaching zero.

This is the reason a growth-optimal fraction is treated as a ceiling to stay well below. The fraction that maximises terminal wealth sits at the edge of that cliff, and it is estimated from a sample, so estimation error pushes the estimate above the fraction that would have been right.

The readings put that in the terms a barrier-constrained account works in. A trough expressed as a share of the account, the heaviest single day at your size, and the probability of reaching a declared target before a declared floor are the figures a size decision turns on, and the last of them reuses the lifecycle already documented for evaluations.

the lifecycle, and the rule nodes that read itWhat a prop-firm evaluation actually measures
Position distribution in Stochastly, Full desk · 155 nodes, light theme.Open full size
Exposure across closed trades, expressed in units of risk.
Continue reading