Investment restriction
Issuer concentration limit (single issuer, single instrument)
An issuer concentration limit caps the share of portfolio value held with any single issuer, instrument or issuer group. ‘No more than 5% in any single issuer’ is the typical form. Acclimetry measures every group of the chosen dimension against the same cap, so each issuer gets its own result, headroom and contributors.
concentrationConcentration limit
How policies word it
Of 12 public policies read for this library in October 2026, six set a numeric concentration cap (data study). Among numeric limits, only allocation ranges appeared more often. Typical forms are a maximum weighting in any one security, such as 10%, or no more than 5% in a single issuer.
The wording decides the dimension. ‘Security’ or ‘investment’ points to the instrument, ‘issuer’ to the legal entity, and ‘issuer and its affiliates’ or ‘group’ to the ultimate parent. Regulated funds take the group reading: under the UCITS Directive, companies in one group count as a single body.
- No more than 5% of the portfolio at market value in the securities of any single issuer.
- The maximum weighting in any one security is 10%.
- No direct holding above 5% of the portfolio; collective investment funds up to 10% each.
- Exposure to any issuer and its affiliates shall not exceed 10% of net assets.
How it is measured
The rule chooses one dimension: instrument, issuer, or issuer group (ultimate parent). For each group the engine adds the market value of its positions and divides by the value of the portfolio. Each group is compared with the hard maximum and any warning maximum, and the result names the contributing positions.
Because the cap applies to every group, a breach by one issuer does not hide another. If any position has no readable value, the weights cannot be stated and the rule is not evaluated: the platform does not fabricate a zero.
The measure is direct holdings. Exposure through funds needs the look-through exposure limit, and exposure across family entities needs related-portfolio concentration.
When it is breached and what follows
An issuer can cross the cap without a trade, when its price rises or other holdings fall. The measurement is the same either way. The policy decides whether there is time to cure, and a grace period in days on the rule version can reflect it.
The case opens at the first breach and its clocks start when any grace ends. A warning maximum, say 8% against a 10% cap, gives notice before the hard limit. A proposed purchase can be checked against the cap in Trade Impact before it is placed.
A waiver can let a named holding stay over the cap for a period. It is approved within delegated authority, expires, and never turns the breach into a pass.
Data the check reads
- Market value of every position
- An instrument key on each position, for the instrument dimension
- An issuer key on each position, for the issuer dimension
- An issuer-group (ultimate parent) key, for the group dimension
- The hard maximum, and an optional warning maximum, as a percentage of portfolio value
Rule parameters
No single instrument (or issuer group) may exceed the approved share of portfolio value.
| Parameter | In the platform | Options and help |
|---|---|---|
| dimension | Dimension | asset (Instrument) · issuer (Issuer) · issuerGroup (Issuer group (ultimate parent)) |
Bounds the rule must set: hardMax
Parameter names, methodology text and result-code meanings are shown exactly as the platform states them.
Worked examples, run by the engine
A single issuer at 30% of a 1,000 book breaches a 25% cap
Rule template:concentration dimension: issuer
Bounds: hard max 25%
| Holding | Issuer | Market value |
|---|---|---|
| A | ISS-1 | 300 |
| B | ISS-2 | 700 |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| ISS-1 | Breach | 30% | ≤ 25% | -5% | ABOVE_HARD_MAXIMUM |
| ISS-2 | Breach | 70% | ≤ 25% | -45% | ABOVE_HARD_MAXIMUM |
ABOVE_HARD_MAXIMUM: The measured value exceeds the approved hard maximum, beyond any stated tolerance.
Largest contributors: ISS-1 → A 30% · ISS-2 → B 70%
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.
A position with no readable value is not fabricated as zero
Rule template:concentration dimension: issuer
Bounds: hard max 25%
| Holding | Issuer | Market value |
|---|---|---|
| A | ISS-1 | 200 |
| B | ISS-2 | – |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| ISS-1 | Not evaluated: data quality | – | ≤ 25% | – | MISSING_POSITION_DATA |
MISSING_POSITION_DATA: One or more positions had no readable value, and the partial numbers do not prove the outcome either way.
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.
Issuer A’s bond and shares add up to 18%, over the 17.5% warning bound and inside a 20% cap, so it reads warning. Issuer B sits exactly on the cap: reached, not exceeded.
Rule template:concentration dimension: issuer
Bounds: warn max 17.5% · hard max 20%
| Holding | Issuer | Class | Market value |
|---|---|---|---|
| Issuer A 4% 2031 | Issuer A plc | Bonds | 100,000 |
| Issuer A shares | Issuer A plc | Equities | 80,000 |
| Issuer B shares | Issuer B plc | Equities | 200,000 |
| Issuer C shares | Issuer C plc | Equities | 170,000 |
| Issuer D shares | Issuer D plc | Equities | 160,000 |
| Issuer E shares | Issuer E plc | Equities | 150,000 |
| Issuer F shares | Issuer F plc | Equities | 140,000 |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| Issuer A plc | Warning | 18% | ≤ 20% warning ≤ 17.5% | 2% -0.5% to warning | ABOVE_WARNING_MAXIMUM |
| Issuer B plc | Warning | 20% | ≤ 20% warning ≤ 17.5% | 0% -2.5% to warning | ABOVE_WARNING_MAXIMUM |
| Issuer C plc | Compliant | 17% | ≤ 20% warning ≤ 17.5% | 3% 0.5% to warning | WITHIN_LIMITS |
| Issuer D plc | Compliant | 16% | ≤ 20% warning ≤ 17.5% | 4% 1.5% to warning | WITHIN_LIMITS |
| Issuer E plc | Compliant | 15% | ≤ 20% warning ≤ 17.5% | 5% 2.5% to warning | WITHIN_LIMITS |
| Issuer F plc | Compliant | 14% | ≤ 20% warning ≤ 17.5% | 6% 3.5% to warning | WITHIN_LIMITS |
ABOVE_WARNING_MAXIMUM: The measured value has crossed the early-warning maximum but not the hard limit.WITHIN_LIMITS: The measured value sits inside every approved bound.
Largest contributors: Issuer A plc → Issuer A 4% 2031 10%, Issuer A shares 8% · Issuer B plc → Issuer B shares 20% · Issuer C plc → Issuer C shares 17%
Computed at build time by the Acclimetry rule engine (backend commit 8197063); the same code runs in the product.
Interpretation traps
Issuer or issuer group
A bank’s shares, senior bonds and covered bonds may sit under different issuer entities. Measured by issuer, each can pass while the group exceeds the cap. Decide which the clause means and record it; see issuer groups and ultimate parents.
Tiered caps and exemptions
The template applies one cap to every group of its dimension. Tiered caps (5% direct, 10% for funds) and exemptions for government bonds are not settings of it. Record how that part of the clause is handled instead of stretching one cap over both.
Which denominator
The cap is measured against portfolio value at market. A clause written ‘of total assets’, ‘of net assets’ or ‘of the manager’s portfolio’ may mean something else; see denominators.
One unvalued position
A single position without a value leaves every weight unsettled, so the rule is not evaluated rather than passed. A rule version can choose a conservative-breach policy instead; see missing and stale data.
Result codes this check can return
| Code | State | Meaning | What to do |
|---|---|---|---|
| WITHIN_LIMITS | Compliant | The measured value sits inside every approved bound. | – |
| ABOVE_WARNING_MAXIMUM | Warning | The measured value has crossed the early-warning maximum but not the hard limit. | No breach yet; the early-warning band exists so the position can be managed before one. |
| BELOW_WARNING_MINIMUM | Warning | The measured value has crossed the early-warning minimum but not the hard limit. | No breach yet; the early-warning band exists so the position can be managed before one. |
| 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. |
| BELOW_HARD_MINIMUM | Breach | The measured value falls below the approved hard minimum, beyond any stated tolerance. | Remediate the exposure, or record an approved waiver against the case. |
| CONSERVATIVE_MISSING_DATA | Breach | Data was missing and this rule version's approved unknown-data policy is conservative_breach, so the gap is treated as a breach rather than as Not Evaluated. | Supply the missing values; the reading is deliberately pessimistic until you do. |
| EMPTY_PORTFOLIO | Not applicable | The portfolio held no positions at the evaluation moment. | – |
| 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. |
| MISSING_POSITION_DATA ✓ | Not evaluated: data quality | One or more positions had no readable value, and the partial numbers do not prove the outcome either way. | Supply the missing valuations. The platform will not fabricate a zero to produce a reading. |
| 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. |
| 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. |
| 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
- UCITS 5/10/40 rule (COLL 5.2.11R; UCITS Art 52(2))
- UCITS issuer groups as a single body (COLL 5.2.11R; Art 52(5))
- NURS spread limits: 10% per issuer (COLL 5.6.7R)
- Employer-related investments: the 5% limit (OPS Investment Regs 2005 reg 12)
Acclimetry evaluates the market-value weight of every instrument, issuer or issuer group in one portfolio against a single hard maximum, and names the contributors. It does not test the UCITS 40% aggregate or the 1940 Act 75-5-10 test as one rule, nor tiered caps or exemptions. It does not look through funds or add up related portfolios, which other templates do.
The free Limit Checker runs this same template in your browser against a CSV of holdings. Nothing is uploaded.
Questions
Does a 5% issuer cap apply to every issuer or only the largest?
Every issuer. Each group of the chosen dimension gets its own result, so two issuers over the cap produce two breaches.
How do I cap a whole banking group?
Choose the issuer-group dimension, which adds positions up by their ultimate parent. Each position then needs an issuer-group key.
Can Acclimetry run the UCITS 5/10/40 test?
The 10% ceiling per issuer can be a concentration rule, and a 5% warning bound then lists the issuers above 5%. Nothing sums those issuers against 40%: the aggregate is not expressed as one rule today.
Sources
- Directive 2009/65/EC (UCITS), consolidated text of 16 April 2026, Arts 52 and 55 (EUR-Lex, source of record) · CC BY 4.0 · Read on12 October 2026
- FCA Handbook, COLL 5.2 (UK UCITS schemes), read 12 October 2026; pending FCA API snapshot · © FCA, OGL v3.0 · Read on12 October 2026
- FCA Handbook, COLL 5.6 (non-UCITS retail schemes), read 12 October 2026; pending FCA API snapshot · © FCA, OGL v3.0 · Read on12 October 2026
- Occupational Pension Schemes (Investment) Regulations 2005, reg 12 · OGL v3.0 · Read on12 October 2026