Skip to main content

Morningstar collective investment vehicles and exchange-traded funds updates

This mapping is used for Security types Collective investment vehicles (FUND) and Exchange-traded funds (ETFs) (FUND).

This mapping is used in the Securities view when you click Update Security Data and select Morningstar.

Specific configuration

Asset classes and types are set up in PreferenceSecuritiesAsset classes and types (see Asset classes and types in FA Back reference). To fully utilize the updates functionality, you need the following asset classes and types:

  • Geographical allocation (M49)

  • Morningstar Asset Allocation

  • Currency exposure

Mapping

Mapping name: update.morningstar.C

Updated fields

  • Security code

  • ISIN code

  • Name

  • Currency

  • Trade code

  • Management Fee Percentage

  • Key figures

    • Morningstar rating

    • Performance gridpoints

    • SRRI & SRRI calculated

  • Allocations

    • Geographical allocation (M49) [Holdings based]

    • Morningstar Asset Allocation [Holdings based]

    • Currency exposure [Fund Currency]

    • Morningstar Global Category [Fund Category]

Mapping table

Row

Source field

FA field

Script

1

s.isinCode

outout="***"

2

BI-ISIN

s.isinCode

3

BI-MStarID

s.tradeCode

4

BI-FundName

s.name

5

BI-CurrencyId

s.currency

output='[BI-CurrencyId]'.substring(7);

6

RATING-RatingOverall

RATING

if(!"[RATING-RatingOverall]"?.trim())
{
output="[RATING-RatingOverall]".toInteger()
}
else
{
output=0
}

7

RATING-RatingDate

RATINGDATE

8

ALLOC1-PortfolioDate

PTFDATE1

9

ALLOC2-CountryExposure

Exposure

if(services.configurationService.findGroupByCode('M49'))
{
output = ""
def countries = ["Supranational":"991","Laos":"418","Afghanistan":"004","Albania":"008","Algeria":"012","American Samoa":"016","Andorra":"020","Angola":"024","Anguilla":"660","Antarctica":"010","Antigua and Barbuda":"028","Argentina":"032","Armenia":"051","Aruba":"533","Australia":"036","Austria":"040","Azerbaijan":"031","Bahamas":"044","Bahrain":"048","Bangladesh":"050","Barbados":"052","Belarus":"112","Belgium":"056","Belize":"084","Benin":"204","Bermuda":"060","Bhutan":"064","Bolivia":"068","Bolivia":"068","Bosnia and Herzegovina":"070","Botswana":"072","Bouvet Island":"074","Brazil":"076","British Indian Ocean Territory":"086","Brunei Darussalam":"096","Brunei":"096","Bulgaria":"100","Burkina Faso":"854","Burundi":"108","Cambodia":"116","Cameroon":"120","Canada":"124","Cape Verde":"132","Cayman Islands":"136","Central African Republic":"140","Chad":"148","Chile":"152","China":"156","Christmas Island":"162","Cocos (Keeling) Islands":"166","Colombia":"170","Comoros":"174","Congo":"178","Congo":"180","Cook Islands":"184","Costa Rica":"188","Côte d'Ivoire":"384","Ivory Coast":"384","Croatia":"191","Cuba":"192","Cyprus":"196","Czech Republic":"203","Denmark":"208","Djibouti":"262","Dominica":"212","Dominican Republic":"214","Ecuador":"218","Egypt":"818","El Salvador":"222","Equatorial Guinea":"226","Eritrea":"232","Estonia":"233","Ethiopia":"231","Falkland Islands (Malvinas)":"238","Faroe Islands":"234","Fiji":"242","Finland":"246","France":"250","French Guiana":"254","French Polynesia":"258","French Southern Territories":"260","Gabon":"266","Gambia":"270","Georgia":"268","Germany":"276","Ghana":"288","Gibraltar":"292","Greece":"300","Greenland":"304","Grenada":"308","Guadeloupe":"312","Guam":"316","Guatemala":"320","Guernsey":"831","Guinea":"324","Guinea-Bissau":"624","Guyana":"328","Haiti":"332","Heard Island and McDonald Islands":"334","Holy See (Vatican City State)":"336","Honduras":"340","Hong Kong":"344","Hungary":"348","Iceland":"352","India":"356","Indonesia":"360","Iran":"364","Iraq":"368","Ireland":"372","Isle of Man":"833","Israel":"376","Italy":"380","Jamaica":"388","Japan":"392","Jersey":"832","Jordan":"400","Kazakhstan":"398","Kenya":"404","Kiribati":"296","Korea":"408","Korea":"410","South Korea":"410","Kuwait":"414","Kyrgyzstan":"417","Lao People's Democratic Republic":"418","Latvia":"428","Lebanon":"422","Lesotho":"426","Liberia":"430","Libyan Arab Jamahiriya":"434","Libya":"434","Liechtenstein":"438","Lithuania":"440","Luxembourg":"442","Macao":"446","Macedonia":"807","Madagascar":"450","Malawi":"454","Malaysia":"458","Maldives":"462","Mali":"466","Malta":"470","Marshall Islands":"584","Martinique":"474","Mauritania":"478","Mauritius":"480","Mayotte":"175","Mexico":"484","Micronesia":"583","Moldova":"498","Monaco":"492","Mongolia":"496","Montenegro":"499","Montserrat":"500","Morocco":"504","Mozambique":"508","Myanmar":"104","Burma":"104","Namibia":"516","Nauru":"520","Nepal":"524","Netherlands":"528","Netherlands Antilles":"530","New Caledonia":"540","New Zealand":"554","Nicaragua":"558","Niger":"562","Nigeria":"566","Niue":"570","Norfolk Island":"574","Northern Mariana Islands":"580","Norway":"578","Oman":"512","Pakistan":"586","Palau":"585","Palestinian Territory":"275","Panama":"591","Papua New Guinea":"598","Paraguay":"600","Peru":"604","Philippines":"608","Pitcairn":"612","Poland":"616","Portugal":"620","Puerto Rico":"630","Qatar":"634","Réunion":"638","Romania":"642","Russian Federation":"643","Russia":"643","Rwanda":"646","Saint Helena":"654","Saint Kitts and Nevis":"659","Saint Lucia":"662","Saint Pierre and Miquelon":"666","Saint Vincent and the Grenadines":"670","Saint Vincent & the Grenadines":"670","St. Vincent and the Grenadines":"670","Samoa":"882","San Marino":"674","Sao Tome and Principe":"678","Saudi Arabia":"682","Senegal":"686","Serbia":"688","Seychelles":"690","Sierra Leone":"694","Singapore":"702","Slovakia":"703","Slovenia":"705","Solomon Islands":"090","Somalia":"706","South Africa":"710","South Georgia and the South Sandwich Islands":"239","Spain":"724","Sri Lanka":"144","Sudan":"736","Suriname":"740","Svalbard and Jan Mayen":"744","Swaziland":"748","Sweden":"752","Switzerland":"756","Syrian Arab Republic":"760","Taiwan":"158","Tajikistan":"762","Tanzania":"834","Thailand":"764","Timor-Leste":"626","Togo":"768","Tokelau":"772","Tonga":"776","Trinidad and Tobago":"780","Trinidad & Tobago":"780","Tunisia":"788","Turkey":"792","Turkmenistan":"795","Turks and Caicos Islands":"796","Tuvalu":"798","Uganda":"800","Ukraine":"804","United Arab Emirates":"784","United Kingdom":"826","United States":"840","United States Minor Outlying Islands":"581","Uruguay":"858","Uzbekistan":"860","Vanuatu":"548","Venezuela":"862","Vietnam":"704","British Virgin Islands":"092","British Virgin Islands":"850","Wallis and Futuna":"876","Yemen":"887","Zambia":"894","Zimbabwe":"716"]
String groupCode = "M49"
def dt = "[PTFDATE1]"
String exposure = "[ALLOC2-CountryExposure]"
exposure = exposure.substring(0, exposure.length() - 1)
exposure = exposure.substring(1, exposure.length())
def exposureList = exposure.split(",")
def outputList = []
double residual = 100d
exposureList.eachWithIndex{ it, index ->
Double share = (it.split(":")[1].trim()).toDouble().round(6)
residual -= share
if(index == exposureList.size()-1) share += residual
share = share.round(6)
outputList << groupCode + ":" + dt + ":" + countries.get(it.split(":")[0].trim()) + "=" + share.toString()
}
output=','+outputList.join(",")
}
else
{
output=''
}
;

10

PERF-Return1Mth

PERF1MO

11

PERF-Return3Mth

PERF3MO

12

PERF-Return6Mth

PERF6MO

13

PERF-Return1Yr

PERF1Y

14

PERF-Return2Yr

PERF2Y

15

PERF-Return5Yr

PERF5Y

16

PERF-ReturnYTD

PERFYTD

17

ALLOC1-StockNet

StockNet

18

ALLOC1-BondNet

BondNet

19

ALLOC1-ConvertibleNet

ConvertibleNet

20

ALLOC1-CashNet

CashNet

21

OtherNet

output = (100.0-"[StockNet]".toDouble()-"[BondNet]".toDouble()-"[ConvertibleNet]".toDouble()-"[CashNet]".toDouble()).round(6)

22

MS_ASSETS1

if("[ALLOC1-StockNet]".toDouble() != 0.0d)
{
output=',MS_ASSETS:[ALLOC1-PortfolioDate]:StockNet=[ALLOC1-StockNet]'
}
else
{
output=''
}

23

MS_ASSETS2

if("[ALLOC1-BondNet]".toDouble() != 0.0d)
{
output='[MS_ASSETS1],MS_ASSETS:[ALLOC1-PortfolioDate]:BondNet=[ALLOC1-BondNet]'
}
else
{
output='[MS_ASSETS1]'
}

24

MS_ASSETS3

if("[ALLOC1-ConvertibleNet]".toDouble() != 0.0d)
{
output='[MS_ASSETS2],MS_ASSETS:[ALLOC1-PortfolioDate]:ConvertibleNet=[ALLOC1-ConvertibleNet]'
}
else
{
output='[MS_ASSETS2]'
}

25

MS_ASSETS4

if("[ALLOC1-CashNet]".toDouble() != 0.0d)
{
output='[MS_ASSETS3],MS_ASSETS:[ALLOC1-PortfolioDate]:CashNet=[ALLOC1-CashNet]'
}
else
{
output='[MS_ASSETS3]'
}

26

MS_ASSETS

if("[OtherNet]".toDouble() != 0.0d)
{
output='[MS_ASSETS4],MS_ASSETS:[ALLOC1-PortfolioDate]:OtherNet=[OtherNet]'
}
else
{
output='[MS_ASSETS4]'
}

27

CURR

output = ""
if((!"[s.currency]"?.trim())||("[s.currency]"=='N.A.'))
{
output = ""
}
else
{
def s = services.securityService.loadSecurityBySecurityCode("[s.securityCode]")
def allocationsChanged = true
def allocationDate = "2009-01-01" // Any new allocations are set on the specified date
if(s){
def allocs = s.getAllocationsOnDate(new Date(), "CURR")
if(allocs && allocs.size() == 1 && allocs.get(0).sector.code == "[s.currency]"){
allocationsChanged = false
} else if(allocs && allocs.size() == 1 && allocs.get(0).sector.code != "[s.currency]"){
// There is an existing allocation that has changed -> the new allocation will be set for this date
allocationDate = new Date().format("yyyy-MM-dd")
}
}
if(services.configurationService.findGroupByCode('CURR') && allocationsChanged){
output += ",CURR:"+ allocationDate +":"+"[s.currency]"+"=100"
}
}
;

28

BI-GlobalCategoryId

GCID

output = '[BI-GlobalCategoryId]'.toString()
;

29

MGC2021

output = ""
if((!'[BI-GlobalCategoryId]'.toString()?.trim())||('[BI-GlobalCategoryId]'.toString()=='N.A.'))
{
output = ""
}
else
{
def s = services.securityService.loadSecurityBySecurityCode("[s.securityCode]")
def allocationsChanged = true
def allocationDate = "2009-01-01" // Any new allocations are set on the specified date
if(s){
def allocs = s.getAllocationsOnDate(new Date(), "MGC2021")
if(allocs && allocs.size() == 1 && allocs.get(0).sector.code == '[BI-GlobalCategoryId]'.toString()){
allocationsChanged = false
} else if(allocs && allocs.size() == 1 && allocs.get(0).sector.code != '[BI-GlobalCategoryId]'.toString()){
// There is an existing allocation that has changed -> the new allocation will be set for this date
allocationDate = new Date().format("yyyy-MM-dd")
}
}
if(services.configurationService.findGroupByCode("MGC2021") && allocationsChanged){
output = ",MGC2021:"+ allocationDate +":"+'[BI-GlobalCategoryId]'.toString()+"=100"
}
}
;

30

s.allocations

if(services.configurationService.findGroupByCode('MS_ASSETS')) {
output = '***[MS_ASSETS][Exposure][CURR][MGC2021]';
} else {
output = '***[Exposure]';
}

31

BI-Ticker

TIC

32

MSR

if(!"[RATING-RatingOverall]"?.trim())
{
output=":MSR=[RATINGDATE]=[RATING]"
}
else
{
output=""
}
;

33

PERF-MonthEndDate

MonthEndDate

34

PERF

if(("[PERF1MO]"!=""))
{
perf="PERF1MO=[MonthEndDate]=[PERF1MO]"
}
else
{
perf=""
}
;
if(("[PERF3MO]"!=""))
{
perf=perf+":PERF3MO=[MonthEndDate]=[PERF3MO]"
}
;
if(("[PERF6MO]"!=""))
{
perf=perf+":PERF6MO=[MonthEndDate]=[PERF6MO]"
}
;
if(("[PERF1Y]"!=""))
{
perf=perf+":PERF1Y=[MonthEndDate]=[PERF1Y]"
}
;
if(("[PERF2Y]"!=""))
{
perf=perf+":PERF2Y=[MonthEndDate]=[PERF2Y]"
}
;
if(("[PERF5Y]"!=""))
{
perf=perf+":PERF5Y=[MonthEndDate]=[PERF5Y]"
}
;
if(("[PERFYTD]"!=""))
{
output=':'+perf+":PERFYTD=[MonthEndDate]=[PERFYTD]"
}
;

35

FEES-ActualManagementFee

s.managementFeePercentage

36

KIIDSRRI

output='null'         
;

37

BI-KIIDSRRI

KIIDSRRI

38

BI-KIIDSRRIDate

KIIDSRRIDate

39

KIIDCalculatedSRRIValue

output='null'
;

40

BI-KIIDCalculatedSRRIValue

KIIDCalculatedSRRIValue

41

BI-KIIDCalculatedSRRIDate

KIIDCalculatedSRRIDate

42

SRRIKF

if("[KIIDSRRI]"=='null')
{
output=""
}
else
{
output=":SRRI=[KIIDSRRIDate]=[KIIDSRRI]"
}
;

43

SRRICALCKF

if("[KIIDCalculatedSRRIValue]"=='null')
{
output=""
}
else
{
output=":SRRIcalc=[KIIDCalculatedSRRIDate]=[KIIDCalculatedSRRIValue]"
}
;

44

s.keyFigures

output="***[MSR][PERF][SRRIKF][SRRICALCKF]"
;