There’s a local fund that’s available in Morningstar (updated), in Yahoo Finance (updated but shows no data in their website, so something’s wrong) and in ft.markets (updated with a delay of several days).
All the other available sources in the software don’t have this particular fund I’m trying to add. I guess I could use ft.markets and hope it eventually gets updated more frequently, but anyway, is there any way to import the historical/value data from Morningstar instead?
There may well be a better way, but this is how I’ve done it.
First go to the Chart page for the fund (or trust or EFT) on the Morningstar website. I will use the Baillie Gifford Positive Change Fund B Accumulation fund ISIN GB00BYVGKV59 as an example. Remove any other benchmarks etc the are charted (this is not necessary, but makes things easier). Open your browser’s “developer tools” which is F12 in Firefox and probably other browsers as well. Go to the “Network” tab and press the clear button which looks like a bin; again, not necessary but makes things easier. Now press the “chart settings” button just above the chart, click “display options”, and then click the “percentage” button - this switches the chart to show the actual fund price, rather than a percentage change, and handily for our purposes causes the Morningstar website to request a link that we can use in Portfolio Performance with a bit of modification. That link should display in the “network” screen of the browser’s developer tools, so now right click on the entry that comes from the “tools.morningstar.co.uk” domain and is of type “json” and select the Copy->Copy URL option. The link should be
You can go to this link in your browser if you want to see the data. There are 4 options worth highlighting: frequency which will give you daily prices, outputType gives you a style of JSON that Portfolio Performance can parse, startDate lets you choose how far back to go, and id is the Morningstar reference for the security - so change that value for any other ones you want to use. The order of the options doesn’t matter but I find it easier to put the id at the end for when I’m setting up multiple securities.
Now in Portfolio Performance select JSON as the provider in the “Historical Quotes” tab of the security, and use the following values:
Feed URL = the link just created
Path to Date = $.TimeSeries.Security[*].HistoryDetail[*].EndDate
Path to Close = $.TimeSeries.Security[*].HistoryDetail[*].Value
Always worth double checking the displayed values against the Morningstar chart.
Hi, this is great info SimonFitz thanks
I am trying to get other data from mornigstar.co.uk using pytihon. Data such as style (for example Large Growth or large value) industry etc for both stocks and funds/etfs. I am not sure how to get the url to parse as there is no security id on it. Is there a way to get the url for each instrument? Is there maybe a smarter easier way to do this?
I am using python
Hello SimonFitz,
I have even able to apply your nice way to get quote from Morningstar. I tried to apply the same on Bloomberg with the following URL fee:
If you click on the “show server response” button and scroll down, you can see that Bloomberg isn’t sending the JSON to PP that you get through a browser but instead is returning a captcha test. Although Portfolio Performance is wonderful and does many things, I don’t think it has the ability to handle captchas!
Hi Simon, thanks for your help, I was able to add some of my funds thru your method. It worked for Morningstar perfectly but there is a fund (LU0654531267) that is not on Morningstar, but is on FT. Can you help me with a method for FT?
hi Simon, I am a student who is trying to write a code for a professor. I wonder where do you get these api calls? I asked morningstar directly and they said they will charge me $2550.
So, I need helps. We have zero budget.
@thetmon4
To search the designated JSON feed you have to trace the browser’s communications while calling a website and check the results one by one. You could use the below guide how to capture the browser tracing;