New flag to detect stale compustat data

Dear all,

We released new factors to detect if Compustat filings data is stale. This situation typically happens with smaller companies since Compustat prioritizes processing of new information by market cap. You will find all the necessary factors under FUNDAMENTALS->LATEST FILINGS.

The new factors are:

StaleStmt: Returns 1 (TRUE) when the Compustat filings have not been updated with latest results from either press releases or SEC filings

LatestPeriodDate: The latest period date that has been announced by the company. This data may not have been processed yet by Compustat and/or may not have been filed with the SEC.

LatestNewsDate: The date the latest period announced by the company via a press release.

LatestFilingDate: The date the latest period was filed by the company with the SEC.

With stale data factors and ratios may be unreliable. This is specially true with factors that combine price & fundamentals (like PE). We recommend doing additional research when a buy or sell signal is generated with stale data.

Let us know any questions or issues.

Thank You

I tested this today using a new Buy rule of StaleStmt=0 for 6 different models that I developed.
I got sometimes dramatic performance differences in the 99-07 timeframe. In all cases, I got exactly the same results in the 09-today timeframe.
My guess is that there was a lot of stale data in the 1999-2002 and something happened after 2009 where companies are more up to date on reporting. The SEC change anything?
I am using this now as a general Buy rule to improve overall quality, just to make sure that the company’s data is current.

I also did a quick run today. The SP500 and R1000 had no occurences. The R2000 had 4. Maybe this is more of a small company phenomena. My guess is that this is really useful for ADRs where their data could be stale. I have not tested that, though.
thanks.

Marco-Thanks!

David, initial testing shows it might be useful for recent years in some of my ports. You might look at Eval(Stalestmt = false, P123Factor, NA) or a mild punishment in the Ranking system (i.e., small weight for the function StaleStmt = False). It may mostly reduce turnover: avoid buying one week then selling the next when the database is updated.

I will probably end up adding it.

Again: Thanks!!!

-Jim

Jim, thanks for the comment.

Marco,

Thank you very much for adding this data!

I have a few questions to get a better understanding:

  1. I do not understand how (LatestPeriodDate < LatestFilingDate)?
  2. For LatestNewsDate, is the description “The latest SEC filing date within the current period the company made an announcement via a press release. If no news has been announced in the current period the date will default to 1970-01-01” correct?
  3. How do these variables behave for non-SEC filings? E.g. Canadian stocks that are not listed in the US.
  4. I find many companies that have LatestFilingDate of 1970-01-01, e.g. Oracle Corp (ORCL). How is that possible?
  5. What is the exact StaleStmt logic you use? How does it relate to DaysLate, PeriodDateQ, etc.

Thank you in advance for taking your time to answer my questions. I hope your answers will help others as well.

Thanks again!

Hedgehog: I can only answer based on my own testing/knowledge, but here’s what I’ve found:

  1. Latest Period Date should always be earlier than Latest Filing Date. If a company’s period ended on March 31, they don’t announce that day. They’ll announce in April or May, and will usually file a day or so later.

  2. That appears to be correct, yes, with one semi-interesting case, which is that I’m not sure if the actual time of the announcement (before-, during-, or after-the-market announcements) matters on the day after the earnings announcement. (Meaning literally yesterday’s announcement when you run something, not an as-of date in the past.) I think it’s academic, anyway, because we can’t risk look-ahead bias when we don’t have interday prices.

  3. As far as I know, they’re the same. They’re internally generated by CompuStat/CapitalIQ, not the exchanges or EDGAR/SEDAR.

  4. My best guess is that this is what is shown when there is a gap between the initial earnings release and the SEC submission. Today Smucker (SJM) is in that situation (latest quarter released in an earnings release, but no SEC doc yet, so 1970 as filing date).

I’m not 100% sure what’s going on with AutoZone (AZO), which is also in this category, but is showing a 1970 date for Filing Date despite its SEC filing having been submitted two days ago. (I suspect that we’re just going to see a data correction with a new effective date with the weekend’s data update; CapitalIQ’s site is currently showing an effective date of June 16th for AZO’s third fiscal quarter, so let’s see what Monday brings.)

  1. I can’t speak to the exact logic – I haven’t seen the code – but my understanding is that it will be 1 if we know that there are updated financials but we don’t have them. For example, if the analyst data is showing an effective date for EPSActual that is later than the most recent fundamentals that we have, that can only mean that there’s an earnings release somewhere that’s not in the fundamentals data. (I reiterate that I don’t know if that’s part of the code.)

Based on my testing, it also looks like for very small companies there could be a slight delay when they release annual figures. From what I know of the ways of data collection, they’re probably flagging a few of them for a more skilled data entrant.

As I said, that’s based on my own testing. Marco will probably correct me if I’ve posted something spectacularly incorrect.

Hi, Marco,

always appreciate are innovations. As further step it would be useful to be able to select in screen or SIM the date. Eg LatestNewsDate=MM/DD/YYYY or even better LatestEarningRelease=MM/DD/YYYY (eg yesterday)
Fabio

Again really cool! But it is all relative. This article says a 350 microsecond delay leads to stale price data.

The stale statement flag doesn’t seem to work very well. For example, OXBR filed its annual report 10 days ago, yet P123 still shows stale statement = 0 and weekstoq = 3 and weeksintoq = 15. Given these numbers there is no way I could have known it had already filed its 10-K if I hadn’t happened to see it on Seeking Alpha and then looked it up with my broker. I understand that it can take Compustat a few weeks to put the numbers in, especially with a small foreign company like this one, and especially since they didn’t break out their numbers by quarter. But I thought in the meantime I’d see the stale statement value change from 0 to 1.

Marco,

Would really love to see this functionality provided for the estimate data as well. For example, the following functions would really help

CurFYEstExprDate - The Expiration Date of the Current fiscal year earning per share estimate.

CurFYEstWksToExpr - The number of weeks until expiration of the Current FY estimate.

Obviously the same could be provided for the Next Year Estimates and for the Revenue Estimates.

Cheers,

Daniel

The ability to detect stale data is an excellent idea!

I’m not sure if this is working as intended. If so then this function simply screens out far too large a portion of the universe to be useful. Attached is an image of the SP500 universe being screened with just the rule “StaleStmt=0”. Apparently as many as 450 of the 500 stocks regularly return !0 and are excluded for weeks at a time.


It is working as intended. I believe the main purpose of [font=courier new]StaleStmt[/font] was to allow you to defer buying or selling a stock based on fundamental analysis until Compustat processes the latest filing. You might instead use it as a heuristic for weakening the impact of a factor over the overall system. If we had a more robust mechanism for handling dates, you might be able to further leverage [font=courier new]StaleStmt[/font] by checking if [font=courier new]LatestFilingDate[/font] was at least, say, 3 weeks ago (such that the data might be available soon).

Last time I will harp on the issue, I promise…

There could be numerous ways to detect stale data were P123 users given generic date/time functions.

For example:

“DateDiff(Today() - PeriodDateQ)) > AnnounceDaysQ)”

Of course, I am pretending that “DateDiff” and “Today” are available resources.

See requests:
https://www.portfolio123.com/feature_request.jsp?view=my&cat=-1&featureReqID=1325

https://www.portfolio123.com/feature_request.jsp?view=my&cat=-1&featureReqID=1324

I’m afraid I don’t understand this. It was INTENDED to notify us if a statement was stale. If it FAILS to notify us that a statement is stale (as is the case for OXBR ten days after the filing of the 10-K), it is NOT working as intended.

yuvaltaylor,

We found a problem with StaleStmt. We were not triggering a refresh in our servers under certain conditions. This affected StaleStmt in the present , not point in time.

For OXBR, the SEC received a filing from the company. Compustat correctly picked that up, but has not processed it yet. This is what StaleStatement is supposed to pick up. We were not reloading our cache under certain cases (a full reload would have fixed the issue too).

The fix will go live later today. Thank you for reporting it.

Thank you, Marco! This is very helpful indeed!

I just took another look at the graph posted by SUpirate1081. It’s not right. SP500 companies very rarely are stale: compustat processes filing with very little delay, usually the same day.

This was working before. StaleStmt has been broken for a couple of months due to some optimizing code for processing dates (announce dates , news dates).

I think the main thing affected was StaleStmt. We’ll release a patch ASAP and do further investigation.

Very sorry about this. I wasn’t following this thread.

Everything appears to be working as intended now. This is a great addition - thank you!

I’ve become interested in LatestFilingDate recently but run into some results I can’t explain.

Here is an example:

If you look at LatestFilingDate for IBM on 2/11/2019, p123 returns a value of 2/26/2019.

#1) Is this as intended?
#2) How can a PIT database present information that could not be known on the date examined?

What am I overlooking? Thank you!

Hugh

Hugh,

#1) At the very least the documentation needs to be corrected. To quote the documentation: [quote]
LatestFilingDate
[/quote] [quote]
The date the latest period was first filed by the company with the SEC.
[/quote]

#2) I have no reason to think that this is a PIT issue. They did end up filing their SEC 10-K annual report on 2/26/2019. Presumably, their schedule was public information before 2/11/2019.