Investment restriction

Gross and net exposure limits

Gross and net exposure limits bound a long/short portfolio’s market exposure as a share of NAV. Gross adds the absolute value of every signed exposure, net adds them with their signs, and short exposure takes the absolute sum of the shorts. Acclimetry evaluates one named method per rule, never an unnamed ‘leverage’.

Rule template
gross_net_exposure
Gross / net exposure
Measured in
% of portfolio value
Worked examples, run by the engine
3

How policies word it

Long/short mandates often set two limits together, such as gross exposure no more than 150% of NAV and net equity exposure between 0% and 50%. Some add a cap on shorts alone, such as ‘short positions no more than 30% of NAV’. Family-office accounts that allow shorting or index hedges use the same pattern.

A net band can be negative, which a gross cap cannot. The policy should state how derivatives enter: at signed exposure, not market value. It should also say whether net is measured for one asset class or the whole book.

  • Gross exposure will not exceed 200% of NAV.
  • Net exposure will be maintained between 0% and 50% of NAV.
  • Net equity exposure may range from -20% to +80% of net assets.
  • Short positions, in aggregate, will not exceed 30% of NAV.

How it is measured

Each rule names its methodology. Gross exposure is the sum of each position’s absolute signed exposure over NAV. Net exposure is the signed sum over NAV, and short exposure the absolute sum of the shorts over NAV.

A 1,200 long and a 200 short in a 1,000 book are 140% gross and 20% short. Signed exposure is the long/short-adjusted value the position data states. Each method applies to every position in the portfolio; the template has no class filter.

When the rule requires direction, a position without a stated long or short is a data gap rather than an assumed long. The rule is then not evaluated until the direction is supplied.

When it is breached and what follows

Gross and short exposure rise when either leg grows; net exposure moves when the legs diverge. Each method is its own rule with its own result. A book can be inside its gross cap and outside its net band at the same time.

A breach opens a case at the first observation, with clocks that start after any grace period in days. Proposed trades can be checked before execution against all three rules in Trade Impact; batch results there are advisory.

Data the check reads

Rule parameters

Gross (sum of |signed exposure|), net (signed sum) or short exposure as a share of NAV, under the named methodology.

ParameterIn the platformOptions and help
methodologyMethodology (never just "leverage")gross_signed (Gross exposure — sum of |signed exposure| over NAV) · net_signed (Net exposure — signed sum over NAV) · short_exposure (Short exposure — |sum of shorts| over NAV)
requireDirectionTreat positions without a stated long/short direction as data gaps

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

Worked examples, run by the engine

A 1,200 long and a 200 short net to 1,000, so gross exposure of 1,400 is 140%, inside a 150% cap

Rule template: gross_net_exposure

methodology: gross_signed
requireDirection: false
Bounds: hard max 150%

Holdings
HoldingLong / shortMarket value
Llong1,200
Sshort-200
Result
GroupStatusValueBoundsHeadroom to the hard boundCode
Gross exposure (signed methodology) Compliant 140% ≤ 150% 10% WITHIN_LIMITS
  • WITHIN_LIMITS: The measured value sits inside every approved bound.

Largest contributors: Gross exposure (signed methodology) → L 120%, S -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 short against a 1,000 net book is 30% short exposure, over a 20% cap

Rule template: gross_net_exposure

methodology: short_exposure
requireDirection: false
Bounds: hard max 20%

Holdings
HoldingLong / shortMarket value
Llong1,300
Sshort-300
Result
GroupStatusValueBoundsHeadroom to the hard boundCode
Short exposure Breach 30% ≤ 20% -10% ABOVE_HARD_MAXIMUM
  • ABOVE_HARD_MAXIMUM: The measured value exceeds the approved hard maximum, beyond any stated tolerance.

Largest contributors: Short exposure → L 130%, S -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.

When direction is required, a holding with no stated long/short is a data gap rather than an assumed long

Rule template: gross_net_exposure

methodology: net_signed
requireDirection: true
Bounds: hard max 100%

Holdings
HoldingLong / shortMarket value
Llong1,300
S–-300
Result
GroupStatusValueBoundsHeadroom to the hard boundCode
Exposure Not evaluated: data quality – ≤ 100% – 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.

Shorts of 270,000 against a net portfolio value of 1,000,000 are 27% short exposure: past the 25% warning bound, inside the 30% cap.

Rule template: gross_net_exposure

methodology: short_exposure
requireDirection: false
Bounds: warn max 25% · hard max 30%

Holdings
HoldingClassLong / shortMarket value
Equity longsEquitieslong1,050,000
Equity shortsEquitiesshort-270,000
Sterling cashCash–220,000
Result
GroupStatusValueBoundsHeadroom to the hard boundCode
Short exposure 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: Short exposure → Equity longs 105%, Equity shorts -27%, Sterling cash 22%

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

Interpretation traps

Name the method

‘Leverage’ alone is not a method. Write the rule as gross, net or short exposure, and record which the policy means when it is unclear; see gross versus net exposure.

Undirected positions

Without long/short flags, an unsigned position reads as stated. Require direction when shorts matter, so a missing flag is a gap rather than a silent long.

Whole book only

The methods run over the whole portfolio. A net equity band inside a multi-asset portfolio is not expressed by this template. Record that part of the clause as unsupported by the engine, or measure the sleeve as its own portfolio if it is one.

Derivatives need signed exposure

Futures and swaps carry small market values but large exposure. They must be carried at signed exposure for gross and net to mean anything; see derivative exposure measures. For a cap on stated values only, use the gross exposure limit.

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

Can net exposure be negative?

Yes. A net band can have a negative minimum, such as -20%, for a book that may be net short.

Do I need three rules for gross, net and short?

Yes, one per method. Each gives its own result, so a portfolio can pass one and breach another.

Sources

Updated: 12 October 2026Acclimetry · Foreranger Ltd