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
Problem in one line: shorts-allowed and shorts-forbidden are two different feasible sets. Hitting a research target under one policy does not transfer to the other.
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 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
| Policy | Attainable E[r] (2-asset lab: 8% & 12%) | Example |
|---|---|---|
| Shorts forbidden | [8%, 12%] only | Min-var long-only ~85.7% / 14.3% then σ≈9.56% |
| Shorts allowed | Outside [8%,12%] reachable | Target 14%: −50% / +150% then σ≈29.41%, gross 200% |
| Target 14% under long-only card | Empty feasible set | refuse, not “slightly worse answer” |
| CEH dual-frame book | Policy must match lease | Research shorts ≠ production long-only without re-solve |
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: shorts policy silently changes the feasible set; research hits and production rights diverge. Solution: card shorts policy as a first-class field, publish attainable return ranges under each policy, refuse targets outside the carded set, re-solve rather than transplant weights. Example: 14% target exists only with shorts; under long-only it is empty, refuse, do not invent 1.80-style peace.
What to lock
shorts_policy∈ {forbidden, allowed, bounded} on every allocation job and lease.- Publish attainable E[r] range under the policy before accepting a target.
- Weights from a shorts-allowed research run never promote to a shorts-forbidden production card without re-solve + new KKT cert.
- Gross exposure and leverage limits are card fields beside the policy bit.
- CEH book: dual-frame constraints inherit the same shorts card; no silent policy swap.
Clearance coupling: policy mismatch is a type error. Next: singular / PSD Σ (S2-08) and perfect correlation phantoms (S2-09).