Investment restriction
Sector, country and region exposure bands
Sector, country and region bands keep the weight of each named group inside an approved range, such as emerging markets at most 15%. Acclimetry groups holdings by a built-in attribute, a governed custom field or a published taxonomy. It measures each listed group against NAV and discloses any weight it cannot classify.
attribute_exposureAttribute exposure band
How policies word it
Geographic and sector limits take two forms. Named caps such as emerging markets no more than 15% apply to one group. Blanket caps such as no more than 25% in any one sector apply to every group of the attribute.
Funds whose names promise a focus carry floors of this kind. The US Names Rule requires at least 80% of assets to be invested as the name suggests. A policy should also say which classification it uses, because country of listing, country of risk and issuer domicile can differ.
- Emerging-market equities will not exceed 15% of the portfolio.
- No more than 25% of the portfolio in any one sector.
- UK assets will make up at least 25% of the portfolio.
- Exposure to any single country other than the United Kingdom is limited to 20%.
How it is measured
The rule names one grouping attribute. Built-in attributes include country, region, continent, issuer country and currency.
Sector or industry comes from a governed custom field, written field:CODE, or from a published taxonomy, written taxonomy:CODE. A taxonomy is read as it stood at the evaluation moment.
Each band names a group and states a hard minimum, a maximum or both, with optional warning bounds. The engine adds the market value of holdings in each listed group and divides by NAV, matching group names case-insensitively. Exempt classes, such as cash, are left out of both sides of the ratio.
Only listed groups are tested. A blanket cap such as ‘any one sector at most 25%’ needs a band per named sector today. A sector without a band is unconstrained.
Unclassified weight and breaches
A holding with no value for the attribute is not banked as ‘other’. Its weight is disclosed and the rule is not evaluated, because the group could be larger than measured. For example, 40% UK with 60% unclassified proves nothing against a 50% cap.
Country and sector weights drift with markets, so most breaches are passive. A warning bound gives notice, and a grace period in days delays the case’s clocks where the policy allows time to rebalance. The Analysis view reads exposure by dimension and can roll up an entity or household.
Data the check reads
- Market value of every position
- The grouping attribute on each holding: country, region, continent or issuer country from instrument data, or a governed field or taxonomy for sector and industry
- A band per named group, with hard and optional warning bounds
- Exempt class names, such as cash
Rule parameters
Weight bands per group of a governed attribute — sector, industry, country, region, market or jurisdiction — measured against NAV.
| Parameter | In the platform | Options and help |
|---|---|---|
| attribute | Grouping attribute | class, subClass, type, subType, strategy, currency, country, countryCode, region, continent, issuerCountry, issuer, issuerGroup, counterparty, counterpartyGroup A built-in position attribute, field:CODE to group by a governed custom field, or taxonomy:CODE to group by the term of a published taxonomy in force at the evaluation moment. |
| bands | Bands | |
| exemptClassNames | Exempt classes | Classes the attribute does not apply to, excluded from both sides of the ratio. |
Methodology choices
- Groups are matched case-insensitively against the attribute value.
- Unknown-attribute weight is disclosed and blocks compliant-side proofs.
Parameter names, methodology text and result-code meanings are shown exactly as the platform states them.
Worked examples, run by the engine
Weight by a built-in attribute measures over the whole book
Rule template:attribute_exposure attribute: countrybands: group=United Kingdom, hardMax=50
| Holding | Country | Market value |
|---|---|---|
| GB1 | United Kingdom | 600 |
| US1 | United States | 400 |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| United Kingdom | Breach | 60% | – | -10% | ABOVE_HARD_MAXIMUM |
ABOVE_HARD_MAXIMUM: The measured value exceeds the approved hard maximum, beyond any stated tolerance.
Largest contributors: United Kingdom → GB1 60%
These are the product's own test cases for this template, evaluated by the Acclimetry rule engine (backend commit 8197063). The build fails if any result changes.
Unclassified weight is disclosed, never banked as "other"
Rule template:attribute_exposure attribute: countrybands: group=United Kingdom, hardMax=50
| Holding | Country | Market value |
|---|---|---|
| GB1 | United Kingdom | 400 |
| ?? | – | 600 |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| United Kingdom | Not evaluated: data quality | 40% | – | 10% | UNCLASSIFIED_ATTRIBUTE_WEIGHT |
UNCLASSIFIED_ATTRIBUTE_WEIGHT: Part of the measured population carries no value for the attribute this rule groups by, so the weight cannot be attributed.
Largest contributors: United Kingdom → GB1 40%
These are the product's own test cases for this template, evaluated by the Acclimetry rule engine (backend commit 8197063). The build fails if any result changes.
Emerging markets are 126,000 of the 900,000 measured once exempt cash leaves both sides: 14%, past the 12% warning bound and inside the 15% cap.
Rule template:attribute_exposure attribute: regionbands: group=Emerging markets, hardMax=15, warnMax=12exemptClassNames: Cash
| Holding | Class | Market value |
|---|---|---|
| Developed-market equities | Equities | 774,000 |
| Emerging-market equities | Equities | 126,000 |
| Sterling cash | Cash | 100,000 |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| Emerging markets | Warning | 14% | ≤ 15% warning ≤ 12% | 1% -2% to warning | ABOVE_WARNING_MAXIMUM |
ABOVE_WARNING_MAXIMUM: The measured value has crossed the early-warning maximum but not the hard limit.
Largest contributors: Emerging markets → Emerging-market equities 14%
Computed at build time by the Acclimetry rule engine (backend commit 8197063); the same code runs in the product.
Interpretation traps
‘Any one sector’ is a list of bands
There is no single any-group mode. Write a band for every sector the portfolio can hold; a sector added later is unconstrained until it has one, as with allocation ranges.
Which country
Country of listing, country of risk and issuer domicile can differ for the same holding. Pick the attribute that matches the policy’s intent and record it as an author decision.
Unclassified is not ‘other’
Funds, cash and new issues often lack a sector or country. Classify them or exempt their class; otherwise the rule is not evaluated, which is the safe reading. See missing and stale data.
Taxonomies change
Sector schemes are revised. Grouping by a published taxonomy uses the term in force at the evaluation moment. A past result can be reproduced under the taxonomy of its date.
Result codes this check can return
| Code | State | Meaning | What to do |
|---|---|---|---|
| ABOVE_HARD_MAXIMUM ✓ | Breach | The measured value exceeds the approved hard maximum, beyond any stated tolerance. | Remediate the exposure, or record an approved waiver against the case. |
| EMPTY_PORTFOLIO | Not applicable | The portfolio held no positions at the evaluation moment. | – |
| NO_MEASURED_POSITIONS | Not applicable | No position in the portfolio fell inside this rule's measured population. | – |
| NOT_IN_SCOPE | Not applicable | This rule version does not apply to this portfolio — the portfolio is outside the version's stated scope. Recorded so that "considered and out of scope" can be told from "never run". | – |
| AGGREGATE_MEMBER_NOT_ACCEPTED | Not evaluated: data quality | A portfolio in the measured set has no authoritative snapshot, so the set-level number cannot be stated. | Accept the named portfolios' snapshots. A partial set produces no aggregate. |
| SNAPSHOT_NOT_ACCEPTED | Not evaluated: data quality | The portfolio's newest snapshot awaits data-quality review; only accepted data may produce an authoritative result. | Accept, override or reject the snapshot on Data & Quality. |
| SNAPSHOT_REJECTED | Not evaluated: data quality | The portfolio's newest snapshot was rejected, so there is no authoritative data to measure. | Load a corrected file. |
| STALE_POSITIONS | Not evaluated: data quality | The newest snapshot is older than the organisation's staleness threshold. | Load current positions, or revisit the threshold on Data & Quality ▸ Policy. |
| STALE_PRICES | Not evaluated: data quality | A holding had no price on the position file and its approved price was older than the organisation's price-staleness threshold, so it was left unvalued. | Load a current price for the holding, price it on the position file, or revisit the threshold on Data & Quality ▸ Policy. |
| UNCLASSIFIED_ATTRIBUTE_WEIGHT ✓ | Not evaluated: data quality | Part of the measured population carries no value for the attribute this rule groups by, so the weight cannot be attributed. | Classify the unclassified holdings. Unknown is never banked as "other". |
| AWAITING_EXTERNAL_DATA | Pending external data | An approved input is late but still inside the organisation's grace window. This is not a pass and not an exception. | None yet. If the delivery does not arrive, this becomes a data-quality exception. |
| BAND_HAS_NO_BOUNDS | Not evaluated: unsupported | A band in this rule version states neither a minimum nor a maximum, so there is nothing to decide against. | Supersede the version with bounds on the band, or remove it. |
| METHOD_NOT_SUPPORTED | Not evaluated: unsupported | The rule version asks for a measurement method this engine does not implement. Declared rather than approximated. | Choose a supported methodology, or treat this limit as a manual obligation until the method ships. |
| EVALUATOR_ERROR | Not evaluated: system error | The evaluator raised an error. Surfaced as a visible result rather than as silence. | Report it. A system error is never a pass and never a compliant reading. |
✓ seen in the worked examples. The rest come from the platform registry’s own scan of the template source.
Regulatory analogues
Acclimetry evaluates each named group’s market-value weight against NAV, for a built-in attribute, a governed field or a published taxonomy, and discloses unclassified weight. It has no ‘any group at most X%’ mode: each sector or country needs its own band. It does not supply classifications or look through funds.
The free Limit Checker runs this same template in your browser against a CSV of holdings. Nothing is uploaded.
Questions
How do I cap every sector at 25%?
Add a band at 25% for each sector the portfolio can hold. A sector without a band is not tested, so review the list when new sectors appear.
Does cash count as a country?
Only if it carries a country value. Exempting the cash class leaves it out of both sides of the ratio.
Where does the sector come from?
From a governed custom field or a published taxonomy that the organisation maintains. The template reads the classification; it does not supply it.
Sources
- SEC Rule 35d-1 (Names Rule), 17 CFR 270.35d-1 (Cornell LII copy) · public domain · Read on12 October 2026