Policy clause
"No more than 25% in any one sector": how to write it, test it and evidence it
A sector cap limits the weight of any single industry sector. Acclimetry has no any-sector mode today: each named sector needs its own band, and a sector without one is unconstrained. The clause becomes testable once the sector scheme is named and every sector in it has its own 25% band.
No more than 25% of the portfolio may be invested in any one sector.
attribute_exposureQuestions to settle before it can be tested
- Which scheme: the policy should name the sector classification, and the data must carry it as a governed field or a published taxonomy.
- Every sector needs a band: list them all at 25%, including those not held today, or a new sector arrives unmeasured.
- Denominator: exempt classes such as cash leave both sides, so weights are shares of the rest.
- Unclassified holdings: a holding with no sector blocks a compliant reading, because it could belong anywhere.
As a testable rule
Attribute exposure template, attribute field:SECTOR, one band per sector in the scheme, each with hard maximum 25% and warning maximum 22%, cash exempt. Sectors are matched case-insensitively. A sector missing from the band table produces no result at all.
A testable wording and where it stops
No sector in the classification in Annex C may exceed 25% of the portfolio, excluding cash. The band table lists every sector in that classification.
Completeness is the author's job: review the table whenever the classification changes. See sector, country and region bands and not evaluated is not compliant.
Worked example
Financials at 26% of the invested book breach their band; mining is larger at 27%, but no band names it, so nothing measures it.
Rule template:attribute_exposure attribute: field:SECTORbands: group=Financials, hardMax=25, warnMax=22 · group=Technology, hardMax=25, warnMax=22 · group=Utilities, hardMax=25, warnMax=22 · group=Healthcare, hardMax=25, warnMax=22exemptClassNames: Cash
| Holding | Class | Market value | SECTOR |
|---|---|---|---|
| Harbour Bank plc | Equities | 700,000 | Financials |
| Granite Insurance plc | Equities | 600,000 | Financials |
| Ridge Mining plc | Equities | 900,000 | Mining |
| Copperfield Resources plc | Equities | 450,000 | Mining |
| Lumen Software plc | Equities | 1,000,000 | Technology |
| Kestrel Utilities plc | Equities | 800,000 | Utilities |
| Meadow Pharma plc | Equities | 550,000 | Healthcare |
| Cash | Cash | 200,000 | (blank) |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| Financials | Breach | 26% | ≤ 25% warning ≤ 22% | -1% -4% to warning | ABOVE_HARD_MAXIMUM |
| Technology | Compliant | 20% | ≤ 25% warning ≤ 22% | 5% 2% to warning | WITHIN_LIMITS |
| Utilities | Compliant | 16% | ≤ 25% warning ≤ 22% | 9% 6% to warning | WITHIN_LIMITS |
| Healthcare | Compliant | 11% | ≤ 25% warning ≤ 22% | 14% 11% to warning | WITHIN_LIMITS |
ABOVE_HARD_MAXIMUM: The measured value exceeds the approved hard maximum, beyond any stated tolerance.WITHIN_LIMITS: The measured value sits inside every approved bound.
Largest contributors: Financials → Harbour Bank plc 14%, Granite Insurance plc 12% · Technology → Lumen Software plc 20% · Utilities → Kestrel Utilities plc 16%
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 row per listed sector with its weight, state, headroom and largest holdings, and discloses the unclassified count and weight. Unlisted sectors appear nowhere, which is why the band table must be complete. A breach opens a case like any other limit.