Two fixes: 1) fallback in formulas 2) fixes to two factors

Dear All,

We released two fixes:

  1. Fallback during preliminary results is only enabled for the most recent period (when the offset is 0). THis is how pre-built factors work and we needed to make the function work the same way. This problem was pointed out here: https://www.portfolio123.com/mvnforum/viewthread_thread,9349

  2. Fixes to WCapPS2PrQ & WCapPS2PrA. This factor is a per share factor that was not being divided by the last close as the name indicates “2Pr”. This has been incorrect since we switched from Reuters a few years ago. It was reported here: https://www.portfolio123.com/mvnforum/viewthread_thread,9350

Thanks for reporting these.

Marco - I’m somewhat confused by the above statement. Does this mean that the most recent QTR is processed differently than previous QTRs? If so, wouldn’t that invalidate simulations?

Steve

Shouldn’t be a big deal. Affects mostly ADRs and only if functions are used instead of pre-built factors. See the original post. Thanks

Marco - it isn’t pre-built versus function that concerns me. What you are saying seems to imply that pre-built factors will work differently depending on whether the calculation is recent/current or further in the past. Recent will fall-back in case of N/A. Historical won’t in the case of “preliminary results”. If I read this correctly then backtest is bogus.

Steve

Preliminary data, i.e. the most recently announced with offset 0, is typically incomplete. Fallback is designed to avoid nasty N/A during prelim data.

There is no such thing as prelim data with offset 1+. It’s gone, set & filed.

this is regardless of the “as-of” date of the observation

OK - this pretty much guarantees that simulation will never match portfolio rebalance, doesn’t it? While some may perceive preliminary data as a good thing, there are as many negative aspects to this as positive. for one, financial ratios will be messed up regardless of what choice is made, fallback or no fallback.

So how can we work with complete data only? In other words, if the company’s fundamental data set is not complete, then the entire data set falls back to the previous quarter.

Would this work:

eval(Complete,FACTORX(0,QTR,KEEPNA),FACTORX(1,QTR,KEEPNA))

This would have to be done with every line item and use of pre-built factors avoided.

Steve

Past & present work the same way (otherwise it’s not a point in time engine). What is known today as preliminary report is preserved for future runs.

About fallback:
-Fallback is on a factor by factor basis.
-Some factors may fallback (like factors that use cashflow items) others may not, depends on what came in.
-For bigger companies preliminary reports are usually quite complete.
-Fallback only applies to fundamentals , price is the latest.
-Fallback happens only when CompleteStmt=false , offset=0 , and value=NA
-Some factors like PE do not fallback because if the preliminary report doesn’t even have enough data for PE then it’s better to give up.

This works well in most cases. The alternatives are worse: evaluate to NA or avoid incomplete companies from the universe. This is a choice we made and it may not be ideal with some specific usage and specific factors. Generally there’s no need to over complicate formulas & rules.

Marco,

I do not know when you started doing snapshots. I agree with what I think you once said–that is that there are advantages and disadvantages. I may not be paraphrasing what you said correctly. But probably, it is best to use shapshots–all thing considered–for the reasons you expressed today.

In any case, I am posting to say that I think this is an example of P123 continuing to constantly improve. This continued improvement in the existing features and adding new features is much appreciated.

Best,

Jim

Marco - I’m not the brightest light on the Christmas tree so please forgive me for continuing to push this. I’m simply trying to make sure I understand the mechanics of what is happening.

First you said:

Then:

While I view the above two quotes as contradictory, I’m happy that you are actually attempting to maintain the point in time data. Now here is where I am confused:

Why would fallback only be enabled for the most recent period? This implies that past and present don’t work the same way for the pre-built factors. In the present, fallback is enabled. In the past, it isn’t. Perhaps there is something basic I am not grasping… what am I missing here?

Thanks
Steve

Steve,

Please allow me to explain for Marco since you seem to be talking over each others’ heads.

If you were to go back in time with the simulation you should get the same results as using a time machine to get that same data. Therefore it should be PIT.

NAs are only backfilled when offset is 0. So Sales(0,Qtr) will be backfilled if applicable. But last quarter, Sales(1,QTR), will not backfill for live port’s. When next quarter’s results come in and this quarter switches to Quarter 1, it will stop backfilling.

A simulation looking at a quarter in the past will see it as Qtr #0 and will backfill it, just as a live port would have back then.

Chipper thanks.

Sometimes a picture helps. I backtested this in the screener for past 2 years

Sales(0,QTR,KEEPNA) =NA and sales(0,QTR)!=NA

It’s simply retrieving stocks that have preliminary results and have NA for sales in the most recent quarter, but have values when falling back . This is very rare since we are talking about SALES which is usually reported in preliminary data, but it’s a good example because the numbers are small.

A proper time-machine would show similar # of stocks that pass the above rule. See the image attached. Very pretty indeed. During March-July about 100 stocks pass. Then it spikes again in September and December. The same pattern appears the following year.


Thanks Chipper - I understand now.

Steve

Marco,

Thanks for the fixes! Very quick turnaround!

Your picture above shows that the number of stocks that fallback stays elevated from March to July. Any idea what causes this? I guess it’s something inherent in the reporting cycle, but I don’t know why this pattern would occur.

Thanks again,
Peter

Peter, majority seems to be Financial stocks, but not all. Certainly worth digging deeper into these preliminary reports that are missing key items like SALES: where are they coming from? Do they contain any information that moves the price? Could they be flagged as “inconsequential” and simply ignored?

PS. ADR’s are different. Compustat gives us almost empty reports (not sure if they are generated by company or S&P) and are handy as fillers. ADRs should not be analyzed using Q factors. Only TTM & Annuals