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]"!='')&&("[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" ; |