Overview of the Rules
This article explains the four elements that make up our rules:
- Foreach Expression
- Value Expression
- Thresholds, and Alerts Levels
- additional information
The Foreach Expression works with the three functions:
Union: Defines the properties (Rules > Properties) and dataviews (Rules > Data Views) that are relevant to the rule. Asset classes grouped together comprise a dataview, which is given a name that represents the grouping. Union adds all unique assets found in the various dataviews together.
Where: Defines a filter condition that must be true for an asset to be considered further, e.g., whether the position is Long/Short or the issuer of the equity is incorporated in a specific country. Where processes the list of conditions left to right, so if IsLong is unavailable in the above example, IsVoting and CountryOfListing will not be evaluated. This is important during the implementation phase - until all missing data is solved, more data issues could be masked by previous missing data items.
GroupBy: Groups the filtered assets. The grouping can be done on "Issuer" level, including all shares issued by a specific issuer. It can also be on "Issuer, ISIN" level, which only includes a specific class of shares for an issuer. This depends on the reporting requirements in each jurisdiction/rule.
The Value Expression states which values should be added together after the relevant filtering and grouping has taken place in the Foreach Expression. The Value Expression varies from rule to rule, but is generally related to either the number of voting rights or the number of shares held in a specific issuer/class.
Example of Foreach Expression and Value Expression:
Union(Equities, DRs, Convertibles).Where(IsLong and IsVoting).GroupBy(RefIssuerId)
This means that equities, DRs, and convertibles that have an associated voting right and held in long positions are grouped by their Issuer IDs. Then the sum of the PercentTotalVotingRights is calculated per Issuer ID. The PercentTotalVotingRights property is calculated by this expression:
If(IsVoting, EquivalentVotes / TotalVotingRights * 100,0).
Thresholds and Alert Expressions
The thresholds and alerts are closely related; these work together to determine when a disclosure is triggered. Thresholds can have different forms, but always reference a series of numbers. Some examples:
a) 5, 10, 25, 50 = 5, 10, 25, 50
b) 4, From 5 to 25 every 5, 40, 50 = 4, 5, 10, 15, 20, 25, 40, 50
c) From 5 upward every 1 = 5, 6, 7,..., 99, 100
Example alert expressions are shown here:
1) The CrossesOrReachesThreshold function will trigger a disclosure every time a threshold is crossed. That includes crossing in either direction or reaching it in an upward direction.
Consider examples for a threshold of 5%:
from 4.9% to 5.0%: disclosure is required as it was reached in an upward direction
from 5.1% to 5.0%: no disclosure because it was reached from above
from 5.1% to 4.9%: disclosure as it was crossed from above
from 5.0% to 4.9%: disclosure as it was crossed from above
from 4.9% to 5.1%: disclosure as it was crossed from below
2) The BetweenThresholds function triggers when a position is above the initial threshold (not crossing it). The AnyChange function anchors in the previous value generated by the rule for the specific issuer, and checks whether the value has changed, i.e. both decreases and increases count. Combined, a disclosure will be triggered if the percentage > initial threshold and any dealings were made in the issuer since the last check.
3) The Value function refers to the result value, i.e. the percentage holding and can be evaluated against any value, in this case, 5. The AbsoluteChangeSinceLastDisclosure function anchors in the last disclosure which is marked as filed in FundApps. FundApps evaluates this value against the result value and thereby checks whether the percentage has changed (increased/decreased) with more than a certain amount since the last disclosure was filed. Combined, a disclosure is triggered if the percentage is above 5% and the position has changed by more than 1% since the last filing.
We spend a lot of time naming the properties, dataviews, and alerts so that the rule is easy to understand. However, should additional information be needed, simply click on the property, dataview, or alert and a pop-up window will appear with additional information.