Investment restriction

Currency exposure bands

A currency exposure band keeps the weight of one named currency, as a share of net portfolio value, inside an approved range. Acclimetry measures each listed currency’s signed weight, optionally offsetting declared hedging instruments. The currency of each holding is read by denomination or from an economic-currency field.

Rule template
currency_exposure
Currency exposure band
Measured in
% of portfolio value
Worked examples, run by the engine
2

How policies word it

Currency limits take three forms. A single-currency cap reads ‘US dollar exposure no more than 30%’; an aggregate cap reads ‘foreign currency no more than 30%’. A hedging requirement such as ‘hedge at least 75% of US dollar exposure’ is a currency hedge ratio, with its own template.

The policy should say whether exposure is measured before or after hedges. It should also say whether a holding’s currency is the one it is priced in or the currency of its underlying assets.

  • Exposure to the US dollar will not exceed 30% of the portfolio after hedging.
  • Foreign currency exposure, after hedges, will be no more than 30% of net assets.
  • At least 70% of the portfolio will be held in sterling-denominated assets.
  • Currency exposure is measured by the currency of the underlying assets, not that of the share class.

How it is measured

Each band names a currency and states a hard minimum, a hard maximum or both, in signed percent of net portfolio value. The engine adds the signed value of positions in that currency and divides by net portfolio value. Only the currencies in the band table are tested.

With offset, positions in the named hedge classes, such as FX forwards, net against their currency at signed value. Dollar assets of 600 and a 200 short forward leave 400. With exclude, hedge classes are left out and the band reads the unhedged basis.

The currency basis is either denomination, the currency the instrument is priced in, or economic, read from a governed field. A US-dollar-priced depositary receipt over a Brazilian company is dollars by denomination and Brazilian real economically. A position without the economic field falls back to its denomination and is counted.

When it is breached and what follows

Currency weights move with exchange rates, so most breaches are passive. A warning bound gives time to adjust hedges before the hard limit, and proposed hedge trades can be checked in Trade Impact.

A breach opens a case at the first observation; a grace period in days delays its clocks, not the breach. Missing values are never read as compliant, and a waiver never changes a result.

Data the check reads

Rule parameters

Each configured currency must keep its (optionally hedge-offset) weight inside its approved band.

ParameterIn the platformOptions and help
bandsCurrency bands (signed percent of NAV)
hedgeClassNamesHedge class names
hedgeTreatmentHedge treatment (declared methodology)offset (Offset — hedges net against their currency at signed value) · exclude (Exclude — unhedged basis, hedge classes left out)
currencyBasisCurrency basisdenomination (Denomination — the currency the instrument is priced in) · economic (Economic — the currency of the underlying exposure, from a governed field)
An ADR priced in USD over a Brazilian issuer is USD by denomination and BRL economically.
economicCurrencyFieldCodeEconomic currency field codeRead on the economic basis; a position without the field falls back to its denomination and is counted.

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

Worked examples, run by the engine

A currency band measures that currency against the whole book

Rule template: currency_exposure

bands: currency=USD, hardMax=30

Holdings
HoldingCurrencyMarket value
U1USD400
G1GBP600
Result
GroupStatusValueBoundsHeadroom to the hard boundCode
USD Breach 40% – -10% ABOVE_HARD_MAXIMUM
  • ABOVE_HARD_MAXIMUM: The measured value exceeds the approved hard maximum, beyond any stated tolerance.

Largest contributors: USD → U1 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 200 short forward offsets 600 of USD assets at signed value: 400 of the 1,000 book is 40%, inside a 50% cap

Rule template: currency_exposure

bands: currency=USD, hardMax=50
hedgeClassNames: FX Forwards
hedgeTreatment: offset

Holdings
HoldingClassCurrencyLong / shortMarket value
U1StocksUSD–600
FWDFX ForwardsUSDshort-200
G1StocksGBP–600
Result
GroupStatusValueBoundsHeadroom to the hard boundCode
USD Compliant 40% – 10% WITHIN_LIMITS
  • WITHIN_LIMITS: The measured value sits inside every approved bound.

Largest contributors: USD → U1 60%, FWD -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.

On the economic basis, the US-dollar-priced receipt over a Brazilian company counts as Brazilian real, so US dollar exposure is 27%: past the 25% warning bound, inside the 30% cap.

Rule template: currency_exposure

bands: currency=USD, hardMax=30, warnMax=25
currencyBasis: economic
economicCurrencyFieldCode: ECONOMIC_CURRENCY

Holdings
HoldingClassCurrencyMarket valueECONOMIC_CURRENCY
Depositary receipt, Brazilian companyEquitiesUSD200,000BRL
US equitiesEquitiesUSD270,000(blank)
UK equitiesEquitiesGBP530,000(blank)
Result
GroupStatusValueBoundsHeadroom to the hard boundCode
USD 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: USD → US equities 27%

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

Interpretation traps

‘All foreign currency’ is not one band

Bands are per currency, and an unlisted currency is unconstrained. In a book without hedges or derivatives, a 70% sterling floor equals a 30% cap on all other currencies, because the weights sum to 100%. With hedges the two differ, so record how the clause is handled.

Denomination is not exposure

A sterling share class of a global equity fund is sterling by denomination but mostly foreign economically. Choose the economic basis and supply the field where the policy means underlying exposure; see currency basis and hedges.

What the hedge offsets

With offset, a hedge counts at the signed value the position data gives it. Check how forwards are carried, since one reported only at its mark-to-market value offsets little; see currency hedge ratio.

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_DATANot 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.

Try it on your own holdings

The free Limit Checker runs this same template in your browser against a CSV of holdings. Nothing is uploaded.

Open the Limit Checker

Questions

Can one band cap all foreign currencies together?

No. Each band names one currency, and a currency without a band is not tested. Without hedges or derivatives, a floor on the base currency gives the same result.

Are hedges counted?

Only as the rule declares. Offset nets the named hedge classes against their currency at signed value; exclude leaves them out.

Updated: 12 October 2026Acclimetry · Foreranger Ltd