Investment restriction
Liquidity bucket limits
A liquidity bucket limit caps or protects the share of portfolio value in one liquidity category. Typical forms are ‘illiquid assets at most 30%’ or ‘at least 70% realisable within a month’. Acclimetry reads the category recorded on each holding’s class, adds the market value in the chosen bucket and tests its weight against the band.
liquidity_bucketsLiquidity bucket limit
How policies word it
Policies state liquidity two ways. Some cap the illiquid end: no more than 15% in illiquid assets, or a ceiling on private markets. Others protect the liquid end: at least 25% available within 30 days, or at least 70% in assets dealing daily or monthly.
Both forms assume a classification. Policies rarely define ‘illiquid’, and a holding’s bucket is a judgement about lock-ups, notice periods and market depth.
US open-ended funds classify holdings into four regulatory buckets under Rule 22e-4. They may not acquire an illiquid investment if more than 15% of net assets would then be illiquid.
- No more than 15% of the portfolio in illiquid assets.
- At least 25% of the portfolio must be available within 30 days.
- At least 70% of assets will be held in investments with daily or monthly liquidity.
- Illiquid investments, including private equity and property funds, may not exceed 30% of the portfolio at market value.
How it is measured
Each holding’s class carries a liquidity category, such as ‘Liquid’ or ‘Illiquid’. The rule names one bucket; the engine adds the market value of positions in that category and divides by portfolio value. The weight is tested against a hard maximum, a hard minimum or both, with optional warning bounds.
A cap on ‘Illiquid’ and a floor on ‘Liquid’ are two rules. They are not mirror images if a third category, such as ‘Semi-liquid’, exists. An unvalued position outside the bucket leaves its weight unsettled, so the rule is not evaluated rather than read as compliant.
When it is breached and what follows
Liquidity breaches are usually passive. A fall in listed markets raises the illiquid share without a trade, and capital calls draw down the liquid share. A warning bound gives the committee time to slow new commitments before the hard cap is reached.
A breach opens a case at the first observation, with clocks that start after any grace period in days. Where the policy tolerates a temporary excess, a time-bound waiver records the agreed period without changing the result.
Data the check reads
- Market value of every position
- A liquidity category on each holding’s class, for example Liquid, Semi-liquid or Illiquid
- The bucket the rule measures
- A hard minimum or maximum for that bucket, with optional warning bounds
Rule parameters
The weight of the configured liquidity bucket (class category) must stay inside the approved band.
| Parameter | In the platform | Options and help |
|---|---|---|
| bucket | Bucket |
Parameter names, methodology text and result-code meanings are shown exactly as the platform states them.
Worked examples, run by the engine
Illiquid assets at 200 of a 1,000 book are 20%, inside a 30% cap
Rule template:liquidity_buckets bucket: Illiquid
Bounds: hard max 30%
| Holding | Class category | Market value |
|---|---|---|
| PE | Illiquid | 200 |
| EQ | Liquid | 800 |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| Illiquid assets | Compliant | 20% | ≤ 30% | 10% | WITHIN_LIMITS |
WITHIN_LIMITS: The measured value sits inside every approved bound.
Largest contributors: Illiquid assets → PE 20%
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.
Illiquid assets at 400 of a 1,000 book are 40%, over a 30% cap
Rule template:liquidity_buckets bucket: Illiquid
Bounds: hard max 30%
| Holding | Class category | Market value |
|---|---|---|
| PE | Illiquid | 400 |
| EQ | Liquid | 600 |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| Illiquid assets | Breach | 40% | ≤ 30% | -10% | ABOVE_HARD_MAXIMUM |
ABOVE_HARD_MAXIMUM: The measured value exceeds the approved hard maximum, beyond any stated tolerance.
Largest contributors: Illiquid assets → PE 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.
An unvalued liquid holding leaves the illiquid weight unsettled, so nothing is read as compliant
Rule template:liquidity_buckets bucket: Illiquid
Bounds: hard max 30%
| Holding | Class category | Market value |
|---|---|---|
| PE | Illiquid | 200 |
| EQ | Liquid | 700 |
| ?? | Liquid | – |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| Illiquid assets | Not evaluated: data quality | – | ≤ 30% | – | 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.
Private equity and property together are 27% of the book: past the 25% warning bound, inside the 30% cap.
Rule template:liquidity_buckets bucket: Illiquid
Bounds: warn max 25% · hard max 30%
| Holding | Class | Class category | Market value |
|---|---|---|---|
| Private equity fund | Private equity | Illiquid | 180,000 |
| Property fund | Property | Illiquid | 90,000 |
| Listed equities | Equities | Liquid | 530,000 |
| UK gilts | Bonds | Liquid | 200,000 |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| Illiquid assets | Warning | 27% | ≤ 30% warning ≤ 25% | 3% -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: Illiquid assets → Private equity fund 18%, Property fund 9%
Computed at build time by the Acclimetry rule engine (backend commit 8197063); the same code runs in the product.
Interpretation traps
Who decides the bucket
The template reads the category recorded on each class; it does not assess liquidity itself. Write down the definition and who assigns it. For tests on lock-ups or days to liquidate, use the illiquid assets limit or the time-to-liquidate limit; see liquidity bases.
A cap and a floor are separate rules
A floor on liquid assets and a cap on illiquid ones agree only when there are exactly two categories. With a middle category, write both rules if the policy means both.
Valuation lag
Private holdings are often valued quarterly while listed holdings move daily, so the illiquid weight can jump when a new valuation lands. A price older than the organisation’s staleness threshold leaves the holding unvalued and the rule not evaluated.
Result codes this check can return
| Code | State | Meaning | What to do |
|---|---|---|---|
| WITHIN_LIMITS ✓ | Compliant | The measured value sits inside every approved bound. | – |
| 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. |
| 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
- SEC Rule 22e-4: four liquidity buckets and the 15% illiquid limit (17 CFR 270.22e-4)
- SEC Rule 2a-7: daily and weekly liquid asset minimums for money market funds (17 CFR 270.2a-7)
- Statement of investment principles: realisation of investments (OPS Investment Regs 2005 reg 2)
Acclimetry evaluates the market-value weight of one recorded liquidity category against a band. It does not classify holdings into buckets, model redemptions or capital calls, or estimate market depth. The illiquid assets and time-to-liquidate templates test holdings on approved liquidity fields instead.
Questions
Does Acclimetry define what is illiquid?
No. The bucket is the liquidity category recorded on each holding’s class, set by the organisation. The rule measures the weight of whatever that category holds.
How do I test ‘at least 25% available within 30 days’?
Record a category for holdings realisable within 30 days and set a hard minimum of 25% on that bucket. If the test rests on days to liquidate per holding, the time-to-liquidate template fits better.
Sources
- SEC Rule 22e-4, 17 CFR 270.22e-4 (Cornell LII copy) · public domain · Read on12 October 2026
- SEC Rule 2a-7, 17 CFR 270.2a-7 (Cornell LII copy) · public domain · Read on12 October 2026
- Occupational Pension Schemes (Investment) Regulations 2005, reg 2 · OGL v3.0 · Read on12 October 2026