Post-earnings announcement drift

Im going through this video againg : https://www.youtube.com/watch?v=6sUXt8PwRWI&t=1300s&ab_channel=Portfolio123

I tried to find any good public factors that could work when it relates to the post-earnings announcement drift. I could not find any that improved my results.

Does anyone have a node (factor) that they want to share?

And also, is it possible to download these folders somewhere?

It may be the case that most of abnormal profits for PEA is achieved during the first days.
P123 data may not be the best suited for this task since there is a substantial lag between publishing filling to the public and pushing this data to P123.

Here is the example from Europe (Poland). The filling was published to the public on 20 Sept at 12pm NY time (bottom picture) but still has been missing in P123 and the profit (yellow line) abnormal profit has been substantial.

The key is to use Close(BarsSince(LatestNewsDate)). Add and subtract from that the number of days you want to look at before and after the announcement so that you can measure the drift over those days. Compare that to a benchmark over the exact same period and you’ll have a pretty decent measure of the earnings announcement price movement. Obviously you also want to exclude stocks that have just announced. I’ve found this factor works better for stocks with huge drops than stocks with huge gains. Stocks with huge drops after an earnings announcement tend to keep falling for quite a while afterwards.

1 Like

Just a question. This is factually correct, I believe?

And this is probably true, I think:

So my question is how does FactSet revise its data for backtesting? Is the earnings announcement kept where we could have used it for a live port? Is it PIT in other words?

Or is it moved to the announcement date but would not have been available to use in an overnight P123 data download at the time.

I get that someone is going to say he did this or that little test in a spreadsheet and no worries.Maybe that is even true but I have seen mistakes in the forum before. Maybe it is anecdotal or could have been tested better. So, what if Pitmaster is right about this (repeated)?

And therefore about this

Maybe. If you want to test it yourself it might take more than a backtest with FactSet data to be 100% sure on a solid factual basis (maybe even found statistically significant with no p-hacking, if you think that is important) is my only point.

Jim

Portfolio123 does not have the dates on which FactSet processed announcements prior to 2020, when we started keeping track of those ourselves. And for European data, we don’t have the dates prior to last year, when, again, we started keeping track of those ourselves. FactSet, as far as I know, does not keep track of those dates either. Therefore, those dates are in no way PIT.

This presents a problem for PEAD and similar factors. Backtests of these factors will probably be far rosier than out-of-sample results.

As you probably know, if a company has made an announcement and FactSet has not yet processed it, then StaleStmt = 1. Here’s a chart for the percentage of stocks in the Easy to Trade US universe with StaleStmt = 1. Notice the difference between pre-2020 and post-2020.


And here it is for Easy to Trade Europe:

In my experience, FactSet usually processes announcements within 24 hours. Our backtests try to simulate this by giving a one-day lag between the announcement and the processing date. However, for many European stocks and during periods in which there are a huge number of announcements, the lag can be substantially greater, thus creating a discrepancy between the actual processing time and the time in our backtests. This is, I’m afraid, unavoidable.

I don’t know of a good workaround. I use a very poor workaround. When I backtest, I add to my universe the following rules:

 Min(LatestActualDays,DaysSince(Max(LatestFilingDate,LatestNewsDate))) > 5 
 StaleStmt = 0

This may exclude most stocks with recent announcements. But it’s very hard to tell, and it doesn’t come close to what StaleStmt does in real time.

Thanks-Jim