Policy clause
"Rebalance when an asset class leaves its range": how to write it, test it and evidence it
This clause turns an allocation range into a trigger: when a class leaves its band, the portfolio is brought back. The trigger is testable; the rebalancing trade is a decision. Acclimetry tests the bands, opens a case on a breach and can check proposed rebalancing trades against the same rules before they are placed.
If any asset class moves outside its permitted range, the portfolio will be rebalanced back within the range.
allocation_rangeQuestions to settle before it can be tested
- Back to where: the edge of the range, the midpoint or the target? The rule tests the range; the destination is the manager's instruction.
- How fast: at once, within a set number of days, or at the next review? A grace period in days lets the case's clocks wait while trades are arranged.
- Which causes: drift only, or cash flows and trades too? The case's root cause records which applied.
- Margin before acting: a tolerance widens the hard bounds by a stated amount; warning bounds give notice instead.
As a testable rule
Allocation-range template, dimension class, one band per class with warning bounds: Equities 40-60%, Bonds 30-50%, Cash up to 10%. A seven-day grace period opens the case at the first breach but starts its clocks when the grace ends. Proposed rebalancing trades can be run through Trade Impact against the same bands first.
A testable wording
If an asset class leaves its permitted range, the manager will restore it within seven days, unless the committee approves a waiver. Rebalancing is to the nearest edge plus 2 percentage points.
The rebalancing policy section covers the choices. Acclimetry records the trigger and the case, not the trade; pre-trade and post-trade compliance explains both checks.
Worked example
A rally lifts equities to 63.2% of the 8m portfolio, over the ceiling, while bonds slip to 31.8%, a warning: the trigger to rebalance.
Rule template:allocation_range dimension: classbands: group=Equities, hardMin=40, warnMin=42, warnMax=58, hardMax=60 · group=Bonds, hardMin=30, warnMin=32, warnMax=48, hardMax=50 · group=Cash, warnMax=8, hardMax=10
| Holding | Class | Market value |
|---|---|---|
| UK equity fund | Equities | 1,856,000 |
| Global equity fund | Equities | 3,200,000 |
| UK Treasury 3.25% 2033 | Bonds | 1,544,000 |
| Corporate bond fund | Bonds | 1,000,000 |
| Cash | Cash | 400,000 |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| Equities | Breach | 63.2% | 40% – 60% warning 42% – 58% | -3.2% -5.2% to warning | ABOVE_HARD_MAXIMUM |
| Bonds | Warning | 31.8% | 30% – 50% warning 32% – 48% | 1.8% -0.2% to warning | BELOW_WARNING_MINIMUM |
| Cash | Compliant | 5% | ≤ 10% warning ≤ 8% | 5% 3% to warning | WITHIN_LIMITS |
ABOVE_HARD_MAXIMUM: The measured value exceeds the approved hard maximum, beyond any stated tolerance.BELOW_WARNING_MINIMUM: The measured value has crossed the early-warning minimum but not the hard limit.WITHIN_LIMITS: The measured value sits inside every approved bound.
Largest contributors: Equities → Global equity fund 40%, UK equity fund 23.2% · Bonds → UK Treasury 3.25% 2033 19.3%, Corporate bond fund 12.5% · Cash → Cash 5%
Computed at build time by the Acclimetry rule engine (backend commit 8197063); the same code runs in the product.
What each monitoring run records
Each run stores one result per band, so the record shows which class left its range, by how much and when. The case carries the root cause, the remediation and the compliant observations that closed it. Trade Impact shows the projected result of a rebalancing trade before it is placed.