This article explains the four elements that make up our rules: Foreach Expression, Value Expression, Thresholds and Alerts Levels.
The Foreach Expression works with the three functions Union(), Where() and GroupBy().
Union: Defines the dataviews which are relevant to the rule. Asset classes grouped together make up 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 which must be true for an asset to be considered further, e.g. whether the position is Long/Short, or whether the issuer of the equity is incorporated in a specific country. Where processes the list of conditions left to right, so for example 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 there could be more data issues masked by previous missing data items.
GroupBy: Groups the filtered assets. The grouping can be done on "Issuer" level, which includes all classes of 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:
Foreach Expression: Union(Equities,DRs,Convertibles).Where(IsLong and IsVoting).GroupBy(RefIssuerId)
Value Expression is: Sum(PercentTotalVotingRights)
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 are 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 xamples:
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 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 Rapptr. Rapptr 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 on 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.