Analyzing the loaded data for the last 10 to 15 financial years, I found multiple cases of misaligned or otherwise incorrect data.
Parameters for SDATE and EDATE are the following:
today = datetime.now()
EDATE = today.strftime("%Y-%m-%d") # Today's date in YYYY-MM-DD format
SDATE = (today.replace(year=today.year - 10, month=1, day=1)).strftime("%Y-%m-%d")
I’ll try to give examples for the different errors I encountered:
Data misaligned compared to UI
4295858951: Depreciation seems two years off, last value via API is in FY2022, this value can be found in FY2024 in the UI.
- 4295856134: Dividends Paid - Cash - Total - Cash Flow: Interim Data misaligned, one quarter when fetching last 10 years, one year when fetching last 15 years
fundamental_and_reference.Definition(["4295856134"], ["AVAIL(TR.F.PERIODENDDATE(STTYPE=BAL), TR.F.PERIODENDDATE(STTYPE=INC), TR.F.PERIODENDDATE(STTYPE=CAS))","AVAIL(TR.F.PERIODENDDATE(STTYPE=BAL).fperiod, TR.F.PERIODENDDATE(STTYPE=INC).fperiod, TR.F.PERIODENDDATE(STTYPE=CAS).fperiod)", "TR.F.DivPaidCashTotCF"], {"SDate": SDATE, "EDate": EDATE, "FRQ": "FI", "Period": "FI0", "Scale": 9})
SDATE = (today.replace(year=today.year - 15, month=1, day=1)).strftime("%Y-%m-%d")
SDATE = (today.replace(year=today.year - 10, month=1, day=1)).strftime("%Y-%m-%d")
- Data misaligned FY compared to FI
- 4295858951: Gross Asset Value: with FI the 5.910 is in 2015-06-30, with FY the value 5.910 is in 2014-12-31
fundamental_and_reference.Definition(["4295858951"], ["TR.F.PERIODENDDATE","TR.F.PERIODENDDATE.fperiod", "TR.F.GrossAssetValueTot", "TR.F.GrossAssetValueTot.date"], {"SDate": SDATE, "EDate": EDATE, "FRQ": "FY", "Period": "FY0"})
- fundamental_and_reference.Definition(["4295858951"], ["TR.F.PERIODENDDATE","TR.F.PERIODENDDATE.fperiod", "TR.F.GrossAssetValueTot", "TR.F.GrossAssetValueTot.date"], {"SDate": SDATE, "EDate": EDATE, "FRQ": "FI", "Period": "FI0"})
- Same Dates returned multiple times
- 2016-02-29 is returned four times for id 4295900281 when fetching interim data
fundamental_and_reference.Definition(["4295900281"], ["TR.F.PERIODENDDATE", "TR.F.TotRevenue"], {"SDate": SDATE, "EDate": EDATE, "FRQ": "FI", "Period": "FI0"})
- 2017-12-13 is returned twice for id 4296112777 when fetching yearly data
fundamental_and_reference.Definition(["4296112777"], ["TR.F.PERIODENDDATE", "TR.F.TotRevenue"], {"SDate": SDATE, "EDate": EDATE, "FRQ": "FY", "Period": "FY0"})
- 2018-12-18 and 2019-09-27 is each returned twice for id 5000100407 when fetching yearly data
fundamental_and_reference.Definition(["5000100407"], ["TR.F.PERIODENDDATE", "TR.F.TotRevenue"], {"SDate": SDATE, "EDate": EDATE, "FRQ": "FY", "Period": "FY0"})
- 5000274109: for 2013-09-30 three rows, EBITDA Margin even changes there
fundamental_and_reference.Definition(["5000274109"], ["AVAIL(TR.F.PERIODENDDATE(STTYPE=BAL), TR.F.PERIODENDDATE(STTYPE=INC), TR.F.PERIODENDDATE(STTYPE=CAS))","AVAIL(TR.F.PERIODENDDATE(STTYPE=BAL).fperiod, TR.F.PERIODENDDATE(STTYPE=INC).fperiod, TR.F.PERIODENDDATE(STTYPE=CAS).fperiod)", "TR.F.EBITDAMargPct"], {"SDate": SDATE, "EDate": EDATE, "FRQ": "FI", "Period": "FI0"})
- Future data where Period End Date is missing, e.g.
fundamental_and_reference.Definition(["5081381076"], ["AVAIL(TR.F.PERIODENDDATE(STTYPE=BAL), TR.F.PERIODENDDATE(STTYPE=INC), TR.F.PERIODENDDATE(STTYPE=CAS))","AVAIL(TR.F.PERIODENDDATE(STTYPE=BAL).fperiod, TR.F.PERIODENDDATE(STTYPE=INC).fperiod, TR.F.PERIODENDDATE(STTYPE=CAS).fperiod)", "TR.F.EBITDAMargPct"], {"SDate": SDATE, "EDate": EDATE, "FRQ": "FI", "Period": "FI0"})
-
- How do I avoid future data (EDATE is at today, so where does that data come from and why is it returned with that end date)?
I also have a lot of companies (362 of 2377) where I get “Error code 412 | Unable to resolve all requested identifiers in […].”. When trying to access these companies’ financials via the UI I also get the error “Temporary data retrieval issue, please try again later.”