Four assertions, one scan
Four assertions make a portfolio investable: weights sum to one, no weight below zero, no weight above the cap, and a violation count of zero. Two assets sit exactly at 35% and two at zero, which is what binding constraints look like.
Before any question about optimality, a portfolio has to be investable. Four checks establish that.
| Check | Result |
|---|---|
| Weights sum to 1 | 1.0000 |
| No weight below 0% | 0.0000 |
| No weight above 35% | 0.3500 |
| Constraint violations at the optimum | 0 |
The four checks look like rounding; they are the checks that catch the two ways a constrained optimizer fails without erroring.
Sum to one
A portfolio that sums to 1.0001 is 0.01% invested in nothing. It sounds like a rounding artifact and it is, until the portfolio is leveraged 20 times and the uninvested sliver is a real cash balance nobody is managing.
The tolerance matters. Too tight and a solver that is accurate to 10⁻⁹ fails; too loose and a 0.5% cash drag passes. The workbook uses a tolerance that a converged solver clears by several orders of magnitude. That is the same additivity demand as the key-rate additivity check, where the segments have to sum back to the whole.

The bounds
Two assets sit exactly at 35%: government bonds and property. Two sit exactly at zero: emerging markets and corporate bonds.
Those four positions are the interesting output. An optimizer that produces interior weights everywhere is one whose constraints are not binding. On a six-asset problem with a hard cap, that usually means the bounds are not being applied.
A weight of exactly 0.3500 and exactly 0.0000 is what complementary slackness looks like from the weights side, and the KKT article is the same statement from the multipliers side.
The violation count
One number: the count of constraints violated at the optimum. It must be zero.
Why have it when the individual checks already cover the same ground? Because the count is the check that survives when the constraint set changes. Add a minimum holding in cash, or a sector limit, or a turnover budget, and the individual checks need rewriting. The count does not.
That is the difference between a check that tests a model and a check that tests a rule. The four individual checks are the rule; the count is the model's compliance with whatever rules it was given.
What the scan does not check
That the bounds were the intended ones. A 35% cap is an input. The workbook checks the cap is respected, not that 35% is the right number.
That the constraints are jointly feasible. Every constraint can be individually satisfied while the set is infeasible: a 35% cap with a 40% minimum, for example. A feasible answer proves the set was feasible for this data, which is useful and not the same thing.
That the solution is unique. Multiple optimal portfolios can exist, and which one a solver returns depends on its starting point. The constraints cannot distinguish them.
Why this belongs next to KKT
Feasibility and optimality are different claims and they fail differently. A portfolio can be perfectly feasible and badly suboptimal. Early stopping produces the first case; a specification error produces the second, where a portfolio is optimal for the constraints it was given and infeasible for the ones actually intended, which is a specification error.
Running the four checks and the six KKT conditions together covers both. Running either alone leaves a class of failure unexamined.
Feasibility is only half the claim; optimality is the other half, in the KKT article. A different objective on the same constraint set is risk parity, and what the constrained weights earned is in attribution. The portfolio hub holds the full 24 checks.
Each bound is written as a check against the weight cell in Mica, so a solver that stops early leaves a failing row. A check beside the input is the Excel pattern the series uses to keep feasibility visible.
