INFORMATION SYSTEMS AND PROCESSES XBRL FORMULA IN PRACTICE IN REGULATORY ENVIRONMENTS: EXPERIENCE...

89
INFORMATION SYSTEMS AND PROCESSES XBRL FORMULA IN PRACTICE IN REGULATORY ENVIRONMENTS: EXPERIENCE AND BENEFITS Víctor Morilla Bank of Spain Manuel Rodríguez / Moira Lorenzo ATOS Origin 19 th XBRL International Conference Paris 23th 2009

Transcript of INFORMATION SYSTEMS AND PROCESSES XBRL FORMULA IN PRACTICE IN REGULATORY ENVIRONMENTS: EXPERIENCE...

INFORMATION SYSTEMS AND PROCESSES

XBRL FORMULA IN PRACTICE IN REGULATORY ENVIRONMENTS: EXPERIENCE AND BENEFITS

Víctor MorillaBank of Spain

Manuel Rodríguez / Moira LorenzoATOS Origin

19th XBRL International ConferenceParis 23th 2009

INFORMATION SYSTEMS AND PROCESSES

INDEX

MotivationBrief tutorialBank of Spain project detailsNext steps

2

INFORMATION SYSTEMS AND PROCESSES

MOTIVATION

3

INFORMATION SYSTEMS AND PROCESSES 4

COMPLEXITY OF THE REPORTING PROCESS IN REGULATORY BANKING INSTITUTIONS

Some figures– More than 400 credit institutions– About 5.000 statements per year– About 35.000 different financial concepts managed– More than 300.000 checks applied per year

INFORMATION SYSTEMS AND PROCESSES 5

Sender

Supervisor

DEFINITON PHASE (OLD APPROACH)

IT developerSystemrequirements

Normativedocumentation

IT developer

Businessuser

Businessuser

IT analystSystem

requirements

C

Code

C

CodeIT analyst

INFORMATION SYSTEMS AND PROCESSES 6

Sender

Supervisor

FILING PROCESS TIMELINE (OLD APPROACH)

Data extraction& transformation

Errors detected

Analysisand corrections

Data extraction& transformation

Validation OK

Analysis

Notification

INFORMATION SYSTEMS AND PROCESSES 7

PROCESS COMPLEXITY MULTIPLIED ON THE SUPERVISOR’S SIDE

SupervisorSender

Sender

Sender

Sender

Sender

Sender

Sender

Sender

Sender

Sender

Sender

Sender

INFORMATION SYSTEMS AND PROCESSES 8

Sender

Supervisor

DEFINITON PHASE (XBRL APPROACH)

Businessuser

IT analyst

Normativedocumentation

XBRLTaxonomy

(with validationrules)

Businessuser

INFORMATION SYSTEMS AND PROCESSES 9

Sender

Supervisor

DATA FILING PROCESS TIMELINE (XBRL BASED)

Data extraction& local validation

AnalysisAnd corrections

Analysis

Validation OK

INFORMATION SYSTEMS AND PROCESSES

XBRL VALIDATION CAPABILITIES

XBRL 2.1 provides different types of validation for instance documents:

–Basic XBRL validation–XML Schema validation–Calculation linkbase–XBRL Dimensions

Not enough in most cases:–Basic arithmetic operations: product, division, …–Arithmetic comparisons: item A must be equal to item B, …–Checks for the presence of elements

Derivation of new facts from existing ones is not possible

10

INFORMATION SYSTEMS AND PROCESSES

WHY A NEW LANGUAGE?

Why not using existing languages like...-JAVA, C#, C++ or Cobol-XML based languages like XSLT, XQuery or Schematron

Key requirements–Intuitive–Maintainable–Documentation capabilities–Extensible

11

INFORMATION SYSTEMS AND PROCESSES

WHY A NEW LANGUAGE? LET’S ASK FOR SOME HELP...

Niklaus WirthDesigner of programming languages like Pascal, Euler or Modula

Author of the book “Algorithms + Data Structures = Programs”

12

INFORMATION SYSTEMS AND PROCESSES

DATA STRUCTURES

13

INFORMATION SYSTEMS AND PROCESSES

DATA STRUCTURES

14

1 2 3 4 78

79

80

81

5 6 7 8 9 10

11

12

...

evn : checks that a set of cells has at least one 1, 2, ..., 9

evn(1,2,...,9) and evn(10,11,...,18) and evn(19,20,...,27) and ... evn(73,74,...,81)and evn(1,10,...,73) and evn(2,11,...,74) and ... evn(9,27,...,81)and evn(1,2,3,10,11,12,19,20,21) and ...

for i in (0...8) evn(1 + i*9, 2 + i*9, ..., 9 + i*9)for i in (0..8) evn(1 + i, 10 + i, ..., 73 + i)for i in (0..2) for j in (0..2) evn(1 + i + j*9, 2 + i + j*9, ...)

INFORMATION SYSTEMS AND PROCESSES

DATA STRUCTURES

15

1 2 3 4 5 6 7 8 9

Row 2

Row 3

Row 4

Row 5

Row 6

Row 7

Row 8

Row 9

Row 1

Rowgroup 1

Rowgroup 2

Rowgroup 3

Columngroup 1

Columngroup 2

Columngroup 3

INFORMATION SYSTEMS AND PROCESSES

DATA STRUCTURES

-For each row r: evn(r)-For each c: evn(c)-For each column group cg

and for each row group rg: evn(every cell in cg and rg)

16

INFORMATION SYSTEMS AND PROCESSES

DATA STRUCTURE OF XSLT, XQUERY OR SCHEMATRON

17

INFORMATION SYSTEMS AND PROCESSES

MULTIDIMENSIONAL VIEW OF XBRL FACTS: THE ASPECT MODEL

A value

A concept: Incomes

A set of dimensions

– Standard

• Entity

• Time

– User defined (can be arranged in a hierarchical way)

• Country

• Market segment

Additional properties: unit and precision

18

t

Credit institution

Concept

100 € (prec 3)

DexiaDec 2007

Incomes

INFORMATION SYSTEMS AND PROCESSES 19

XBRL Formula Processor

Formula Author

INFORMATION SYSTEMS AND PROCESSES

BRIEF TUTORIAL(LEARN XBRL FORMULA IN 50

MINUTES)

20

INFORMATION SYSTEMS AND PROCESSES

BRIEF HISTORY OF THE FORMULAE SPECIFICATION

21

2007 2009

Nov 06Formula WGSet up

Jan 071º PWD

Jul 072º PWD

Dec 073º PWD

Mar 081º CR

Feb 084º PWD

Jun 08First implementations

Sep 08BE COREPFormulae in production

Jun 05FormulaeRequirements

2008

Dec 082º CR

Mar 09PR

Jun 09Final Rec ?

INFORMATION SYSTEMS AND PROCESSES

INPUT: VARIABLES AND FILTERS

To identify input data in a formula we use variables and filters:-Filters select slices and regions of our model:

-Concepts: Incomes, ...-Periods: 2008, 2007, ...-User dimensions: Country, ...

-Filters can be combined to select more specific data

22

A * B + C

INFORMATION SYSTEMS AND PROCESSES

OUTPUT: XPATH EXPRESSIONS

($a + $b) * 2.5abs($x + $y) = $z

XPath 2.0: W3C Recommendation (since January 2007)Expression language used by XSLT, XQuery and SchematronWe can combine:

Arithmetic expressionsLogical expressionsConditional expressions…

Defines a set of standard operators and functions:+, -, *, div, mod, =, !=, <, >, and, or, …abs, ceiling, floor, concat, upper-case, …

23

INFORMATION SYSTEMS AND PROCESSES

TYPES OF FORMULAE

Formulae to produce new facts from existing onesAssertions to verify a condition: true or false

Value assertionsExistence assertionsConsistency assertions

24

INFORMATION SYSTEMS AND PROCESSES

EXAMPLES

25

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 1

26

Two input variables:$assets:

Concept name: t:Assets

$liabEq:Concept name: p-cm-mr:NetPositionsShort

Test : “$assets = $liabEq”

“Assets“ equal to “Liabilities and Equity”

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 1: TECHNICAL REPRESENTATION

27

ValueAssertion@test = ““$assets = $liabEq”

FactVariable

Concept Name:t:Assets

FactVariable

Concept Name:t:liabEq

@name=“assets” @name=“liabEq”

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 2

28

Two input variables:$allPosShort (fallbackValue = 0):

Concept name: p-cm-mr:AllPositionsShort

$netPosShort:Concept name: p-cm-mr:NetPositionsShort

Test = “$allPosShort ge $netPosShort”

“All Positions Short“ greater or equal than “Net Positions Short”Assume zero for “All Positions” if not reported

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 2: TECHNICAL REPRESENTATION

29

ValueAssertion@test = ““$allPosShort ge $netPosShort”

FactVariable@fallbackValue=“0”

Concept Name:p-cm-mr:AllPositionsShort

FactVariable

Concept Name:p-cm-mr:NetPositionsShort

@name=“allPosShort” @name=“netPosShort”

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 3

30

Two input variables:$allPosShort (fallbackValue = 0):

Concept name: p-cm-mr:AllPositionsShort

$netPosShort (fallbackValue = 0):Concept name: p-cm-mr:NetPositionsShort

Test = “$allPosShort ge $netPosShort”

“All Positions Short“ greater or equal than “Net Positions Short”Assume zero for “All and Net Positions” if not reported

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 4A

31

Two input variables:$allPosShort :

Concept name: p-cm-mr:AllPositionsShortExplicit dimension: d-mr:MarketRiskDimension = d-mr:MRiskSAEQUTotal

$netPosShort :Concept name: p-cm-mr:NetPositionsShortExplicit dimension: d-mr:MarketRiskDimension = d-mr:MRiskSAEQUTotal

Test = “$allPosShort ge $netPosShort”

“All Positions Short“ greater or equal than “Net Positions Short”For Total Equities in Trading Book

INFORMATION SYSTEMS AND PROCESSES

COMBINING FILTERS

Two or more filters produce the “intersection” of desired values(they are combined using an logical “AND”)

Boolean filters can be used for more complex combinations:- OR filter- AND filter

The attribute “complement” in arcs to filters can be used to obtain the negation of the filter linked (this attribute has been assumed to be “false” in examples).

32

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 4B

33

A group filter:Explicit dimension: d-mr:MarketRiskDimension = d-mr:MRiskSAEQUTotal

Two input variables:$allPosShort :

Concept name: p-cm-mr:AllPositionsShort

$netPosShort :Concept name: p-cm-mr:NetPositionsShort

Test = “$allPosShort ge $netPosShort”

“All Positions Short“ greater or equal than “Net Positions Short”For Total Equities in Trading Book

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 5A

34

A group filter:Explicit dimension: d-mr:MarketRiskDimension

d-mr:MRiskSAEQUGeneralRiskd-mr:MRiskSAEQUSpecificRisk

Two input variables:$allPosShort :

Concept name: p-cm-mr:AllPositionsShort

$netPosShort :Concept name: p-cm-mr:NetPositionsShort

Test = “$allPosShort ge $netPosShort”

“All Positions Short“ greater or equal than “Net Positions Short”For General risk and for Specific risk

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 5B

35

Two input variables:$allPosShort :

Concept name: p-cm-mr:AllPositionsShortExplicit dimension: d-mr:MarketRiskDimension

d-mr:MRiskSAEQUGeneralRiskd-mr:MRiskSAEQUSpecificRisk

$netPosShort :Concept name: p-cm-mr:NetPositionsShortExplicit dimension: d-mr:MarketRiskDimension

d-mr:MRiskSAEQUGeneralRiskd-mr:MRiskSAEQUSpecificRisk

Test = “$allPosShort ge $netPosShort”

“All Positions Short“ greater or equal than “Net Positions Short”For General risk and for Specific risk

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 6

36

Two input variables:$capReq :

Concept name: p-cm-mr:MarketRiskCapitalRequirementsExplicit dimension: d-mr:MarketRiskDimension = d-mr:MRiskSAEQUTotal

$netPosShort :Concept name: p-cm-mr:NetPositionsShort

Test = “$netPosShort lt $capReq ”

Any “Net Positions Short“ less than “Cap Requirements for equities in trading books”

INFORMATION SYSTEMS AND PROCESSES

THE IMPLICIT FILTER

Three steps in the evaluation of a set of variables:Each variable is evaluated individually to obtain the list of all candidate values

$a = (a1, a2, a3)$b = (b1, b2)$c = (c1, c2)

The Cartesian product is obtained:

The implicit filter discards every combination that doesn’t verifies the following condition:

37

a1 a1 a1 a1 a2 a2 a2 a2 a3 a3 a3 a3

b1 b1 b2 b2 b1 b1 b2 b2 b1 b1 b2 b2

c1 c2 c1 c2 c1 c2 c1 c2 c1 c2 c1 c2

INFORMATION SYSTEMS AND PROCESSES

THE IMPLICIT FILTER

38

For every pair of variables of a formula / assertion, the value of each aspect that is not explicitly filtered* by a variable filter must be the same

So, combinations that mix different values for aspects not explicitly filtered are not allowed

More precisely: aspects not covered. An aspect is covered for a variable if that variables has a variable filter for that aspect with the attribute @cover with a value of true. In this tutorial, it is assumed that every variable filter has this attribute set to true. Group filters don’t cover aspects. So, group filters are ignored by this rule

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 7

39

$genRisk :Exp dimension: MarketRiskDimension = d-mr:MRiskSAEQUGeneralRisk

$exc (fallbackValue = 0) :Exp dimension: MarketRiskDimension = d-mr:MRiskSAEQUExchangeTradedStockIndexFuturesBroadlyDiversifiedSubjectParticularApproach

$other (fallbackValue = 0):Exp dimension: MarketRiskDimension = d-mr:MRiskSAEQUOtherEquitiesThanExchangeTradedStockIndexFuturesBroadlyDiversified

Test = “$genRisk = $exc + $other”

“General risk” (1) must be equal to the addition of 1.1 and 1.2For every concept

(zero assumed if missing)

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 8

40

$total :Exp dimension: MarketRiskDimension = MRiskSAEQUTotal

$breakdown* (fallbackValue = 0):Exp dimension: MarketRiskDimension = d-mr:MRiskSAEQUGeneralRisk … d-mr:MRiskSAEQUOtherNonDeltaRisksOptions

Test = “$total = sum($breakdown)”

Total “Equities in trading book” equal to the sum of its breakdownFor every concept

(zero assumed if missing)

INFORMATION SYSTEMS AND PROCESSES

XPATH DATA MODEL

Atomic values: a number, a string, ...1“Hello!”

Sequences(1, 5, 10)(“Foo”, “bar”)

Nodes

Some operators and functions apply to atomic values:2 + 5abs(-2)

Some operators / functions apply to sequences:sum((2, 3, 5))max((10, 20, 30))

41

INFORMATION SYSTEMS AND PROCESSES

BIND AS SEQUENCE ATTRIBUTE

The attribute “bindAsSequence” in a variable is used to make the difference between:

- Variables to be bound to single values on each evaluation- Variables to be bound to sequences of values

42

Use sequence functions/operators with sequence variablesUse atomic/node functions/ operators with simple variables

Sequence variables are to be used with filters that select more than one value. Only aspects explicitly filtered* for these variables are mixed in one evaluation

*More precisely: only aspects covered

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 8B

43

$total :Exp dimension: MarketRiskDimension = MRiskSAEQUTotal

$breakdown* (fallbackValue = 0):Exp dimension: MarketRiskDimension =

child of MRiskSAEQUTotal

Test = “$total = sum($breakdown)”

Total “Equities in trading book” equal to the sum of its breakdownFor every concept

(zero assumed if missing)

INFORMATION SYSTEMS AND PROCESSES

AXIS IN EXPLICIT DIMENSION FILTERS

AXIS POSSIBLE VALUES:child:

France, Spain, Belgium

descentant:

France, Paris, Marseille, Lyon

Spain, ...

Belgium, ...

child-or-self:

Europe, France, Spain, Belgium

descendant-or-self:

Europe

France, Paris, Marseille, Lyon

Spain, ...

Belgium, ...

44

World

Europe Asia ...

France Spain Belgium

Paris Marseille Lyon

The tree is selected choosing one extended link role and one arc role

COREP and FINREP have hierarchies for every dimension in the default extended link role and domain-member arc role

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 9

45

test = “$total = sum($breakdown)”

Group filter:Concept name: p-cm-mr:AllPositionsLong

$total :Exp dimension: MarketRiskDimension = MRiskSAEQUTotal (axis=“child-or-self”)

$breakdown* (fallbackValue = 0):Exp dimension: MarketRiskDimension = child of $total

Total “Equities in trading book” equal to the sum of its breakdown, and “General Risk” equal to the sum of its

breakdown, and ...For “All Positions Long”

INFORMATION SYSTEMS AND PROCESSES

DIMENSION FILTERS

Dimension:Using its name (@qname)Using an XPath expression that returns a name (@qnameExpression)

A list of members:Using its name (@qname)Using an XPath expression that returns a name (@qnameExpression)Using a reference to another variable (@variable)

+ (optional) an axis: Axis valueExtended link roleArc role

46

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 10A

47

$capReq : Concept name: p-cm-ca:MarketRiskCapitalRequirements $netPosSub: Concept name: p-cm-mr:NetPositionsSubjectToCapitalCharge $allPositions*:

Concept name: p-cm-mr:AllPositionsLongp-cm-mr:AllPositionsShor t

test = “if (sum($allPositions) gt 100000) then $capReq = $netPosSub * 0.8 else true()”

“Capital requirements” equal to “Net positions subject to capital charge” multiplied by a factor only if “All

positions long” + “All positions short” is greater than a certain threshold

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 10B

48

test = “$capReq = $netPosSub * 0.8”

$capReq : Concept name: p-cm-ca:MarketRiskCapitalRequirements $netPosSub: Concept name: p-cm-mr:NetPositionsSubjectToCapitalCharge $allPositions*:

Concept name: p-cm-mr:AllPositionsLongp-cm-mr:AllPositionsShor t

PRECONDITION: test = “sum($allPositions) gt 1000000”

“Capital requirements” equal to “Net positions subject to capital charge” multiplied by a factor only if “All

positions long” + “All positions short” is greater than a certain threshold

INFORMATION SYSTEMS AND PROCESSES

PRECONDITIONS

Four steps in the evaluation of a set of variables:Each variable is evaluated individually to obtain the list of all candidate valuesThe Cartesian product is obtainedThe implicit filter discards combinationsOnly combinations that verifies every precondition are considered

49

A potential evaluation of an assertion that doesn’t verify a precondition is neither satisfied nor not satisfied:

it is not evaluated

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 10C

50

test = “$capReq = $netPosSub * $factor”

$capReq : Concept name: p-cm-ca:MarketRiskCapitalRequirements $netPosSub: Concept name: p-cm-mr:NetPositionsSubjectToCapitalCharge $allPositions*:

Concept name: p-cm-mr:AllPositionsLongp-cm-mr:AllPositionsShor t

PRECONDITION: test = “sum($allPositions) gt $threshold”Parameters: $threshold = “1000000” $factor = “0.8”

“Capital requirements” equal to “Net positions subject to capital charge” multiplied by a factor only if “All

positions long” + “All positions short” is greater than a certain threshold

INFORMATION SYSTEMS AND PROCESSES

PARAMETERS

Parameters variables that can be used inside XPath expressionsParameters can be given a default valueParameters can be given a value “from the outside”:

Using a graphical toolUsing an API...

They have a name so that they can be referred “from the outside”

51

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 11A: BELGIUM ROUNDING APPROACH

52

test = “abs($total - sum($breakdown) ) le $threshold”

Group filter:Concept name: p-cm-mr:AllPositionsLong

$total :Exp dimension: MarketRiskDimension = MRiskSAEQUTotal (axis=“child-or-self”)

$breakdown* (fallbackValue = 0):Exp dimension: MarketRiskDimension = child of $total

Parameter $threshold = 1

Total “Equities in trading book” equal to the sum of its breakdown, and “General Risk” equal to the sum of its

breakdown, and ...For “All Positions Long” considering rounding error

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 11B: SPANISH ROUNDING APPROACH

53

test = “abs($total - sum($breakdown) ) le $threshold”

Group filter:Concept name: p-cm-mr:AllPositionsLong

$total :Exp dimension: MarketRiskDimension = MRiskSAEQUTotal (axis=“child-or-self”)

$breakdown* (fallbackValue = 0):Exp dimension: MarketRiskDimension = child of $total

General variable: $threshold = “1000 * (count($breakdown) + 1) div 2”

Total “Equities in trading book” equal to the sum of its breakdown, and “General Risk” equal to the sum of its

breakdown, and ...For “All Positions Long” considering rounding error

INFORMATION SYSTEMS AND PROCESSES

GENERAL VARIABLES

Its value is the result of evaluating an XPath expression

They can make reference to other variables/parameters in the assertion / formula

Can be used for intermediate values that are used repeatedly in the assertion / formla

54

INFORMATION SYSTEMS AND PROCESSES

VARIABLES/PARAMETERS COMPARISON TABLE

Fact Variables Parameters General variables

Aim Bind facts in instance Parameterize the behaviour of some formula/assertions

Intermediate results derived from other variablesIterations in complex formulae

Use filters Yes No No

Implicit filter applies

Yes No No

Can be given values from outside the processor

No Yes May (using external functions)

Can have a fallback value

Yes No No

Can bind as sequence / single

Yes No Yes

Fixed value throughout the processing

No Yes No

References to other variables

Yes (through filters) No Yes55

INFORMATION SYSTEMS AND PROCESSES

TECHNICAL REPRESENTATION

56

ValueAssertion@test = ““$a ge $b * $c”

@aspectModel = “dimensional”@implicitFiltering = “true”

Fact Variable@fallbackValue=“0”

@bindAsSequence=“false”

Variable filter

@name=“a”

@name=“b”Parameter@bindAsSequence=“false”@name = “MyThreshold”

Group filter

@complement = “false”

@complement = “false”@cover = “true”

General Variable@select=“$a * $b”

@bindAsSequence=“false”

0..n

@name=“c”

0..n 0..n

0..n

0..n

Precondition@test=“...”

0..n

INFORMATION SYSTEMS AND PROCESSES

ATTRIBUTES GUIDANCE

Always use (no exceptions):@implicitFiltering = “true”@aspectModel = “dimensional”

Always use (except for very advanced formulae):@cover = “true”

Most of the times:@complement = “false”

That leaves:@name for variables and parameters arcs@bindAsSequence for fact variables and parameters@fallbackValue for fact variablesSpecific attributes of other objects:

@test in preconditions@name and select in parameters@select in general variables...

57

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 12

58

test = “false()”

$capReq : Concept name: p-cm-ca:MarketRiskCapitalRequirements Exp dimension: MarketRiskDimension = MRiskSAEQUOtherNonDeltaRisksOptions

Check that “Capital Requirements” for “Other non-delta risks for options” is not reported

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 13

59

test = “true()”

$capReq : Concept name: p-cm-ca:MarketRiskCapitalRequirements Exp dimension: MarketRiskDimension = MRiskSAEQUOtherNonDeltaRisksOptions

Check that “Capital Requirements” for “Other non-delta risks for options” must be reported

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 14

60

Existence Assertion$capReq :

Concept name: p-cm-ca:MarketRiskCapitalRequirements Exp dimension: MarketRiskDimension = MRiskSAEQUOtherNonDeltaRisksOptions

Check that “Capital Requirements” for “Other non-delta risks for options” must be reported

INFORMATION SYSTEMS AND PROCESSES

EXISTENCE ASSERTIONS

Value assertions are evaluated 0, 1 or n times, depending on the number of valid combinations for its variables given an input instance document

Existence assertions are always evaluated once.

An existence assertion is a test on the number of valid evaluations of its variable set

If the test attribute is not provided, it is tested that at least there is one valid evaluation of its variable set

The number of evaluations is referenced in the test expression by a dot

61

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 15

62

Existence Assertion: test = “. ge 2”$capReq :

Concept name: p-cm-ca:MarketRiskCapitalRequirements Exp dimension: MarketRiskDimension = MRiskSAEQUOtherNonDeltaRisksOptions

Check that values for “Capital Requirements” for “Other non-delta risks for options” are reported for at least 2

national markets

INFORMATION SYSTEMS AND PROCESSES

FORMULAE

The input of a formula is specified like the input of a value assertionBut additional information is needed to provide the output:

Value (ej: 100.000)Concept (ej: p-cm-ca:CapitalRequirements)Entity/scheme (ej: ES0182, MFI)Period (ej: January first 2008)User dimensions (ej: National Market = Spanish)For numeric values:

Units (ej: Euros)Decimals / precision attribute (ej: decimals = -3)

63

INFORMATION SYSTEMS AND PROCESSES

FORMULAE

Value must always be explicitly definedDecimals/precision have a default value (precision 0)Aspects (concept, entity, period, user dimensions, units, ...) can be:

Explicitly definedDefined in terms of input facts (source)

64

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 16: SIMPLE FORMULA

65

Input :$netPosSubCapCh:

Concept name: p-cm-mr:NetPositionsSubjectToCapitalCharge $decimals: Parameter

Output:value = “$netPosSubCapCh * 0.8”decimals = “$decimals”Source = “netPosSubCapCh”Concept name: p-cm-ca:MarketRiskCapitalRequirements

“Capital requirements” can be calculated as “Net positions subject to capital charge” multiplied by 0.8

Aspects not explicitly expressed in the output are “copied” from the source: - Unit - Period - Entity ...

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 17: SIMPLE FORMULA WITH FALLBACK

66

Input :$shortNet (fallback value = 0):

Concept name: p-cm-mr:NetPositionsLong$longNet (fallback value = 0):

Concept name: p-cm-mr:NetPositionsShort

Output:value = “$shortNet + $longNet”decimals = “$decimals”Source = “$shortNet”Concept name p-cm-mr:NetPositionsSubjectToCapitalCharge

“Net positions subject to capital charge” calculated asthe addition of short and long net positions

(zero assumed if not reported)

If the source variable falls back, aspectscannot be obtained. The fallback value is a number !!!The processor will raise an error

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 17B: SIMPLE FORMULA WITH FALLBACK

67

Input :$shortNet (fallback value = 0):

Concept name: p-cm-mr:NetPositionsLong$longNet (fallback value = 0):

Concept name: p-cm-mr:NetPositionsShort

Output:value = “$shortNet + $longNet”decimals = “$decimals”Source = “formula:uncovered”Concept name p-cm-mr:NetPositionsSubjectToCapitalCharge

“Net positions subject to capital charge” calculated asthe addition of short and long net positions

(zero assumed if not reported)

INFORMATION SYSTEMS AND PROCESSES

SOURCE FORMULA:UNCOVERED

The “formula:uncovered” is a virtual variable which combines every aspect not explicitly filtered in the input)

Because of the implicit filter, every uncovered aspect must have the same value.

If an aspect is covered in every input variable, it must be explicitly defined

68

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 18: SHOWING FORMULA:UNCOVERED

69

Input :$allLong (fallback value = 0):

Concept name: p-cm-mr:AllPositionsLong$reduction (fallback value = 0):

Concept name: p-cm-mr:ReductionEffectUnderwritingPositionsExp dimension: MarketRiskDimension = MRiskSAEQUTotal

Output:value = “$allLong + $reduction”decimals = “$decimals”Source = “formula:uncovered”Concept name p-cm-mr:NetPositionsLong

“Net positions long” calculated as “all positions long” plus “Reduction effect for total equities”

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 19: MIXING UNITS

70

Input :$netPositionsSubhCapCh (fallback value = 0):

Concept name: p-cm-mr:NetPositionsSubjectToCapitalCharge $ratio (fallback value = 0):

Concept name: p-cm-mr:CapitalChargeRatio

Output:value = “$netPositionsSubhCapCh”decimals = “$decimals”Source = “formula:uncovered”Concept name p-cm-ca:MarketRiskCapitalRequirements

“Capital requirements” calculated as “net positions subject to capital charge” multiplied by

“risk capital charge”

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 19B: MIXING UNITS

71

Input :$netPositionsSubhCapCh (fallback value = 0):

Concept name: p-cm-mr:NetPositionsSubjectToCapitalCharge $ratio (fallback value = 0):

Concept name: p-cm-mr:CapitalChargeRatioUnit filter: pure

Output:value = “$netPositionsSubhCapCh”decimals = “$decimals”Source = “formula:uncovered”Concept name p-cm-ca:MarketRiskCapitalRequirements

“Capital requirements” calculated as “net positions subject to capital charge” multiplied by

“risk capital charge”

INFORMATION SYSTEMS AND PROCESSES

FORMULA GUIDELINE

• Define input variables• Try to use group filters• Use formula:uncovered as source• Give a explicit value to those aspects that are explicitly filtered on every input variable

72

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 20

73

Input:$exc (fallbackValue = 0) :

Exp dimension: MarketRiskDimension = MRiskSAEQUExchangeTraded...Concept name p-cm-ca:MarketRiskCapitalRequirements

$other (fallbackValue = 0):Exp dimension: MarketRiskDimension = RiskSAEQUOtherEquitiesThan… Concept name p-cm-ca:MarketRiskCapitalRequirements

Output:Value: “$exc + $other”Source: “formula:uncovered”Exp dimension: MarketRiskDimension = d-mr:MRiskSAEQUGeneralRisk Concept name p-cm-ca:MarketRiskCapitalRequirements

“Capital requirement” for “General risk” calculated as“Capital requirements for exchange ...(1.1)” plus

“Capital requirements for other ...(1.2)”

INFORMATION SYSTEMS AND PROCESSES

EXAMPLE 20

74

Input:Group filter: Concept name p-cm-ca:MarketRiskCapitalRequirements

$exc (fallbackValue = 0) :Exp dimension: MarketRiskDimension = MRiskSAEQUExchangeTraded...

$other (fallbackValue = 0):Exp dimension: MarketRiskDimension = RiskSAEQUOtherEquitiesThan…

Output:Value: “$exc + $other”Source: “formula:uncovered”Exp dimension: MarketRiskDimension = d-mr:MRiskSAEQUGeneralRisk

“Capital requirement” for “General risk” calculated as“Capital requirements for exchange ...(1.1)” plus

“Capital requirements for other ...(1.2)”

INFORMATION SYSTEMS AND PROCESSES

CONSISTENCY ASSERTIONS

Value assertions can be used to check the quality of data at the supervisor:

A = B * C ( “=“ means “must be equal, if not, raise an error” )

Formulae can be used to derive data from basic information at the supervised institution:

A = B * C ( “=“ means “the left part is obtained from the right part” )

There is a lot in common between these two rules... Let’s take advantage

75

INFORMATION SYSTEMS AND PROCESSES

CONSISTENCY ASSERTIONS

A consistency assertion is an assertion based on a formulaTest that the calculated results are consistent with the ones in the input instance document

Consistency assertion can include attributes to consider rounding errors:

Absolute acceptance radius: Defines an interval in absolute termsI.e: 1000

Relative acceptance radius: Defines an interval proportional to that of the inputI.e: 5%

This way, the same formula can be reused by the sender of the information to obtain the required data and by the receiver, to check it.

76

INFORMATION SYSTEMS AND PROCESSES

A LOT OF FILTERS AVAILABLE

Concept aspect:By name By period-typeBy balance attributeBy custom-attributeBy data-type...

Dimensions:Explicit dimensionsTyped dimensions

General filters:ValuePrecision....

Unit:Single measureGeneral measure

Period:GeneralPeriod-startPeriod-end Period-instantForever filterInstant-duration

TupleEntitySegment / scenario...

77

INFORMATION SYSTEMS AND PROCESSES

RESOURCES

Formula specification:http://www.xbrl.org/SpecCRs/

XPath specification:http://www.w3.org/TR/xpath20/

Xpath functions and operators:http://www.w3.org/TR/xquery-operators/

Herm Fischer’s Formulae Tutorial:http://herm.ws/XBRL/files/docs/FormulaTutorial.ppt

78

INFORMATION SYSTEMS AND PROCESSES

BANK OF SPAIN PROJECT DETAILS

79

INFORMATION SYSTEMS AND PROCESSES

NEXT STEPS

80

INFORMATION SYSTEMS AND PROCESSES

NEXT STEPS: CROSS INSTANCE VALIDATION

The problem: Validations with documents received in previous periods

E.g.: check abrupt changes of certain conceptsUse database information for some validations

E.g.: validations that take into account interest rates

81

INFORMATION SYSTEMS AND PROCESSES

Database

$interest-rate = “db:interest-rate($year, …)”

JAV

A / .N

ET

NEXT STEPS: CROSS INSTANCE VALIDATION

The solution: General variables and parameters+ XPath external functions

82

XBRL Processor

XPath processor

INFORMATION SYSTEMS AND PROCESSES

NEXT STEPS: FORMULA PATTERNS

Replace most repetitive formulae that follow a common pattern by a single formulae based on DTS information

Reduce number of formulaeImprove maintainability

83

finrep:Assets

finrep:Cash

finrep:CashEquivalents

greater-than

greater-than

INFORMATION SYSTEMS AND PROCESSES

NEXT STEPS: USER DEFINED FUNCTIONS

Simplify repetitive fragments of XPath expressionsE.g.: Threshold of a summation (because of rounding errors)

(number of terms + 1) / 2 * 1000

A 1 + A2 + … An < X considering rounding errors

84

sum($seqA) lt $x + (count($seqA) + 1) * 500

sum($seqA) lt $x + sumThreshold($seqA)

Small new specification (no changes in the core part)

INFORMATION SYSTEMS AND PROCESSES

NEXT STEPS: BETTER ERROR REPORTING

Current error reporting solution:Generic labels linked to assertions

More complex messages:

85

Total assets reported ( 1,200,000 € ) are 200% higher than the value reported last year

Small new specification (no changes in the core part)

INFORMATION SYSTEMS AND PROCESSES

NEXT CHALLENGES

Formula chaining

Advanced control of assertions firing

Very large instance validation

New filters

86

INFORMATION SYSTEMS AND PROCESSES

BENEFITS

Powerful and flexible solutionBetter maintainability

Striking reduction in the number of rules to maintain:≈ 5300 business rules expressed using ≈ 700 XBRL Formulas

Reusability between different actorsRegulators and credit institutions (consistency assertions)Different countries:

European rulesDomestic ones

Data available sooner and improved qualityStandard and formal language to express formulaeValidation at the source of information

Market tools availableSupport from software vendors

87

INFORMATION SYSTEMS AND PROCESSES

QUESTIONS

88

INFORMATION SYSTEMS AND PROCESSES

THANKS FOR YOUR ATTENTION