Simple claim: shorts-allowed and shorts-forbidden are different feasible sets, not two settings on one problem — the research target may not exist in production. The trench is shorts policy as a loss-card field with a fingerprint.
The problem we left open
Last post ended with a covariance recipe that has to be carded, because a diversification claim is a statement about off-diagonals and twenty-five names at 30 percent correlation sit on an 11 percent floor that seventy-five more names barely move.
Everything on that card so far affects the estimate: window, weighting, shrinkage, target. There is one more field, and it is different in kind, because it does not change what you believe about the world. It changes which portfolios exist.
Short selling, borrowing an asset, selling it now, repurchasing later, is what negative weights mean. Allow them and the feasible set of a mean-variance problem is a hyperplane. Forbid them and it is a bounded simplex slice. Those are not two parameterisations of one problem. They are two problems, and every tool in the standard stack will let you solve one and deploy the other without a warning.
The solution, as one stack
The fix is not clever mathematics; the mathematics has been settled since Markowitz. The fix is treating the nonnegativity constraint as an identity field on the loss card, with the operational reality behind it, and making the mismatch detectable. Five moves.
### 1. The shorts bit is part of the feasible set, and it carries its operational preconditions
The field is not a boolean called allow_shorts sitting alone. Shorting is a borrow: you need a locate, a borrow cost, and tolerance for recall. So the card carries the policy bit plus what makes the bit true, which names are shortable, at what assumed financing spread, and whether the borrow was actually checked or assumed. A shorts-allowed card whose borrow column says "assumed" is a research card, and research cards do not spend.
### 2. Publish the attainable return range under each policy, and refuse targets outside it
Here is the two-asset laboratory I will use throughout: expected returns 8 and 12 percent, volatilities 10 and 20 percent, correlation 0.20.
With shorts forbidden, the attainable expected returns are exactly the interval from 8 to 12 percent. That is the whole range. Nothing outside it is achievable at any risk, because you cannot hold more than 100 percent of the better asset. Inside it, the minimum-variance long-only portfolio holds 85.7 percent of the first asset and comes in at 9.56 percent volatility, below either asset's own volatility, which is real diversification doing real work, and worth noting so this does not read as an argument against long-only.
With shorts allowed, the range is unbounded. A target of 14 percent is reachable: short 50 percent of the first asset, hold 150 percent of the second. The result carries 29.41 percent volatility and 200 percent gross exposure.
So a request for a 14 percent target does not have a slightly worse answer under a long-only card. It has no answer. The correct verdict is refuse-infeasible with the range stated, and a solver that returns something anyway has been handed the wrong card.
### 3. Card gross exposure separately, because "shorts allowed" without a cap is unbounded
Allowing negative weights removes the natural bound on position size. Push the target higher and the same construction happily returns 300 or 500 percent gross. Volatility grows with it, so a variance objective does apply some discipline, but nothing in the objective knows about financing capacity, borrow depth or margin. Those are separate rows with separate owners, and they belong on the card next to the shorts bit rather than being discovered when operations calls.
### 4. Two policies mean two cards, two hashes, two frontiers
A frontier computed with shorts allowed and a frontier computed long-only are different objects with different shapes, and the long-only one is strictly inside the other. Storing one curve with a footnote is how the flip happens. Store two hashed cards. Then a mark, a limit or a backtest cites a hash, and comparing across policies is a diff instead of an argument.
### 5. Let the certificate prove which card was solved
This is the move that makes the flip detectable rather than merely forbidden, and it falls straight out of the proposal audit.
Under a shorts-allowed card with only a budget row and a return row, the optimum satisfies stationarity against those two multipliers alone, the closed-form solution is the inverse covariance applied to a combination of the ones vector and the expected-return vector, and there are no nonnegativity multipliers because there are no nonnegativity constraints.
Under a shorts-forbidden card, every asset carries an inequality row. At the optimum, complementary slackness has structure: names held strictly positive have zero multipliers, names sitting at zero may have positive ones. Hand solutions become unpleasant precisely because of that combinatorial active set, which is why the honest answer is a numerical QP rather than an algebraic flourish.
The consequence for governance is the useful part. A proposal's multiplier structure is a fingerprint of the card it was solved under. A long-only proposal that arrives with no nonnegativity multipliers and a name pinned at zero has not been audited under the card it claims. You do not have to trust the write-up; the certificate tells you which problem was actually solved.
### 6. Allow only when the research card and the enforcement card are the same hash
The verdict logic is short. Same hash, certificate passes, borrow verified: allow. Research ran shorts-allowed and live enforces long-only: refuse, SHORTS_POLICY_FLIP, and no partial credit for the weights being "close", a portfolio with a negative weight is not close to one that cannot have negative weights. Policy bits match but borrow is assumed rather than located: inconclusive, escalate to operations.
The example: CEH-001 through the shorts card
The structured book again. CEH-001 marked near 1.50 under the spread frame and near 2.10 under the curve frame.
The proposed risk reduction leans on a relative-value hedge: hold the structure, short a liquid cousin against it. In the research environment that hedge is a negative weight in a spreadsheet, and it works beautifully, the paired position cuts reported variance and lets the book hit a return target above what the long-only set can reach. Reported volatility on the hedged construction is the 29 percent figure with 200 percent gross, which the research write-up frames as acceptable for a hedged pair.
Then the card comes out. The cousin is not on the shortable list at the size required; the borrow column says assumed. So the hedged construction is not a riskier version of the live portfolio. It is outside the live feasible set entirely, and the return target it was built to hit, the one now sitting in a planning document, does not exist under the policy the desk operates. Refuse, with the attainable range attached.
The follow-on move is the one I want to name, because it is where these threads meet. Once the hedge is gone, someone observes that the two frames are far apart and the hedge would have "reconciled" them, and proposes marking at 1.80 as the level consistent with the hedged view. That is a mark justified by a portfolio the desk cannot hold. It fails twice over: no card produces 1.80 as a stationary point, and the construction being cited is infeasible under the live policy. The honest output stays what it was, two marks, a wide gap, an escalation, and an operations question about whether the borrow can be arranged at all.
The flow in one breath
Problem: the nonnegativity constraint is treated as a solver setting rather than an identity field, so research optimises over a feasible set production does not have. Solution: put the shorts policy and its borrow preconditions on the loss card, publish the attainable return range per policy and refuse targets outside it, card gross exposure separately, keep two hashed frontiers instead of one with a footnote, and use the multiplier structure of the certificate to fingerprint which card was actually solved. Example: CEH-001's short-a-cousin hedge is not risky but infeasible, its 14 percent target does not exist long-only, and the 1.80 mark it would have justified dies with it.
Curious how others keep borrow feasibility on the same card as the optimiser policy, and whether anyone uses multiplier structure as forensics to catch a research-to-live constraint flip.
Clearance coupling. Shorts policy is a loss-card field. Research solve under shorts-allowed and production under long-only is LOSS_CARD_MISMATCH — different feasible sets, different certificates.
Fingerprint the card in the promote ticket so silent policy flips cannot inherit old rights.