Financial reports present values from the latest reporting period as well as from several prior periods. Some statements and disclosures may provided values for up to 1-2 years back. When pulling data with FinValue, XBRLFact or any similar XBRLAnalyst function, by default the data is returned from the most recent available report.
For example, if you query the revenue data for 2015 period, it should also be available in 2017 report. If you use FinValue without any additional parameters specifying source report, XBRLAnalyst will most likely be returning 2015 values from the 2017 report. Try yourself the formula below and use "Trace To Report" to see which report the data is returned from:
=FinValue("MSFT","[Revenue]", 2015, "FY")
However, companies may be restating the values in newer reports or not all the values could be available in the most recent report. In order to preserve consistency if you want to pull multiple values from the same report, XBRLAnalyst provides several ways of controlling the source report that should be used to pull the values.
1) Specifying the report ID, which in the US is call Accession Number. For that, you can uses the forth parameter as follows:
=FinValue("MSFT","[Revenue]", 2015, "FY:0001193125-15-272806")
There, the number "0001193125-15-272806" is the accession number of 2015 annual report by Microsoft. You can find those numbers in different ways in XBRLAnalyst. The simplest way is to view the list of all financial reports of a company in Financial Explorer of XBRLAnalyst and check "Acc. #" box
2) However, the method above is very rigid and requires specifying report ID every time. An alternative method is based on the period of report. For example, one can put "2015-FY" instead of Accession Number in order to indicate that we need the value queried from the report of that period:
=FinValue("MSFT","[Revenue]", 2015, "FY:2015-FY")
Nevertheless, Microsoft filed an 8-K report in 2015 after the original annual report. Therefore, the value will be sourced from the latest report in 2015 that has been tagged as providing annual information for that year.
3) In such situations, one can instead use a keyword "original" in order to indicate that we want to query value from the original report where the value was provided for the specified period, i.e.:
=FinValue("MSFT","[Revenue]", 2015, "FY:original")
Now, the value will be sourced from the very original annual 10-K report for 2015 with ID: 0001193125-15-272806.
4) In some rate circumstances, one may want to query the value from the earliest available report and hence use the keyword "earliest", i.e.:
=FinValue("MSFT","[Revenue]", 2015, "FY:earliest")
Normally, this would give the same results as "original" keyword. However, if the company changed XBRL concept used to report give line item in following years, then using "original" value with the specific XBRL concept may result in No Value return. To understand that better, try to compare in XBRLAnalyst two formulas posted below by "Trace to Report" function to see which reports they are coming from: