A question for the P123 team

Hello,

In your AZ guide page 116 you give an example of how to calculate EPS acceleration namely:

(EPS%ChgPYQ-EPS%ChgTTM)/Abs(EPS%ChgTTM)

But this ratio fails to accurately rank stock for any EPS%ChgTTM < 0. Higher is better when EPS%ChgTTM > 0 and lower is better when EPS%ChgTTM < 0.

The attached picture shows this ratio for a fixed EPS%ChgPYQ of 10 and varying EPS%ChgTTM from -10 to 10.

Am i missing something here ?

Thank you.


I have no idea what the above chart is supposed to show, but the ratio does rank accurately.

  1. Start by building a screen using an SP500 universe and the following free-form screening rule:
    setvar(@EgsAccel,(EPS%ChgPYQ-EPS%ChgTTM)/Abs(EPS%ChgTTM))

Select the Screen Factors report and and sort the results by the @EgsAccel item from highest to lowest.

  1. Next, build a single-factor ranking system using (EPS%ChgPYQ-EPS%ChgTTM)/Abs(EPS%ChgTTM)

Again, use the SP 500 universe and click on ranks to see the list of tickers, from best to worst.

Subject to a few pairings that in the screen report round to to the same two-decimal place number and which are switched, the sequence of stocks from best to worst is the same. That’s what’s supposed to happen.

Marc, anyone,

I think the main question here is does a very small change in the numerator have as much meaning as it is given by this equation when the denominator is near zero? It is true that unless the denominator is actually zero it does give an accurate measure of the percentage change but is it meaningful and if not what should be done?

For example if EPS%ChgPYQ = 0.02 and EPS%ChgTTM = 0.01 the equation equals 1.00

However if EPS%ChgPYQ = 1.02 and EPS%ChgTTM = 1.01 the equation equals 0.01

This is a huge difference but with the exact same absolute change. Not only is it the same change it is a small change and may not be meaningful for either company.

Is that okay or should we be using Eval and change the function at or near zero?

The above picture:

EPS%ChgPYQ =10
x-axis: EPS%ChgTTM
y-axis: (EPS%ChgPYQ-EPS%ChgTTM)/Abs(EPS%ChgTTM)

In plain English any company with a EPS%ChgTTM of 0.1 or even -2 will come way above a company with a EPS%ChgTTM of -10 given any positive EPS%ChgPYQ. But a company with a EPS%ChgTTM of -10 should be given a higher ranking than a company with a EPS%ChgTTM of -2 if we’re talking about EPS acceleration (given any positive EPS%ChgPYQ)

This ratio does not work.

What aurelaurel is showing is that when EPS%ChgTTM approaches 0 from < 0 to > 0 the equation blows up. The problem with the formulia; (EPS%ChgPYQ-EPS%ChgTTM)/Abs(EPS%ChgTTM) is that you are trying to take a ratio of a percentage which is already a ratio. I prefer to use EPSActual(offset, type) for comparisons of one period to another.

Denny :sunglasses:

@Denny, not only. It blows up for any EPS%ChgTTM<0. Just calculate with -2 and -10.

Just to warn you, aurelaurel, EPSActual is the EPS as taken from the estimates table. It’s the EPS as reported (and adjusted) by the stock analysts, and we’re not really sure what those adjustments are. The only use for it that I can guarantee the results of is the calculation of EPS surprises (which are taken from EPSActual and EPSEstimate. It still might be acceptable to you, but it’s a bit of a black box given that we have no information on anything but the aggregated estimates. (I far, FAR prefer EPSExclXor, myself, if only for transparency.)

As for the math in this thread, we’re analyzing the rate of change of EPS change. So, taking a ratio of a ratio isn’t really a problem here; we’re looking at the percentage change of the percentage change. Whether that’s meaningful is another question, of course.

So, yes, the absolute difference between 1.01 and 1.02 and .01 and .02 is the same. However the .01/.02 company had 100% earnings growth. It doubled its earnings. The absolute change is irrelevant here, and all other things being equal, the company that doubled its earnings is probably more “interesting.” (In what way it is interesting is going to be a question of context.) This equation bubbles up the larger percentage changes. I’d call that a feature, not a bug. :slight_smile:

It is what it is. The basic formula was developed a while ago (not sure who first5 started usaig it, but I picked it up from some of the brighter data geeks at Reuters back in the day) to cope with the problem of negative numbers blowing up things. And acceleration is a worthwhile thing to measure.

That said, no ratio can ever be used in a mechanical manner free and clear of common sense, and growth rates constitute, perhaps, the most treacherous set of ratios with which an investor can work. That’s why p123 screening is just as important as ranking and why ranking systems containing many factors can accomplish more than those that minimize the number of factors.

@Marc & Paul, I brought this up not only for growth ratio but anywhere people, myself included, use(d) this a-b/abs(b) type of ratio thinking it’ll be meaningful even with negative values. It’s not.

We could rather use our variables as power of an integer. This should take care of all of it, negative values, values between -1 or 1…

Like this:

(2^EPS%ChgPYQ)/(2^EPS%ChgTTM)


Aurelian,

That’s a smart and elegant solution. Thanks for sharing it. I’ll play with it.

Shrinking the ‘base’ number so it’s something like 1.01^EPS%ChgPYQ (instead of 2^) will make the end numbers more manageable (and perhaps less likely crash P123).

I use nested eval statements, or multiple eval based factors within a ‘node’ when the text strings get too large. I still like them because they are very clear to me. But they are very cumbersome and run into text limit constraints and get difficult to understand (and to type in). But, something about my ‘simple’ mind, still likes them.

Thanks.
Tom

I’m sorry, but maybe my brain is cramping up. I still have no idea what point is being made by the charts nor why I should care if it looks one way or the other.

Let’s keep this simple.

The classic growth rate formula is (a/b)-1; I presume we all agree on this.

If both numbers are positive, no questions arise. For example, from my S&P acceleration screen:

Ticker EPS%ChPYQ EPS%ChgTTM Acceleration
AFL 16.94% 10.47% 62%
AMZN 142.86% 680% -79%

Etc. That’s pretty easy.

If we use (a-b)/abs(b), the results for AFL and AMZN would be the same, as they should be.

Things can get crazy when we introduce negative numbers. Suppose the numerator is negative and the denominator is positive. We can live with that.

Ticker EPS%ChPYQ EPS%ChgTTM Acceleration
AMP -18.33% 39.01% -147%

Again, the answer is the same whether we use (a/b)-1 or (a-b)/abs(b).

But it makes a huge difference if we have negative numbers in both the numerator and denominator.

Ticker EPS%ChPYQ EPS%ChgTTM (a/b)-1 (a-b)/abs(b)
APC -482.5% -66.88% 621.44% -621%

We know immediately that (a/b)-1 provides an unusable number. The pace of growth has deteriorated horrendously, but the basic formula gives us a powerfully positive acceleration number because it must, given that we have negative signs in both parts of the fraction.

Here’s an example where the numerator is positive and the denominator is negative.

Ticker EPS%ChPYQ EPS%ChgTTM (a/b)-1 (a-b)/abs(b)
APD 3.08% -2.65% -216.23% 216%

We observe a marked improvement in the rate of growth. We have to be showing a positive acceleration figure. And that’s what we see for (a-b)/abs(b). But for the classic formula, (a/b)-1, we see the right absolute figure but the wrong sign; we see deceleration rather than the acceleration we know is taking place.

Now, let’s look at negative numbers in both the numerator and denominator.

Ticker EPS%ChPYQ EPS%ChgTTM (a/b)-1 (a-b)/abs(b)
AMT -26.47% -13.75% 92.51% -93

Again with the classic formula, we’re being forced into an unreasonable and unusable result because the two negatives force a positive answer. Yet we can easily see the acceleration has to be negative. The (a-b)/abs(b) formulation accomplishes this.

Moving on to the formula you propose, (2^a)/(2^b), I right away see an unreasonable result for AMT. I’m not sure whether you mean (2^-26.47)/(2^-13.75) or (2^-.2647) or (2^-.1375) but neither version works. The acceleration rates I’m getting are zero (approx.) or 0.91 respectively both of which are clearly unsuitable; common sense tells us we need to be seeing a significant negative acceleration rate.

We haven’t addressed the approaching zero issue yet, but unless my brain is completely out of whack (maybe it is), it seems your (2^a)/(2^b) cannot be the basis of a p123 factor since it fails to produce a proper answer in a basic situation. If I’m missing something, please show me by calculating acceleration rates under your formulation for each of the situations illustrated here. (I don’t understand your charts and hence can’t discuss them; specific examples such as those presented here are a language I can speak.)

Now, as to the question of approaching zero, there’s a huge difference between what p123 can offer as a standard factor, versus creative solutions individual users might develop if they wish to handle the massive onslaught of oddball situations, which happen pretty much all the time in countless contexts. And we all have our own ways of dealing with oddities we encounter (at least I hope everyone does). If your ratio is better suited for near zero situations, then by all means use it, with whatever accompanying logic (possibly involving the EVAL function) you need. And if you’d like to share your solution, then again, go for it; that’s why we have forums and the ability to set models for community or group visibility. But unless I’m really spacing out, here, it looks like we can’t use it to replace (a-b)/abs(b).

I appreciate the effort Marc.

The problem arises:

  • because we use this ratio to rank stocks.
  • because (a-b)/abs(b) does NOT work when a and b are of different signs.

Take ticker APD since a and b are of different signs in this case. a= 3.08% and b =-2.65 %. OK ?

According to formula (a-b)/abs(b) Eps acceleration = 216 % right ?

Now suppose b were to be -26.50%. The formula would give 111 %

Do you see anything wrong here ?

This is one of the thing my chart shows.

My formula 2^a/2^b allows to RANK and COMPARE stocks between themselves whatever signs their a and b are. It’s not a calculation of the absolute value of EPS acceleration. The value of EPS acceleration can never be calculated when a and b are of different signs.

An example:

Stock1. a=3.08% b=-26.5%. (a-b)/abs(b) = 111%. 2^a/2^b = 1,23
Stock2. a=3.08% b=-2.65%. (a-b)/abs(b) = 216%. 2^a/2^b = 1,04
Stock3. a=3.08% b=+0.2%. (a-b)/abs(b) = 1440%. 2^a/2^b = 1,02
Stock4. a=3.08% b=+2.65%. (a-b)/abs(b) = 16%. 2^a/2^b = 1,00

In reality stock 1 has a greater EPS acceleration than stock 2 and than stock 3 and stock 4.
(a-b)/abs(b) gives stock 3 as a winner, then stock 2, then stock 1, then stock 4. It’s simply not the case. Do you see it ?

2^a/2^b works like a charm :slight_smile:

Additionally you can compare the behavior when b hovers around zeros of the two formulas.


I’m not considering the latest chart. I said I don’t get them, and simply piling on more is starting to annoy the sh** out of me.

As to the numerical examples, these I can and will discuss.

let’s look at this one:

Stock3. a=3.08% b=+0.2%. (a-b)/abs(b) = 1440%. 2^a/2^b = 1,02

The actual growth rate is 1440%. We have to show it. If we were to do otherwise, if we were to show a 2% growth rate as tour approach suggests, we’d be rightly crucified by pretty much every other present and prospective subscriber. So in terms of calculating growth rate, we will not adopt your suggestion. Case closed on this issue.

Moving on, the only comparably clear-cut obviously correct solution when negative numbers enter the picture would be to show NM. It would certainly be defensible, but I suspect many subscribers would find it very unsatisfying. So now, we’re forced out of the realm of being absolutely positively indisputably correct and into the realm of opinion, of workable approximation. In that regard, the (a-b)/abs(b) formula has been used widely and beyond p123 and with pretty satisfying results. And an important virtue of this approach is that this bit of logic will produce correct growth rates 100% of the time when we have two positive numbers, when there is a clear-cut right and wrong.

So, while (a-b)/abs(b) may not be the penultimate answer and while we can and do hold out hope someone somewhere some day will offer a better approach, we know for sure 2^a/2^b is not it – because it produces clear-cut and very dramatic “errors” in the mainstream aspect of the growth-rate question, the one where we have positive numbers in both parts of the fraction. So while it would be great if we were to eventually get a better crossing-zero growth-rate solution, the notion that p123 might revise its platform to computer growth rates based on 2^a/2^b is a non-starter. It’s not going to happen.

The good news, however, is that p123 is a stupendous platform that gives individual users considerable power to come up with creative solutions to better address specific problems than is the case with standard offerings. We’re not Apple. We don’t tell you that it has to be our way or the highway. We’re 180 degrees opposite. We’re thrilled and proud when our members come up with creative solutions. We may not always be able to adopt them as platform-wide standards, but we love to see members using them on their own and profiting and/or building a reputation by publicizing their ideas. This is where your work with 2^a/2^b fits in. You aren’t a platform that must accommodate a very wide variety of needs. You are an individual looking to solve a problem that impacts your own work (in this case, a best-to-worst ranking based on a ratio that is often plagues by mixed signs). Since you’re addressing a specific rather than general need, you need not be concerned by the areas where 2^a/2^b would produce bad answers. You are able to restrict the formula’s use to only areas where it works well. In other words, you, as an individual are freedom to do many more things than p123 – a platform, not an individual – can do; or at least you remain free to do so unless or until Apple acquires p123 (a joke – let’s not have anybody getting carried away here) in which case you would probably be banned from using your formula because the late Steve Jobs didn’t come up with it.

I think the near zero problem is important. That having been said I have not found anything better than (a-b)/abs(b) yet.

If you just want something that crosses 0 without blowing up (a-b) fits the bill but does not improve my ranking system: worse as you all know.

A good way (I thought) to address the issue is with a composite node.
Formula 1: (a-b)/abs(b)
Formula 2: (a-b)
My thinking was that if a stock shows an extreme percentage change but a small absolute change it will be lowered in rank (desired). This performed about the same as (a-b)/abs(b) with all reasonable weights.

2^a/2^b has not improved my ranking systems. I’m still looking for an improvement: I am looking mainly at analyst revisions with this formula.

I appreciate all the discussion and ideas.

Yes actually 2^A/2^B is no miracle solution either since it only works for a fixed A and varying B but not for varying A and varying B.
Bummer.

Just one reminder: Improving your ranking systems is not the goal. What you really want to do is improve your results. You can accomplish a lot with an imperfect ranking system that’s part of a model that includes screening/buy rules that filter out the kinds of situations least likely to mesh with the ranking system. IOW, don’t sweat so much about near-zero denominators when it comes to ranking systems; instead, filter them out with screening/buy rules.

Right on. That’s what I do. Although I use the ABS() function in my EPS ratio for the ranking, I add a buy rule just to make sure. My buy rule is probably redundant, but it does help my confidence.

Brian

I am coming to this discussion a bit late but I have two approaches to measure growth rate depending on what is being measured.

If the two numbers are not ratios (for example EPSPSQ/EPSPSPYQ) then I like to use (a-b)/c. c is a third number and is used to provide some perspective. For example if EPS went from -.02 to .02 then it went up by 4 cents per share. Is that a lot or a little? It depends on the size of the company and the number of shares outstanding. For a company the size of Apple it’s a drop in the bucket. But for a tiny company with lots of shares outstanding then 4 cents per share can be very substantial. So c could be SalesPS or whatever. I am starting using (a-b)/abs(b) less and less because it doesn’t work very well as b approaches 0.

If the two numbers are themselves ratios then measuring the rate of change is different. Using a/b is meaningless for negatives. (a-b)/abs(b) does not work well when b approaches zero. What about using (a-b)/c? That could work but what should we use for c? For example if EPS%ChgPYQ is 15 and EPS%ChgTTM is 10 then a-b = 15-10 which is 5. Is that a lot or a little? It depends on the rest of the universe. If it’s 2008 and the eps of most companies are dropping off a cliff then it’s great, but if it’s the end of 2009 and many companies are growing by leaps and bounds then 5 is not much. So it depends on the universe. That’s simply like a-b compared to universe.

Wouldn’t this work?

My opinion is that the classic formula; (a-b)/Abs(b) is, in general, the correct and best formula to use for almost any ratio, but this ratio of a ratio, although mathematically correct makes little sense to me for all 3 formulas discussed above since they are basically useless. There is no alpha for any of the formulas except for a 3 or 6 month rebalance period, and even very little alpha then.

Look at each formula separately by creating a single function ranking system and run the performance using various rebalance periods and different number of buckets. For either the S&P 500 or the Russell 2000 stocks, there is effectively no alpha. So I wouldn’t include any of these ratios in a ranking system. If there is no alpha, why bother.

Denny :sunglasses: