The single most common failure mode in production sizing code is unit confusion. The signal pipeline produces dimensionless weights (Kelly fractions, scores, conviction tiers); the execution layer needs integer share counts; somewhere in the middle the rupee dimension has to be introduced. If it is not, the sizer silently degenerates into something that sizes by share count rather than rupee, and on a low-priced universe, this produces positions that are quantitatively meaningless even when the math "works." A concrete pathology: a sizer that allocates an integer share budget (say, 24 shares per session, capped at 8 shares per line, split four ways) will produce positions of 1 to 8 shares per line.
Figure 1. Concept map for this episode: fight, desk translation, what to lock.
The unit-confusion failure mode
The single most common failure mode in production sizing code is unit confusion. The signal pipeline produces dimensionless weights (Kelly fractions, scores, conviction tiers); the execution layer needs integer share counts; somewhere in the middle the rupee dimension has to be introduced. If it is not, the sizer silently degenerates into something that sizes by share count rather than rupee, and on a low-priced universe, this produces positions that are quantitatively meaningless even when the math "works." A concrete pathology: a sizer that allocates an integer share budget (say, 24 shares per session, capped at 8 shares per line, split four ways) will produce positions of 1 to 8 shares per line. On a universe of ₹10-₹80 stocks this is ₹10-₹640 per line, a total exposure of perhaps ₹1,000 against an operator who notionally has ₹1,00,000 deployed. The Kelly logic is irrelevant; the units are wrong; deployment runs at under 1% of capital.
The deployment target
Operator capital that sits in cash earns nothing (or, in some regimes, less than nothing once inflation is netted out). Operator capital that is fully deployed has no buffer for new opportunities and is maximally exposed to systemic shocks. The right answer is between these extremes, and it is a tunable policy parameter rather than a derived quantity. Define the deployment target as the fraction of capital the operator wants to be at work in any given session. Typical values: 0.50 for a conservative book that always wants half of capital ready for opportunistic re-entries; 0.90 for an aggressive book that wants almost all capital working; 1.00 for a fully-deployed style that holds no cash at all. The deployment target serves two roles: it caps total exposure, and it is the level the sizer scales the raw weights up or down to hit, so the operator gets the Kelly edge on how capital is split between names, and the deployment target on how much capital is used in total.
The soft cap and the hard cap
The Kelly fraction can produce arbitrarily concentrated positions when one candidate has an outsized edge. In a book with N=4 candidates whose Kelly weights are 0.8/0.1/0.1/0.0, full Kelly would put 80 % of capital into one name. Even quarter-Kelly puts 20 %, which is still uncomfortably concentrated for any operator who remembers that the edge estimate is itself uncertain (Chapter 9). The standard fix is two layers of cap. The soft cap is the per-name ceiling that the sizer tries not to exceed. Typical value: 25 % of capital. Any first-pass allocation above the soft cap is clipped to the cap, and the spillover is collected for redistribution. This is the anti-concentration layer.
Phase-1 and phase-2 redistribution
When soft-cap spillover occurs, the sizer has two reasonable destinations: the runner-up names (those whose first-pass allocation was below the soft cap) or the over-weight name itself (whose allocation was clipped from above). The canonical design uses both, in sequence. Phase 1. Spillover to runner-ups. Distribute the spillover proportionally to the original weights of names whose final allocation is below the soft cap. Each runner-up grows until it either absorbs its share of the spillover or hits the soft cap. This is the anti-concentration phase: the spillover from the dominant name fills the runner-ups first, before being allowed to grow the dominant name further. The intuition: if the second-best candidate also has positive edge, give it more capital before doubling down on the leader. If spillover still remains after that (because the runner-ups also hit the soft cap), it flows back to the originally over-weight names, growing each up to a higher hard cap instead.
Worked picture
Capital ₹1,00,000, deployment target 90%, soft cap 25% per name, hard cap 70%, minimum line ₹500. Raw Kelly weights (already half-Kelly shrunk): A 0.40, B 0.25, C 0.20, D 0.15. Step 1. Scale to target: total budget ₹90,000. First-pass targets: A ₹36k, B ₹22.5k, C ₹18k, D ₹13.5k. Step 2. Soft cap at 25% (₹25k): A clipped from ₹36k to ₹25k; spillover ₹11k. Step 3. Phase-1 redistribution: B, C, D are below cap, so a first pass splits the spillover proportionally to their weights (0.25:0.20:0.15). That first pass would take B to ₹27.1k -- itself above the 25% cap, so B has to be capped too, absorbing only ₹2.5k before hitting ₹25k. The remaining ₹8.5k spills a second time across just C and D, proportional to their 0.20:0.15 weights: C rises to ₹22.9k, D to ₹17.1k. Now A and B sit exactly at the 25% cap, and C, D sit comfortably under it -- the cap is respected everywhere, at the cost of one extra redistribution pass. Step 4. Prices: A @ ₹250 gives 100 shares (₹25k); B @ ₹180 gives 138 shares (₹24.84k); C and D round down similarly against their own ₹22.9k and ₹17.1k targets. Deployed ≈ ₹89.8k (89.8%), within tolerance of 90%. Without the soft cap, A would have taken 36% of the book on a single name, exactly the concentration Chapter 9 warned about when the edge estimate is still uncertain.
What breaks in production
A sizer that requires labelled history to even run cannot bootstrap. The operator has to either hand-size positions for the first N trades (defeats the point of automation) or accept zero positions until N is reached (the book never starts). The cold-start fallback solves this: the sizer always runs, in cold-start mode initially and Kelly mode after the calibration threshold is met. The transition is announced via a meta field on each sizing decision so the operator can see when it flipped.
Capital-first sizing
Whatever weight scheme you use upstream (Kelly, Bayesian Kelly, conviction tiers, equal-weight), the production sizer must take capital base as its first input. Share counts are the output, never the intermediate. The moment a sizer compares a share count to a non-share-count quantity, the unit system is broken and the rupee deployment becomes accidental.