Methodology note
Warning bands and tolerances: hard and warning bounds
Each rule can carry four bounds: a hard minimum and maximum that define a breach, and warning bounds inside them that give early notice. A tolerance is a small margin beyond the hard bound that is not yet a breach. Cash at 9% under a 10% maximum with an 8% warning is a warning, with one point of headroom left.
cash_range · Asset allocation ranges (policy ranges and rebalancing bands)allocation_range · Issuer concentration limit (single issuer, single instrument)concentration · Custom data-field bandscustom_field_bandFour bounds
A band can set a hard minimum, a warning minimum, a warning maximum and a hard maximum. Outside a hard bound is a breach, between a warning bound and its hard bound is a warning, and inside both warnings is compliant.
Warnings report ABOVE_WARNING_MAXIMUM or BELOW_WARNING_MINIMUM. They mean no breach yet, and exist so the position can be managed before one.
What a tolerance does
A tolerance widens the hard bound for the breach test only. With a 10% maximum and a 0.5-point tolerance, 10.3% is not a breach, but 10.6% is.
The headroom to the hard limit still reads −0.3 at 10.3%, so the overshoot stays visible. Where a warning band exists, a value inside the tolerance reads as a warning, as the example shows.
Where the boundary falls
A hard maximum is breached when it is exceeded, not when it is reached. In the registry's worked cases, cash at exactly 10% of the book is compliant with zero headroom, while 10.001% breaches.
The comparison uses the full-precision value, not a rounded display. A figure shown as 10.00% can still be a breach; see fixed-precision arithmetic.
Pitfall: tolerance as a hidden limit
A tolerance that grows over time quietly moves the limit. Keep it to rounding and pricing noise, and record why it exists.
It is a parameter of the rule version like any bound. Approve it with the rule, so a change to it is a new, dated version.
Worked example
Cash at 10.3% is past the 10% maximum but inside a 0.5-point tolerance, so it reads as a warning rather than a breach, with −0.3 headroom to the hard limit.
Rule template:cash_range cashClassNames: Cash
Bounds: warn max 8% · hard max 10% · tolerance 0.5
| Holding | Class | Market value |
|---|---|---|
| Cash at bank | Cash | 103 |
| Listed equities | Stocks | 897 |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| Cash | Warning | 10.3% | ≤ 10% warning ≤ 8% | -0.3% -2.3% to warning | ABOVE_WARNING_MAXIMUM |
ABOVE_WARNING_MAXIMUM: The measured value has crossed the early-warning maximum but not the hard limit.
Largest contributors: Cash → Cash at bank 10.3%
Computed at build time by the Acclimetry rule engine (backend commit 8197063); the same code runs in the product.
Questions
Should every rule have a warning band?
Most should, sized to how fast the measure moves. A rule with no meaningful drift, such as an exclusion list, needs none.
Is a tolerance the same as a cure period?
No. A tolerance moves the breach line by a small amount; a cure period allows time to fix a breach that has already happened.