Investment restriction
Time-to-liquidate limit
A time-to-liquidate limit caps the share of a portfolio that would take longer than a set horizon to turn into cash. Policies usually state it the other way round: ‘at least 25% of the portfolio available within 30 days’. Acclimetry reads an approved days-to-liquidate estimate for each holding and weighs the holdings strictly beyond the horizon against the limit.
time_to_liquidateTime-to-liquidate limit
How policies word it
Liquidity clauses tie the portfolio to the cash its owner may need: grants, distributions, capital calls or redemptions. Many are written as a minimum available within a period:
- ‘At least 25% of the portfolio available within 30 days.’
- ‘No more than 20% of assets may take longer than 90 days to realise.’
- ‘Half the portfolio must be realisable within one week.’
A minimum within a horizon is tested as a maximum beyond it. ‘At least 25% within 30 days’ becomes ‘no more than 75% beyond 30 days’.
US fund rules use the same idea. SEC Rule 22e-4 can require a fund to keep a minimum share in highly liquid investments, convertible to cash within three business days.
- At least 25% of the portfolio must be available within 30 days.
- No more than 20% of assets may take longer than 90 days to realise.
- At least 50% of the portfolio must be realisable within five business days.
- Holdings needing more than one year to liquidate are limited to 15% of the portfolio.
How it is measured
Each holding carries an approved days-to-liquidate estimate in a data field. The rule weighs the holdings whose estimate is strictly greater than the horizon against the whole portfolio.
A holding exactly at the horizon counts as available. Exempt classes are left out of the measure altogether, denominator included, so cash should normally stay in.
The result is the share beyond the horizon, with headroom to the limit and the holdings that contribute most. One rule holds one horizon, so a liquidity ladder needs one rule per rung.
When it is breached and what follows
A share beyond the horizon above the hard maximum is a breach, and warning bounds give notice first. Breaches can be passive: a fall in listed assets raises the share of the slower holdings.
Each breach joins a case with assignment, escalation and service-level clocks. A grace period in days gives the manager time before the clocks start, though the result reads as a breach throughout.
A holding without an estimate makes the whole result not evaluated. Loading an estimate is therefore part of onboarding each new investment, such as a private fund.
Data the check reads
- An approved days-to-liquidate estimate for each holding, in a data field
- The horizon in days, in the same day convention as the estimates
- Market values for every holding
- Any exempt classes (left out of the measure, denominator included)
Rule parameters
The weight of holdings whose approved days-to-liquidate exceeds the horizon must not exceed the limit.
| Parameter | In the platform | Options and help |
|---|---|---|
| fieldCode | Days-to-liquidate field | Governed custom-field code carrying the approved days-to-liquidate estimate. |
| horizonDays | Horizon (days) | |
| exemptClassNames | Exempt classes |
Bounds the rule must set: hardMax
Methodology choices
- Days-to-liquidate is read from an approved governed field; it is never inferred from asset class.
Parameter names, methodology text and result-code meanings are shown exactly as the platform states them.
Worked examples, run by the engine
Only holdings strictly beyond the horizon count: at 1, 5 and 30 days against a five-day horizon, the 200 at 30 days is 20% of the 1,000 book, inside a 25% cap
Rule template:time_to_liquidate fieldCode: DTLhorizonDays: 5
Bounds: hard max 25%
| Holding | Market value | DTL |
|---|---|---|
| A | 700 | 1 |
| B | 100 | 5 |
| C | 200 | 30 |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| Beyond 5 days | Compliant | 20% | ≤ 25% | 5% | WITHIN_LIMITS |
WITHIN_LIMITS: The measured value sits inside every approved bound.
Largest contributors: Beyond 5 days → C 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.
A 300 holding at 30 days against a five-day horizon is 30% of the 1,000 book, over a 25% cap
Rule template:time_to_liquidate fieldCode: DTLhorizonDays: 5
Bounds: hard max 25%
| Holding | Market value | DTL |
|---|---|---|
| A | 700 | 1 |
| C | 300 | 30 |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| Beyond 5 days | Breach | 30% | ≤ 25% | -5% | ABOVE_HARD_MAXIMUM |
ABOVE_HARD_MAXIMUM: The measured value exceeds the approved hard maximum, beyond any stated tolerance.
Largest contributors: Beyond 5 days → C 30%
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 with no approved days-to-liquidate is a data gap — same-day liquidity is never assumed
Rule template:time_to_liquidate fieldCode: DTLhorizonDays: 5
Bounds: hard max 25%
| Holding | Market value | DTL |
|---|---|---|
| A | 900 | 1 |
| B | 100 | (blank) |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| Beyond 5 days | 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.
Only 230,000 of a 1,000,000 portfolio is available within 30 days: 77% lies beyond the horizon, over the 75% cap that tests ‘at least 25% within 30 days’.
Rule template:time_to_liquidate fieldCode: DTLhorizonDays: 30
Bounds: warn max 70% · hard max 75%
| Holding | Class | Market value | DTL |
|---|---|---|---|
| Listed equity fund (daily dealing) | Equities | 130,000 | 2 |
| Bond fund (daily dealing) | Bonds | 100,000 | 5 |
| Hedge fund (quarterly, 60 days' notice) | Hedge Funds | 320,000 | 150 |
| Private equity fund | Private Equity | 450,000 | 1800 |
| Group | Status | Value | Bounds | Headroom to the hard bound | Code |
|---|---|---|---|---|---|
| Beyond 30 days | Breach | 77% | ≤ 75% warning ≤ 70% | -2% -7% to warning | ABOVE_HARD_MAXIMUM |
ABOVE_HARD_MAXIMUM: The measured value exceeds the approved hard maximum, beyond any stated tolerance.
Largest contributors: Beyond 30 days → Private equity fund 45%, Hedge fund (quarterly, 60 days' notice) 32%
Computed at build time by the Acclimetry rule engine (backend commit 8197063); the same code runs in the product.
Interpretation traps
Estimates are inputs, not outputs
Acclimetry never infers days-to-liquidate from asset class. The estimate comes from the manager, the administrator or a data provider, as the policy names.
Business days and calendar days
The estimate and the horizon are compared as plain numbers. If the policy speaks of business days and the data holds calendar days, the test is wrong.
Strictly beyond the horizon
A holding at exactly 30 days passes a 30-day horizon. The illiquid assets limit differs: there a holding at the threshold counts as illiquid.
Invert minimums carefully
‘At least 25% within 30 days’ is a hard maximum of 75% beyond 30 days. A warning bound of, say, 70% gives notice before the minimum is lost.
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. |
| 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. | – |
| 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. |
| 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: liquidity classification and the highly liquid investment minimum (US funds)
- SEC Rule 2a-7: daily and weekly liquid asset minimums (US money market funds)
- Statement of investment principles: policy on the realisation of investments (2005 Regulations, reg 2)
Acclimetry evaluates the weight of holdings whose approved days-to-liquidate estimate is strictly greater than the rule's horizon, against its hard and warning maximums. It does not compute estimates from volumes, dealing terms or asset class. A holding without an estimate makes the result not evaluated, never liquid.
The free Limit Checker runs this same template in your browser against a CSV of holdings. Nothing is uploaded.
Questions
How do I test ‘at least 25% available within 30 days’?
Set the horizon to 30 days and the hard maximum to 75%. The rule then breaches when more than 75% of the portfolio needs more than 30 days.
Who supplies the days-to-liquidate estimate?
Whoever the policy names: the manager, the administrator or a data provider. Acclimetry reads it from an approved data field and never infers it.
Can one rule hold several horizons?
No. Each rule has one horizon, so a ladder such as 7, 30 and 90 days needs three rules.
Sources
- 17 CFR 270.22e-4 (SEC Rule 22e-4, liquidity risk management programs), via Cornell LII · public domain · Read on12 October 2026
- 17 CFR 270.2a-7 (SEC Rule 2a-7, money market funds), via Cornell LII · public domain · Read on12 October 2026
- Occupational Pension Schemes (Investment) Regulations 2005, regulation 2 · OGL v3.0 · Read on12 October 2026