Strategy·Jun 14, 2026·8 min read

Sizing positions by Kelly versus fixed-fractional, in practice.

Kelly and fixed-fractional are the two sizing rules every perp trader has heard of and almost no one runs verbatim. What each one actually says, why the real answer is a compromise, and how to express it in a strategy file you can edit.

EN
The Engine Team
Dusk Labs
Share

Most strategy walkthroughs you read spend nine paragraphs on the entry signal and one sentence on sizing. "We risk 2% per trade." Fine, but the choice of how much you put on per signal usually decides more of your annualized return than the signal itself does. A good signal sized badly underperforms a mediocre signal sized well. We have watched this happen, in walk-forward and in live runs, often enough that the sizing block in our strategy files gets at least as much editorial attention as the signal block.

The two rules every quantitatively-minded perp trader has heard of are Kelly and fixed-fractional. They sit at opposite ends of a spectrum — one is statistically optimal under conditions that never hold, the other is dumb enough to actually work — and most public discourse treats them as a take-your-pick. They are not a take-your-pick. The honest answer is a compromise, and the compromise has structure worth pulling apart.

This post walks through Kelly and fixed-fractional in practice, what each is for, why neither is what we actually run, and how the compromise lives in an Engine strategy file you can read, edit, and watch the agent act on.

What Kelly actually says.

Kelly is a sizing rule from information theory. The original formulation: given a known probability of winning a bet p, a known payoff ratio b, and a binary outcome, the fraction of bankroll that maximizes long-run geometric growth is

f* = (b · p − q) / b

where q = 1 − p. In continuous form, for a strategy with expected return μ and variance σ², the fraction is approximately μ / σ². The result is the largest size that does not, in expectation, blow up your geometric mean. Above Kelly, you are sizing into the regime where your equity curve has negative expected log return even though the per-trade arithmetic return is positive. Most of the catastrophic-blowup stories you have read about leveraged systematic traders are this regime.

In a real perp setup, the formula's inputs are not observable. You do not know your true win rate. You do not know your payoff ratio. You have a sample of trades, possibly with selection bias and almost certainly under a different regime than the one you are about to run in. The Kelly fraction you compute is a point estimate built on top of two noisier point estimates, and small errors in p or b translate into large errors in f*.

A concrete example, since the seed list says we owe you one. Suppose a funding-harvest signal has, in a clean backtest, a 56% win rate over 240 trades, with average winners of 1.4R and average losers of 1.0R. Plugging in, the implied Kelly fraction is roughly 24% of NAV per trade. Twenty-four percent. On a single perp signal. With no correlation adjustment for the other positions on the book. With no haircut for the fact that backtests overstate edge, which we wrote about here.

You should look at that number and feel that something has gone wrong. Kelly is not wrong; it is answering a different question than the one you asked it. It is answering: if you knew your edge precisely, and the future looked exactly like the past, and your only constraint was avoiding eventual ruin, how big could you go? It is not answering: how big should I go tomorrow, given that my edge estimate has a standard error roughly the size of the estimate itself.

What fixed-fractional actually says.

The other end of the spectrum: every trade is the same fraction f of NAV, full stop. No edge estimate, no win-rate estimate, no per-signal variance modeling. Pick a number, often 1% or 2%, and risk it.

Fixed-fractional gets two things very right. The first is that it is robust to parameter error. You cannot mis-estimate something you do not estimate. The second is that the loss path is bounded — if the strategy goes through a 10-trade losing streak (and they will), the equity drawdown is bounded by (1 − f)^10. At f = 0.02, that is an 18% peak-to-trough drawdown from the losing streak alone, which feels recoverable. At f = 0.05, it is 40%, which does not.

What fixed-fractional gets wrong is everything Kelly was trying to solve. The same size for a borderline setup as for a textbook one is leaving money on the table when the signal is clean and overpaying when it is marginal. If your signal has any conditional information at all — and a good signal has a lot of conditional information about expected return — fixed-fractional throws it away.

A trader running pure fixed-fractional sizing is implicitly saying: I do not trust my edge estimate enough to adjust position size for it. Sometimes that is the right answer. Often it is not.

Why neither is what we actually run.

The compromise most practitioners converge to — and what we ship in the public Engine strategies — has three pieces.

Fractional Kelly. Use Kelly's formula, but multiply the output by a fraction. Half-Kelly, quarter-Kelly, eighth-Kelly. The math is well-developed: at ½f*, you give up 25% of the long-run growth rate of full Kelly in exchange for roughly half the variance and dramatically smaller drawdowns. At ¼f*, you give up 44% of growth for roughly a quarter of the variance. Most live quant books we have seen run somewhere in the ¼ to ½ range. Funding Harvester runs at .

A hard cap. Whatever the fractional-Kelly output is, cap it at a fixed maximum — say 5% NAV per single-perp position. The cap exists because the things Kelly does not model — correlation between simultaneous positions, regime shifts that invalidate the variance estimate, signals you did not anticipate would correlate at the worst moment — are the things that actually cause real-world drawdowns. The cap is the place where you admit that the model is incomplete.

A floor at zero. If fractional Kelly outputs a size below some minimum tick (say 0.4% NAV), do not take the trade. Tiny sizes pay fees and spread without contributing meaningfully to the equity curve. This is rarely written down explicitly, but it is in every serious sizing rule we have audited.

The visual: rather than a single number, your sizing function is a piecewise curve. Low conviction → no trade. Mid conviction → fractional Kelly. High conviction → fractional Kelly, then capped. The cap matters more than the slope. The floor matters more than the cap.

How this lives in an Engine strategy file.

Engine strategies are markdown files. The risk block is the part of the file the sizing rule lives in, and it is meant to be read and edited by humans. Here is a stripped-down example showing the compromise above expressed concretely:

## Risk

Sizing: fractional Kelly at 1/3, with cap and floor.

- conviction = max(0, signal_strength - 0.45)
- kelly_fraction = conviction * 1.4 - 0.5 * conviction^2
- size_pct = clamp(0.33 * kelly_fraction, min=0, max=0.05)
- if size_pct < 0.004: skip trade

Per-position cap: 5% NAV
Per-side correlation cap: 12% NAV across longs, 12% NAV across shorts
Daily loss cap: -2.5% NAV; flatten and stand down for 24h on hit
Per-trade stop: -1.2% from entry

The agent reads this file the same way you do. When it considers a trade, the decision log shows the conviction score, the Kelly fraction, the resulting size before the cap, and the size after. If the cap binds, the log says so explicitly. If the daily-loss cap binds, the log says that explicitly, and the agent stands down for the rest of the session.

That is the bit most other trading products will not give you. A black-box bot will tell you it sized at 2.4% NAV. An Engine strategy file will tell you it sized at 2.4% because conviction came in at 0.72, Kelly suggested 7.1%, the fractional pulled that to 2.4%, the cap was not binding, and the floor was clear. You can scroll back and check the math. You can disagree with the math and change it. The file is the contract.

The thing we want to stress, since this is supposed to be a tutorial more than a polemic, is that the form of the sizing rule is at least as important as the number. A sizing rule expressed as one float (size = 0.02) hides every decision it is making. A sizing rule expressed as four lines of conditionals exposes all of them. When the strategy starts losing money — and every strategy goes through stretches of losing money — the first place a serious operator looks is the sizing block, and the readability of that block determines whether the next change you make is informed or superstitious.

A short conclusion.

Kelly is the textbook answer to a question you cannot ask. Fixed-fractional is the practical answer to a question you should not have stopped asking. The real answer is a compromise that captures the spirit of both: scale with conviction, give back some growth for robustness, and put a cap on the bits of the world your model does not see.

So far the bet — running fractional Kelly with hard caps and floors, across half a dozen public strategies — is going fine. Not "the future of position sizing." Just: we have not had a sizing-induced drawdown that surprised us in the way the textbook ones do, and we can show you exactly why on every trade. If you go write your own strategy, the four lines above are a defensible starting point. Then live with them for a few weeks, and edit. That is the whole loop.

perpsizingriskkellytutorial
Share
Keep reading