Skip to main content

Stamdata 2 bond security mapping

This mapping is used for security type Debt instruments (BOND).

This mapping is used when you choose ToolsCreate security and select Stamdata2Bond.

Base instruments for floating rate bonds

It is assumed that base instruments for floating rate bonds exist in FA Platform before creating these bonds. The base instrument Interest Rate must have Security code <CCY><TENOR>. For EUR <CCY>LI/IB<TENOR> LI=Libor, IB=Euribor.

Mapping

Mapping name: mapping.stamdata2.bond 

Updated fields

  • Security code

  • ISIN code

  • Name

  • Trade code

  • Country

  • Currency

  • Exchange Type

  • Sub-type

  • Status

  • Holiday calendar

  • Enable settlement date offset

  • Settlement date offset

  • Outstanding shares

  • Accrual Calendar

  • Base Instrument

  • Business Day Convention

  • Maturity Date

  • Call date

  • Coupon (Fixed rate bonds)

  • Coupon frequency

  • Fixings (Floating rate bonds)

  • Ex Coupon Period

  • First Coupon Period Start Date

  • Holiday Calendar

  • Issue Date

  • Issue Price

  • Multiplier

  • Multiplier 2

  • Offset days

  • Spread

  • Stub Convention

  • Update code # (enabled field)

  • Tag Reference data-Stamdata bond

  • Yield convention

  • Maturity Price

Mapping table

Row

Source field

FA field

Script

1

s.type

output="D";       

2

CFICode

s.subType

output="[CFICode]".substring(0,2);

3

ShortName

s.name

4

ISIN

s.isinCode

5

ISIN

s.updateCode

6

Currency

s.currency

7

s.securityCode

output="[ISIN]"+"_"+"[Currency]";

8

Exchange_MIC

s.exchange

9

table_IssueCalendar

SCAL

10

s.holidayCalendar

if ("[SCAL]" != null) {
    def codeMap = ["OSB": "NOOS", "STB": "SEST", "HEB": "FIHE", "COB": "DKCO", "TGT": "EUTA", "LNB": "GBLO", "NYB": "USGS", "OTH": "Sat/Sun"];
    def cal = FAFormat.get("SCAL") ? .first() ? .get("IssueCalendar") ? .get("Calendar");
    if (cal) {
        output = codeMap.get(cal);
    } else {
        output = "";
    }
} else {
    switch ("[Exchange_MIC]") {
        case "XSTO":
            output = "SEST"
            break
        case "XCSE":
            output = "DKCO"
            break
        case "XHEL":
            output = "FIHE"
            break
        case "FNFI":
            output = "FIHE"
            break
        case "NOTC":
            output = "NOOS"
            break
        case "XOSL":
            output = "NOOS"
            break
        case "XOAM":
            output = "NOOS"
            break
            default: output = "Sat/Sun"
            break
    }
};

11

Exchange_Country

s.country

12

FaceValue

s.blockSize

13

s.multiplier

output="100"; 

14

s.multiplierView

output="100"; 

15

IssueDate

s.issueDate

16

s.issuePrice

output="100"; 

17

MaturityDate

s.maturityDate

18

MaturityPrice

s.maturityPrice

19

AccruedInterestDayCountConvention

s.accrualCalendar

switch ("[AccruedInterestDayCountConvention]") {
    case 'Act/365':
        
        output = 'Act/365F'
        break
    case '30E/360 (SE)':
        output = '30E/360'
        break
    case '30/360':
        output = '30/360 ISDA'
        break
    case 'Act/Act-ICMA':
        output = 'Act/Act ICMA'
        break
    case 'Act/Act-ISDA':
        output = 'Act/Act ISDA'
        break
    case 'Act/Act-AFB':
        output = 'Act/Act AFB'
        break
        default: output = "[AccruedInterestDayCountConvention]"
        break
};

20

CurrentInterestType

INTTYPE

21

IssueTermDate

COUPONLIST

22

s.coupons

if ("[CurrentInterestType]" == "Fixed") {
    output = "[CurrentCouponRate]"
} else {
    output = ""
};

23

CurrentCouponRate

s.coupon

if ("[CurrentInterestType]" == "Fixed") {
    output = "[CurrentCouponRate]"
} else {
    output = ""
}

24

s.status

output = "ACTIVE";   

25

s.offsetDays

if ("[CurrentInterestType]" == "FRN") {
    output = "2"
} else {
    output = "0"
};

26

InterestAccrualDate

s.firstCouponDate

27

TermsPerYear

s.couponFrequency

switch ("[TermsPerYear]") {
    case '1':
        output = 'P12M'
        break
    case '2':
        output = 'P6M'
        break
    case '3':
        output = 'P4M'
        break
    case '4':
        output = 'P3M'
        break
    case '6':
        output = 'P2M'
        break
    case '12':
        output = 'P1M'
        break
    case '0':
        output = 'TERM'
        break
        default: output = ''
        break
};

28

BusinessDayConvention

s.businessDayConvention

switch ("[BusinessDayConvention]") {
    case 'Next in month':
        output = 'ModifiedFollowing'
        break
    case 'Next':
        output = 'Following'
        break
    case 'Previous':
        output = 'Preceding'
        break
    case 'Previous in month':
        output = 'ModifiedPreceding'
        break
        default: output = 'NoAdjust'
        break
};

29

s.yieldConvention

output="DE-Bonds";

30

CurrentMargin

s.spread

31

ReferenceRate

s.baseInstrument

if ("[ReferenceRate]" != null && !"[ReferenceRate]".isEmpty() && !"[ReferenceRate]".trim().isEmpty()) {
    base = "[ReferenceRate]".substring(0, 5);
    end = "[ReferenceRate]".reverse().take(2).reverse();
    if ("[Currency]" == "EUR") {
        if (base == "LIBOR") {
            prefix = "EURLI"
        } else {
            prefix = "EURIB"
        }
    } else {
        prefix = "[Currency]"
    }
    output = prefix + end
} else {
    output = ''
};

32

EarlyRedeemedDate

s.callDate

if (("[EarlyRedeemedDate]" != '') && ("[EarlyRedeemedDate]" != 'null') && ("[EarlyRedeemedDate]" != 'N.A.') && !"[EarlyRedeemedDate]".isEmpty() && !"[EarlyRedeemedDate]".trim().isEmpty()) {
    output = "[EarlyRedeemedDate]"
} else {
    output = ""
};

33

s.exCouponPeriod

switch ("[s.exchange]") {
    case "XSTO":
        output = '4'
        break
    case "XOSL":
        output = '1'
        break
    case "NOTC":
        output = '1'
        break
    case "XOAM":
        output = '1'
        break
        default: output = '0'
        break
};

34

s.settlementDateOffset

output='2';

35

s.enableSettlementDateOffset

output='0';

36

s.tags

output="Reference data-Stamdata bond";

37

SII_CICCode

s.profileAttributes

if (!"[SII_CICCode]" ? .trim()) {
    output = ""
} else {
    output = "security.sii.listedIn=" + "[SII_CICCode]".substring(0, 2) + ":string#security.sii.cic=" + "[SII_CICCode]".substring(2) + ":string#"
};