Why a new language
This presentation is the property of its rightful owner.
Sponsored Links
1 / 68

Why a new language? PowerPoint PPT Presentation


  • 55 Views
  • Uploaded on
  • Presentation posted in: General

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 Easy and intuitive Maintainable Extensible. Why a new language?. Niklaus Wirth

Download Presentation

Why a new language?

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Why a new language

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

    • Easy and intuitive

    • Maintainable

    • Extensible


Why a new language1

Why a new language?

  • Niklaus Wirth

    • Designer of programming languages like Pascal, Euler or Modula

    • Author of the book

    • “Algorithms + Data Structures = Programs”


Data structures

DATA structures


Data structures1

DATA structures

...

1

2

3

4

78

79

80

5

6

7

8

9

10

11

12

81

evn : checks that a list of numbers 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, ...)


Data structures2

DATA structures

Column

group 1

Column

group 2

Column

group 3

2

1

9

8

3

6

5

4

7

Row 1

Row

group 1

Row

group 2

Row 4

Row 9

Row 6

Row 7

Row 5

Row 3

Row 2

Row 8

Row

group 3


Data structures3

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)


Data structure of xslt xquery or schematron

Data structure of XSLT, Xquery or schematron


Data structure of xbrl formulae

Data structure of XBRL Formulae


Multidimensional view of xbrl facts the aspect model

Concept

Incomes

100 € (prec 3)

t

Dec 2007

Dexia

Credit institution

Multidimensional view of XBRL facts: the aspect model

  • A value

  • A concept: Incomes

  • A set of dimensions

    • Standard

      • Entity

      • Time

    • User defined

      • Titulizations

      • Market

  • Additional properties: unit and precision


Input variables and filters

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

A * B + C


Output xpath expressions

OUTPUT: XPAth expressions

  • ($a + $b) * 2.5

  • abs($x + $y) = $z

  • XPath 2.0: W3C Recommendation (since January 2007)‏

  • Expression language used by XSLT, XQuery and Schematron

  • We can combine:

    • Arithmetic expressions

    • Logical expressions

    • Conditional expressions

  • Defines a set of standard operators and functions:

    • +, -, *, div, mod, =, !=, <, >, and, or, …

    • abs, ceiling, floor, concat, upper-case, …


Types of formulae

Types of FormulaE

  • Formulae to produce new facts from existing ones

  • Assertions to verify a condition: true or false

    • Value assertions

    • Existence assertions

    • Consistency assertions


Examples

EXAMPLES


Example 1

EXAMPLE 1

“All Positions Short“ greater or equal than “Net Positions Short”

  • Two input variables:

  • $allPosShort:

    • Concept name: p-cm-mr:AllPositionsShort

  • $netPosShort:

    • Concept name: p-cm-mr:NetPositionsShort

  • Test = “$allPosShortge $netPosShort”


Example 1 technical representation

Example 1: technical representation

ValueAssertion

@test = ““$allPosShortge $netPosShort”

@name=“netPosShort”

@name=“allPosShort”

FactVariable

FactVariable

Concept Name:

p-cm-mr:AllPositionsShort

Concept Name:

p-cm-mr:NetPositionsShort


Example 2

EXAMPLE 2

“All Positions Short“ greater or equal than “Net Positions Short”

Assume zero for “All Positions” if not reported

  • Two input variables:

  • $allPosShort (fallbackValue = 0):

    • Concept name: p-cm-mr:AllPositionsShort

  • $netPosShort:

    • Concept name: p-cm-mr:NetPositionsShort

  • Test = “$allPosShortge $netPosShort”


Example 2 technical representation

Example 2: technical representation

ValueAssertion

@test = ““$allPosShortge $netPosShort”

@name=“netPosShort”

@name=“allPosShort”

FactVariable

FactVariable

@fallbackValue=“0”

Concept Name:

p-cm-mr:AllPositionsShort

Concept Name:

p-cm-mr:NetPositionsShort


Example 3

EXAMPLE 3

“All Positions Short“ greater or equal than “Net Positions Short”

Assume zero for “All and Net Positions” if not reported

  • Two input variables:

  • $allPosShort (fallbackValue = 0):

    • Concept name: p-cm-mr:AllPositionsShort

  • $netPosShort (fallbackValue = 0):

    • Concept name: p-cm-mr:NetPositionsShort

  • Test = “$allPosShortge $netPosShort”


Example 4a

EXAMPLE 4A

“All Positions Short“ greater or equal than “Net Positions Short”

For Total Equities in Trading Book

  • Two input variables:

  • $allPosShort :

    • Concept name: p-cm-mr:AllPositionsShort

    • Explicit dimension: d-mr:MarketRiskDimension= d-mr:MRiskSAEQUTotal

  • $netPosShort :

    • Concept name: p-cm-mr:NetPositionsShort

    • Explicit dimension: d-mr:MarketRiskDimension = d-mr:MRiskSAEQUTotal

  • Test = “$allPosShortge $netPosShort”


Combining filters

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).


Example 4b

EXAMPLE 4B

“All Positions Short“ greater or equal than “Net Positions Short”

For Total Equities in Trading Book

  • 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 = “$allPosShortge $netPosShort”


Example 5a

EXAMPLE 5A

“All Positions Short“ greater or equal than “Net Positions Short”

For General risk and for Specific risk

  • A group filter:

    • Explicit dimension: d-mr:MarketRiskDimension

    • d-mr:MRiskSAEQUGeneralRisk

    • d-mr:MRiskSAEQUSpecificRisk

  • Two input variables:

  • $allPosShort :

    • Concept name: p-cm-mr:AllPositionsShort

  • $netPosShort :

    • Concept name: p-cm-mr:NetPositionsShort

  • Test = “$allPosShortge $netPosShort”


Example 5b

EXAMPLE 5B

“All Positions Short“ greater or equal than “Net Positions Short”

For General risk and for Specific risk

  • Two input variables:

  • $allPosShort :

    • Concept name: p-cm-mr:AllPositionsShort

    • Explicit dimension: d-mr:MarketRiskDimension

    • d-mr:MRiskSAEQUGeneralRisk

    • d-mr:MRiskSAEQUSpecificRisk

  • $netPosShort :

    • Concept name: p-cm-mr:NetPositionsShort

    • Explicit dimension: d-mr:MarketRiskDimension

    • d-mr:MRiskSAEQUGeneralRisk

    • d-mr:MRiskSAEQUSpecificRisk

  • Test = “$allPosShortge $netPosShort”


Example 6

EXAMPLE 6

Any “Net Positions Short“ less than

“Cap Requirements for equities in trading books”

  • Two input variables:

  • $capReq :

    • Concept name: p-cm-mr:MarketRiskCapitalRequirements

    • Explicit dimension: d-mr:MarketRiskDimension = d-mr:MRiskSAEQUTotal

  • $netPosShort :

    • Concept name: p-cm-mr:NetPositionsShort

  • Test = “$netPosShortlt $capReq ”


The implicit filter

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:


The implicit filter1

The implicit filter

  • 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


Example 7

EXAMPLE 7

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

For every concept

(zero assumed if missing)

  • $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”


Example 8

EXAMPLE 8

Total “Equities in trading book” equal to the sum of its breakdown

For every concept

(zero assumed if missing)

  • $total :

    • Exp dimension: MarketRiskDimension= MRiskSAEQUTotal

  • $breakdown* (fallbackValue = 0):

    • Exp dimension: MarketRiskDimension=

    • d-mr:MRiskSAEQUGeneralRisk

    • d-mr:MRiskSAEQUOtherNonDeltaRisksOptions

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


Xpath data model

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 + 5

    • abs(-2)

  • Some operators / functions apply to sequences:

    • sum((2, 3, 5))

    • max((10, 20, 30))


Bind as sequence attribute

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

Use sequence functions/operators with sequence variables

Use 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


Example 8b

EXAMPLE 8b

Total “Equities in trading book” equal to the sum of its breakdown

For every concept

(zero assumed if missing)

  • $total :

    • Exp dimension: MarketRiskDimension= MRiskSAEQUTotal

  • $breakdown* (fallbackValue = 0):

    • Exp dimension: MarketRiskDimension=

    • child ofMRiskSAEQUTotal

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


Axis in explicit dimension filters

AXIS IN EXPLICIT Dimension filters

World

  • 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, ...

Asia

...

Europe

Spain

France

Belgium

Marseille

Lyon

Paris

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


Example 9

EXAMPLE 9

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”

  • 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


Dimension filters

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 value

    • Extended link role

    • Arc role


Example 10a

EXAMPLE 10a

“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

  • $capReq : Concept name: p-cm-ca:MarketRiskCapitalRequirements

  • $netPosSub: Concept name: p-cm-mr:NetPositionsSubjectToCapitalCharge

  • $allPositions*:

    • Concept name:

    • p-cm-mr:AllPositionsLong

    • p-cm-mr:AllPositionsShor t

  • test = “if (sum($allPositions) gt 100000)

  • then $capReq = $netPosSub * 0.8

  • else true()”


Example 10b

EXAMPLE 10B

“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

  • 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:AllPositionsLong

    • p-cm-mr:AllPositionsShor t

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


Preconditions

Preconditions

  • Four steps in the evaluation of a set of variables:

    • Each variable is evaluated individually to obtain the list of all candidate values

    • The Cartesian product is obtained

    • The implicit filter discards combinations

    • Only combinations that verifies every precondition are considered

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

it is not evaluated


Example 10c

EXAMPLE 10C

“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

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

  • $capReq : Concept name: p-cm-ca:MarketRiskCapitalRequirements

  • $netPosSub: Concept name: p-cm-mr:NetPositionsSubjectToCapitalCharge

  • $allPositions*:

    • Concept name:

    • p-cm-mr:AllPositionsLong

    • p-cm-mr:AllPositionsShor t

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

  • Parameters:

  • $threshold = “1000000”

  • $factor = “0.8”


Parameters

parameters

  • Parameters variables that can be used inside XPath expressions

  • Parameters can be given a default value

  • Parameters can be given a value “from the outside”:

    • Using a graphical tool

    • Using an API

    • ...

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


Example 11a belgium rounding approach

EXAMPLE 11a: Belgium rounding approach

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

  • 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


Example 11b spanish rounding approach

EXAMPLE 11B: Spanish rounding approach

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

  • 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”


General variables

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


Variables parameters comparison table

Variables/parameters comparison table


Technical representation

technical representation

ValueAssertion

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

@aspectModel = “dimensional”

@implicitFiltering = “true”

@complement = “false”

0..n

Group filter

@name=“a”

0..n

@name=“c”

Parameter

@bindAsSequence=“false”

@name = “MyThreshold”

@name=“b”

0..n

0..n

Fact Variable

@fallbackValue=“0”

@bindAsSequence=“false”

General Variable

@select=“$a * $b”

@bindAsSequence=“false”

0..n

Precondition

@test=“...”

@complement = “false”

@cover = “true”

0..n

Variable filter


Attributes guidance

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

    • @bindAsSequencefor fact variables and parameters

    • @fallbackValuefor fact variables

    • Specific attributes of other objects:

      • @test in preconditions

      • @name and select in parameters

      • @select in general variables

      • ...


Example 12

EXAMPLE 12

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

  • test = “false()”

  • $capReq :

  • Concept name: p-cm-ca:MarketRiskCapitalRequirements

  • Exp dimension: MarketRiskDimension = MRiskSAEQUOtherNonDeltaRisksOptions


Example 13

EXAMPLE 13

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

  • test = “true()”

  • $capReq :

  • Concept name: p-cm-ca:MarketRiskCapitalRequirements

  • Exp dimension: MarketRiskDimension = MRiskSAEQUOtherNonDeltaRisksOptions


Example 14

EXAMPLE 14

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

  • Existence Assertion

  • $capReq :

  • Concept name: p-cm-ca:MarketRiskCapitalRequirements

  • Exp dimension: MarketRiskDimension = MRiskSAEQUOtherNonDeltaRisksOptions


Existence assertions

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


Example 15

EXAMPLE 15

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

  • Existence Assertion: test = “. ge 2”

  • $capReq :

  • Concept name: p-cm-ca:MarketRiskCapitalRequirements

  • Exp dimension: MarketRiskDimension = MRiskSAEQUOtherNonDeltaRisksOptions


Formulae

Formulae

  • The input of a formula is specified like the input of a value assertion

  • But 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)


Formulae1

Formulae

  • Value must always be explicitly defined

  • Decimals/precision have a default value (precision 0)

  • Aspects (concept, entity, period, user dimensions, units, ...) can be:

    • Explicitly defined

    • Defined in terms of input facts (source)


Example 16 simple formula

EXAMPLE 16: Simple formula

“Capital requirements” can be calculated as

“Net positions subject to capital charge” multiplied by 0.8

  • 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

Aspects not explicitly expressed in the output are “copied” from the source:

- Unit

- Period

- Entity ...


Example 17 simple formula with fallback

EXAMPLE 17: Simple formula with fallback

“Net positions subject to capital charge” calculated as

the addition of short and long net positions

(zero assumed if not reported)

  • 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

If the source variable falls back, aspects

cannot be obtained.

The fallback value is a number !!!

The processor will raise an error


Example 17b simple formula with fallback

EXAMPLE 17B: Simple formula with fallback

“Net positions subject to capital charge” calculated as

the addition of short and long net positions

(zero assumed if not reported)

  • 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


Source formula uncovered

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


Example 18 showing formula uncovered

EXAMPLE 18: showing formula:uncovered

“Net positions long” calculated as “all positions long”

plus “Reduction effect for total equities”

  • Input :

  • $allLong (fallback value = 0):

    • Concept name: p-cm-mr:AllPositionsLong

  • $reduction (fallback value = 0):

    • Concept name: p-cm-mr:ReductionEffectUnderwritingPositions

    • Exp dimension: MarketRiskDimension = MRiskSAEQUTotal

  • Output:

    • value = “$allLong + $reduction”

    • decimals = “$decimals”

    • Source = “formula:uncovered”

    • Concept namep-cm-mr:NetPositionsLong


Example 19 mixing units

EXAMPLE 19: MIXING UNITS

“Capital requirements” calculated as

“net positions subject to capital charge” multiplied by

“risk capital charge”

  • 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 namep-cm-ca:MarketRiskCapitalRequirements


Example 19b mixing units

EXAMPLE 19B: MIXING UNITS

“Capital requirements” calculated as

“net positions subject to capital charge” multiplied by

“risk capital charge”

  • Input :

  • $netPositionsSubhCapCh (fallback value = 0):

    • Concept name: p-cm-mr:NetPositionsSubjectToCapitalCharge

  • $ratio (fallback value = 0):

    • Concept name: p-cm-mr:CapitalChargeRatio

    • Unitfilter: pure

  • Output:

    • value = “$netPositionsSubhCapCh”

    • decimals = “$decimals”

    • Source = “formula:uncovered”

    • Concept namep-cm-ca:MarketRiskCapitalRequirements


Formula guideline

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


Example 20

EXAMPLE 20

“Capital requirement” for “General risk” calculated as

“Capital requirements for exchange ...(1.1)” plus

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

  • Input:

  • $exc (fallbackValue = 0) :

    • Exp dimension: MarketRiskDimension = MRiskSAEQUExchangeTraded...

    • Concept namep-cm-ca:MarketRiskCapitalRequirements

  • $other (fallbackValue = 0):

    • Exp dimension: MarketRiskDimension = RiskSAEQUOtherEquitiesThan…

    • Concept namep-cm-ca:MarketRiskCapitalRequirements

  • Output:

    • Value: “$exc + $other”

    • Source: “formula:uncovered”

    • Exp dimension: MarketRiskDimension = d-mr:MRiskSAEQUGeneralRisk

    • Concept namep-cm-ca:MarketRiskCapitalRequirements


Example 201

EXAMPLE 20

“Capital requirement” for “General risk” calculated as

“Capital requirements for exchange ...(1.1)” plus

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

  • 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


Consistency assertions

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


Consistency assertions1

Consistency assertions

  • A consistency assertion is an assertion based on a formula

  • Test 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 terms

      • I.e: 1000

    • Relative acceptance radius:

      • Defines an interval proportional to that of the input

      • I.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.


A lot of filters available

A lot of Filters available

  • Concept aspect:

    • By name

    • By period-type

    • By balance attribute

    • By custom-attribute

    • By data-type

    • ...

  • Dimensions:

    • Explicit dimensions

    • Typed dimensions

  • General filters:

    • Value

    • Precision

    • ....

  • Unit:

    • Single measure

    • General measure

  • Period:

    • General

    • Period-start

    • Period-end

    • Period-instant

    • Forever filter

    • Instant-duration

  • Tuple

  • Entity

  • Segment / scenario

  • ...


Resources

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


  • Login