Policy clause

"Annual turnover below 50%": how to write it, test it and evidence it

A turnover limit caps how much of the portfolio is traded in a year, usually to control costs. It becomes testable once the policy names the formula, the window and what counts as trading. Acclimetry measures it from the transaction record: the lesser of purchases and sales over the window, divided by the portfolio's current value.

Portfolio turnover will be kept below 50% a year.
Rule template

Questions to settle before it can be tested

  1. Formula: the lesser of purchases and sales, or purchases alone? The usual two-sided definition takes the lesser.
  2. Which year: calendar, financial or a rolling 365 days? The rule uses a rolling window ending at each run.
  3. Flows: subscriptions, redemptions and transfers are not trading. They are left out unless the rule names them, and an unmapped type holds back a compliant reading.
  4. Denominator and bound: Acclimetry divides by current value, not an average, and treats exactly 50% as compliant; state 49.99% if below is strict.

As a testable rule

Turnover template, measure turnover ratio, window 365 days, counting purchases and sales: the lesser of the two over current net market value. Hard maximum 50%, warning maximum 45%. Without the transaction record the rule reads not evaluated, never zero.

A testable wording

Portfolio turnover, the lesser of purchases and sales over the last 365 days divided by current market value, will not exceed 50%. Subscriptions, redemptions and transfers are excluded.

See turnover measures and the turnover and trading-frequency limit.

Worked example

In the year to 30 June 2026, sales of 3.9m are the lesser side: 48.75% of the 8m current value, past the 45% warning.

Rule template: turnover_limit

measure: turnover_ratio
windowDays: 365
Bounds: warn max 45% · hard max 50%

Holdings
HoldingClassMarket value
EquitiesEquities5,000,000
BondsBonds2,600,000
CashCash400,000
Transactions in the window
DateTypeAmount
12 May 2025buy900,000
14 August 2025buy1,400,000
2 October 2025sell1,150,000
20 January 2026buy1,900,000
11 March 2026sell1,700,000
28 May 2026buy1,100,000
17 June 2026sell1,050,000
Result
GroupStatusValueBoundsHeadroom to the hard boundCode
Turnover (365d) Warning 48.75% ≤ 50%
warning ≤ 45%
1.25%
-3.75% to warning
ABOVE_WARNING_MAXIMUM
  • ABOVE_WARNING_MAXIMUM: The measured value has crossed the early-warning maximum but not the hard limit.

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

What each monitoring run records

Each run stores the turnover, its state and headroom, the purchase and sale totals, the trade count and the categories left out. The result states that it used current value rather than an average. A breach opens a case like any other limit.

Updated: 13 October 2026Acclimetry · Foreranger Ltd