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.

Specific notes

Base instruments for Floating Rate Bonds

It is assumed that these exist in FA prior to creating these Bonds. The base instrument Interest Rate need to have Security Code equals to FA Standard <CCY><TENOR> (note 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=""
}
;

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