Skip to main content

Stamdata bond security mapping

Used for security type Debt instruments (BOND).

This mapping is used when you choose:

  • Tools > Create security and select Stamdata bond.

  • Update Security Data and select Stamdata bond. In future this will be replaced by more narrow update mapping.

Base instruments for floating rate bonds

It is assumed that base instruments for rloating 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.stamdata.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

Issuer_CountryCode

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

table_IssueTermDate

COUPONLIST

22

s.coupons

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
};     

23

CurrentCouponRate

s.coupon

if ("[CurrentInterestType]" == "Fixed") {
    output = "[CurrentCouponRate]"
} else {
    output = ""
};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]" != '') & amp; & amp;
    ("[EarlyRedeemedDate]" != 'null') & amp; & amp;
    ("[EarlyRedeemedDate]" != 'N.A.') & amp; & amp; !"[EarlyRedeemedDate]".isEmpty() & amp; & amp; !"[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";