Stamdata bond security mapping
Used for security type Debt instruments (BOND).
In FA Back, this mapping is used when you go to:
Tools > Create security and select Stamdata bond.
Update Security Data and select Stamdata bond.
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.stamdata.bond
Updated fields
Security code
ISIN code
Name
Trade code
Country
Currency
Exchange Type
Sub-type
Status
Holiday calendar
Set settlement period
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 | 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]" != '') && ("[EarlyRedeemedDate]" != 'null') && ("[EarlyRedeemedDate]" != 'N.A.') && !"[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"; |