Investment restriction

Look-through exposure limit (fund holdings)

A look-through exposure limit measures a group’s weight after expanding each fund into its underlying holdings, so equities inside a balanced fund count as equities. Acclimetry expands the named fund classes through their recorded compositions, up to five levels deep. It adds direct and indirect weight in the group and tests the total against the band.

Rule template
look_through_exposure
Look-through exposure
Measured in
% of portfolio value
Worked examples, run by the engine
3

How policies word it

Policies rarely say ‘look-through’, but some imply it: ‘total equity exposure, including through pooled funds, no more than 70%’. A country or sector cap may also be meant to reach fund holdings. Others defer pooled funds to the funds’ own documents, as some policies in our sample do.

Regulated funds face the question from the other side, through limits on holding other funds. UK UCITS schemes may hold 20% in one scheme and 30% in non-UCITS schemes (investment in other funds). A policy should say whether each limit applies to direct holdings only or through funds.

  • Total equity exposure, including equities held through pooled funds, will not exceed 70% of the portfolio.
  • Limits apply on a look-through basis where fund holdings data is available.
  • Exposure to any single country, directly or through funds, will not exceed 20%.
  • Pooled funds are assessed against their own documents; no look-through is applied.

How it is measured

The rule names a dimension, the group it measures, the fund classes to expand and a maximum depth from 1 to 5. Each fund’s newest usable composition splits its value across its entries. Entries in the measured group join the direct holdings at fund value times entry weight.

A 500 fund that is 60% stocks adds 300 to 500 of direct stocks: 80% of a 1,000 book. The result lists direct and fund-level contributors, so it shows which fund drove the weight.

A composition older than the staleness limit is not used, and a fund with no composition is left unexpanded. Either way the fund is disclosed and the group weight is not settled; a fund caught in a cycle is treated the same. A gap never reads as compliant; see fund look-through.

When it is breached and what follows

Look-through breaches often come from a fund manager’s decisions, not yours: a balanced fund raising its equity sleeve moves your exposure. Compositions arrive monthly or quarterly, so the result can change when a new one lands rather than when markets move.

A breach opens a case at the first observation. A warning bound gives notice, and a grace period in days delays the case’s clocks where the policy allows time to switch funds. A time-bound waiver can cover an agreed transition without changing the result.

Data the check reads

Rule parameters

Weight of the configured group with fund positions expanded through their underlying compositions.

ParameterIn the platformOptions and help
dimensionDimension
groupGroup measured
fundClassNamesFund class names to expand
maxDepthMax recursion depth (1-5)
compositionStaleAfterDaysComposition stale after (days)

Parameter names, methodology text and result-code meanings are shown exactly as the platform states them.

Worked examples, run by the engine

A 500 fund that is 60% stocks adds 300 to 500 direct stocks: 800 of the 1,000 book, over a 70% cap

Rule template: look_through_exposure

dimension: class
group: Stocks
fundClassNames: Funds
maxDepth: 3
Bounds: hard max 70%

Holdings
HoldingClassMarket value
EQStocks500
FUNDFunds500
Fund compositions (look-through)
FundUnderlying sleevesAs of
FUNDEquity sleeve: 60% (Stocks); Bond sleeve: 40% (Bonds)1 June 2026
Result
GroupStatusValueBoundsHeadroom to the hard boundCode
Stocks Breach 80% ≤ 70% -10% ABOVE_HARD_MAXIMUM
  • ABOVE_HARD_MAXIMUM: The measured value exceeds the approved hard maximum, beyond any stated tolerance.

Largest contributors: Stocks → EQ 50%, Equity sleeve (via FUND) 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 600 fund that is half stocks adds 300 to 400 direct stocks: 700 of the 1,000 book, inside a 75% cap

Rule template: look_through_exposure

dimension: class
group: Stocks
fundClassNames: Funds
maxDepth: 3
Bounds: hard max 75%

Holdings
HoldingClassMarket value
EQStocks400
FUNDFunds600
Fund compositions (look-through)
FundUnderlying sleevesAs of
FUNDEquity sleeve: 50% (Stocks); Bond sleeve: 50% (Bonds)1 June 2026
Result
GroupStatusValueBoundsHeadroom to the hard boundCode
Stocks Compliant 70% ≤ 75% 5% WITHIN_LIMITS
  • WITHIN_LIMITS: The measured value sits inside every approved bound.

Largest contributors: Stocks → EQ 40%, Equity sleeve (via FUND) 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 fund with no supplied composition cannot be expanded, so the group weight is not settled

Rule template: look_through_exposure

dimension: class
group: Stocks
fundClassNames: Funds
maxDepth: 3
Bounds: hard max 70%

Holdings
HoldingClassMarket value
EQStocks500
FUNDFunds500
Result
GroupStatusValueBoundsHeadroom to the hard boundCode
Stocks Not evaluated: data quality – ≤ 70% – 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.

A 500,000 balanced fund that is 55% stocks adds 275,000 to 450,000 of direct stocks: 72.5%, past the 70% warning bound and inside the 75% cap.

Rule template: look_through_exposure

dimension: class
group: Stocks
fundClassNames: Funds
maxDepth: 3
Bounds: warn max 70% · hard max 75%

Holdings
HoldingClassMarket value
Direct UK and global stocksStocks450,000
Balanced fundFunds500,000
Sterling cashCash50,000
Fund compositions (look-through)
FundUnderlying sleevesAs of
BALEquity sleeve: 55% (Stocks); Bond sleeve: 45% (Bonds)1 June 2026
Result
GroupStatusValueBoundsHeadroom to the hard boundCode
Stocks Warning 72.5% ≤ 75%
warning ≤ 70%
2.5%
-2.5% to warning
ABOVE_WARNING_MAXIMUM
  • ABOVE_WARNING_MAXIMUM: The measured value has crossed the early-warning maximum but not the hard limit.

Largest contributors: Stocks → Direct UK and global stocks 45%, Equity sleeve (via Balanced fund) 27.5%

Computed at build time by the Acclimetry rule engine (backend commit 8197063); the same code runs in the product.

Interpretation traps

Stale compositions

A fund’s holdings report can be months old. Set a staleness limit that matches how often compositions arrive. An older one is not used and the rule is not settled, which is the safe reading.

Partial coverage

A composition covering 90% of a fund leaves 10% unknown. The unknown residual blocks a compliant result instead of being spread pro rata.

Classification must match

Composition entries must use the same classification as the group. A fund reporting ‘Equity’ against a group called ‘Stocks’ adds nothing to it.

Other limits stay direct

Templates without a look-through setting measure direct holdings. An issuer cap does not see a company held inside a fund; the cash band has its own look-through option.

Result codes this check can return

CodeStateMeaningWhat to do
WITHIN_LIMITS ✓CompliantThe measured value sits inside every approved bound.–
ABOVE_WARNING_MAXIMUMWarningThe 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_MINIMUMWarningThe 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 ✓BreachThe measured value exceeds the approved hard maximum, beyond any stated tolerance.Remediate the exposure, or record an approved waiver against the case.
BELOW_HARD_MINIMUMBreachThe 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_DATABreachData 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_PORTFOLIONot applicableThe portfolio held no positions at the evaluation moment.–
NOT_IN_SCOPENot applicableThis 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_ACCEPTEDNot evaluated: data qualityA 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 qualityOne 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_ACCEPTEDNot evaluated: data qualityThe 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_REJECTEDNot evaluated: data qualityThe portfolio's newest snapshot was rejected, so there is no authoritative data to measure.Load a corrected file.
STALE_POSITIONSNot evaluated: data qualityThe newest snapshot is older than the organisation's staleness threshold.Load current positions, or revisit the threshold on Data & Quality ▸ Policy.
STALE_PRICESNot evaluated: data qualityA 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_DATAPending external dataAn 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_SUPPORTEDNot evaluated: unsupportedThe 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_ERRORNot evaluated: system errorThe 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

Questions

What if a fund publishes holdings only quarterly?

Set the staleness limit to allow for it. A composition older than the limit is not used, the fund is disclosed as unexpanded and the rule is not settled.

Can funds of funds be expanded?

Yes, up to the maximum depth set on the rule, from one to five levels. A cycle, where funds hold each other, is not expanded and is disclosed.

Sources

Updated: 12 October 2026Acclimetry · Foreranger Ltd