Investment restriction
Exclusion screens (ESG, ethical and sanctions)
An exclusion screen bars holdings that fail an ethical, ESG, sanctions or client-specific test, such as ‘no tobacco, controversial weapons or thermal coal’. Any excluded holding is a breach, whatever its weight. Acclimetry reads each holding's verdict from an approved data source and withholds a clean result while any holding is unscreened.
exclusion_listExclusion screen
How policies word it
Exclusions are common in charity, foundation and family-office policies. They name activities, products or countries, and sometimes a revenue threshold:
- Activity: no companies involved in controversial weapons.
- Revenue threshold: companies deriving more than 10% of revenue from thermal coal are excluded.
- Sanctions: no holdings in securities of sanctioned issuers or countries.
- Client-specific: no holdings in the family's operating business or its listed competitors.
The thresholds and definitions usually sit with the screening provider, not in the clause. The policy should name that source, the dataset and how often it is refreshed.
- The portfolio will not invest in companies involved in tobacco production, controversial weapons or thermal coal mining.
- Companies deriving more than 10% of revenue from thermal coal are excluded.
- No investment may be made in securities of issuers subject to UK or UN sanctions.
- The manager will not hold shares in the family's operating company or its listed competitors.
How it is measured
Each holding carries a verdict from the approved source in a data field. The rule lists the values that mean ‘excluded’, matched without regard to case.
One excluded holding makes the result a breach, at any weight. The excluded weight is still reported, so a 0.2% holding and a 20% holding are told apart in the case.
A holding with no verdict is unscreened. By default the rule then withholds the clean reading and reports the unscreened weight, because an unscreened portfolio cannot claim no exclusions.
The result records the source name, dataset and as-of date, so the evidence shows which screen the portfolio met.
When it is breached and what follows
An excluded holding is often an active breach: a purchase the screen would have caught. It can also be passive, when the provider reclassifies a company already held.
The reason code's action is direct: divest the holding, or record an approved waiver naming it. Waivers are time-bound and never change the result, so the breach stays visible until the holding goes.
A proposed purchase can be checked against the same screen in Trade Impact before execution.
Data the check reads
- A screening verdict per holding, in a data field, from the approved source
- The verdict values that mean ‘excluded’, as the source writes them
- The source name, dataset and as-of date
- Market values, to report the excluded and unscreened weights
Rule parameters
ESG, ethical, sanctions or customer-specific exclusions applied from an approved data source, with unscreened weight disclosed.
| Parameter | In the platform | Options and help |
|---|---|---|
| screen | Screen type | |
| fieldCode | Verdict field | Governed custom-field code carrying the source verdict per instrument. |
| excludedValues | Values meaning EXCLUDED | |
| sourceName | Approved data source | |
| sourceDataset | Dataset | |
| sourceAsOf | Source as-of date | |
| requireScreenCoverage | Unscreened holdings block a clean reading |
Methodology choices
- Any excluded holding is a breach regardless of weight; the weight is reported for materiality.
Parameter names, methodology text and result-code meanings are shown exactly as the platform states them.
Worked examples, run by the engine
A fully screened book with no excluded verdict is compliant at zero excluded weight
Rule template:exclusion_list screen: sanctionsfieldCode: SANCTIONSexcludedValues: excludedsourceName: Vector screen providerrequireScreenCoverage: true
| Holding | Market value | SANCTIONS |
|---|---|---|
| A | 600 | clear |
| B | 400 | clear |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| Sanctions screen | Compliant | 0% | – | – | NO_EXCLUDED_HOLDINGS |
NO_EXCLUDED_HOLDINGS: No holding matched the exclusion list.
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.
One excluded verdict on a 400 holding breaches at 40% of the 1,000 book, matched case-insensitively
Rule template:exclusion_list screen: sanctionsfieldCode: SANCTIONSexcludedValues: excludedsourceName: Vector screen providerrequireScreenCoverage: true
| Holding | Market value | SANCTIONS |
|---|---|---|
| A | 600 | clear |
| B | 400 | EXCLUDED |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| Sanctions screen | Breach | 40% | – | – | EXCLUDED_HOLDING_PRESENT |
EXCLUDED_HOLDING_PRESENT: At least one holding matched the approved exclusion list.
Largest contributors: Sanctions screen → B 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.
A holding the source never screened blocks a clean reading — an unscreened book cannot report no exclusions
Rule template:exclusion_list screen: sanctionsfieldCode: SANCTIONSexcludedValues: excludedsourceName: Vector screen providerrequireScreenCoverage: true
| Holding | Market value | SANCTIONS |
|---|---|---|
| A | 900 | clear |
| B | 100 | (blank) |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| Sanctions screen | Not evaluated: data quality | – | – | – | SCREEN_COVERAGE_INCOMPLETE |
SCREEN_COVERAGE_INCOMPLETE: Part of the book could not be screened against the exclusion list, so an unscreened book is not a clean one.
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.
One holding the source flags as tobacco breaches the screen at 3% of the portfolio; the weight is reported for materiality, not used as a threshold.
Rule template:exclusion_list screen: esgfieldCode: EXCL_FLAGexcludedValues: Tobacco, Controversial weapons, Thermal coalsourceName: Approved ESG data providersourceDataset: Exclusions datasetsourceAsOf: 2026-09-30requireScreenCoverage: true
| Holding | Class | Market value | EXCL_FLAG |
|---|---|---|---|
| Consumer goods plc | Equities | 280,000 | None |
| Utility plc | Equities | 250,000 | None |
| Tobacco plc | Equities | 30,000 | tobacco |
| Bank plc | Equities | 240,000 | None |
| Pharmaceuticals plc | Equities | 200,000 | None |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| ESG exclusions | Breach | 3% | – | – | EXCLUDED_HOLDING_PRESENT |
EXCLUDED_HOLDING_PRESENT: At least one holding matched the approved exclusion list.
Largest contributors: ESG exclusions → Tobacco plc 3%
Computed at build time by the Acclimetry rule engine (backend commit 8197063); the same code runs in the product.
Interpretation traps
Unscreened is not clean
New holdings, private assets and some funds often arrive without a verdict. Each one blocks a clean reading until the source covers it or its identifiers are supplied.
The threshold lives in the data
A revenue threshold is applied when the provider issues its verdict. A change in the provider's method changes results, so record the source and as-of date the policy relies on.
List every verdict value
Values match regardless of case but must otherwise be exact. If the source writes ‘Fail’ and ‘Excluded’, list both.
Weight is for materiality, not the test
The rule has no de minimis threshold. If the policy tolerates a small exposure, that is a weight limit, such as a sector or country band, not an exclusion.
Result codes this check can return
| Code | State | Meaning | What to do |
|---|---|---|---|
| NO_EXCLUDED_HOLDINGS ✓ | Compliant | No holding matched the exclusion list. | – |
| EXCLUDED_HOLDING_PRESENT ✓ | Breach | At least one holding matched the approved exclusion list. | Divest the holding, or record an approved waiver naming it. |
| 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. |
| SCREEN_COVERAGE_INCOMPLETE ✓ | Not evaluated: data quality | Part of the book could not be screened against the exclusion list, so an unscreened book is not a clean one. | Supply the identifiers or classifications the screen needs. |
| 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
- Statement of investment principles: financially material considerations and non-financial matters (2005 Regulations, reg 2)
- Charity Commission CC14: the written investment policy and its approach to ESG factors
Acclimetry evaluates whether any holding carries a verdict the rule defines as excluded, from a named source, dataset and as-of date. It reports excluded and unscreened weights but does not produce ESG ratings, sanctions designations or revenue data. It does not look through funds or maintain cross-client restricted lists.
The free Limit Checker runs this same template in your browser against a CSV of holdings. Nothing is uploaded.
Questions
Does Acclimetry screen companies for ESG criteria?
No. It applies the verdicts of the approved data source the rule names, and records that source, dataset and as-of date with each result.
What happens when a holding has no screening data?
With coverage required, the default, the result is not evaluated (data quality) and the unscreened weight is reported. It never reads as compliant.
Is a sanctions screen the same as a prohibited list?
No. A sanctions screen reads a verdict per holding from a screening source. A prohibited list names instruments, issuers, countries or currencies directly.
Sources
- Occupational Pension Schemes (Investment) Regulations 2005, regulation 2 · OGL v3.0 · Read on12 October 2026
- Charity Commission, Investing charity money: a guide for trustees (CC14), updated 1 August 2023 · OGL v3.0 · Read on12 October 2026