Piotroski F Score

Hi Everyone,

I am quite new here and I have been playing with P123 for the last two weeks and I think it’s incredible whats possible here, however there is still too much to learn for me. Today I was trying to make some ranking systems, I wanted to try to mimic the Piotroski F function in P123 using a ranking system, however it doesn’t really want to work out. Can anyone give me a little hint in the right direction. What I made until now:

When looking at the result it doesn’t look anything like the Piotroski function in P123

You mean it doesn’t look like the screen result or it doesn’t look like the ranking system (https://www.portfolio123.com/app/ranking-system/90113)?

I think you want DbtTot2Ast(0,QTR)<DbtTot2Ast(4,QTR). Not sure about the shares comparison.

Is there an easy way to simply import the Piotroski F-score into a strategy?

We precalculate the F-Score, so…

PiotFScore

Note that the F-Score only has 10 discrete values, so if you use it as a ranking system node alone, you’re going to get a big bunch of ties and, therefore, apparently random results.

This is one that I created a while back…all equal weight and using summation.


Richard, I changed the > in < (DbtTot2Ast(0,QTR)<DbtTot2Ast(4,QTR), thanks for noticing it!

So i added a high to low ranking, now the result makes more sense, however its still quite different from the premade function. (Ranking 5 years, 4 weeks rebalance)

The difference in the center (light blue) bucket makes me wonder if the Ranking Method is the same for each test: percentile NAs neutral or negative for each?

BTW, when you copy a rank method with percentile NAS neutral it will change it to negative if you do not click neutral at some point.

-Jim

Davidbv, I tried your ranking system, it gave me the following result for 5years, 4w reb.

Jrinne, for all ranking systems I used percentile NA’s negative. I made a small change to the first node: EPSExclXor(0,TTM)>0 to EPSExclXor(0,TTM,ZERONA)>0. The other nodes should have NA fallback. The result of this small change is neglectable as you can see in the next picture

Thanks for the feedback -Jim

I find it quite bizar the results between the P123 PiotroskiF premade function and my PiotroskiF are so different, there must be a good explanation…

Forgive me if I’m being totally dumb but have you tried the P123 ranking system ‘All-Stars: Piotroski’ at https://www.portfolio123.com/app/ranking-system/90113?

1 - per Paul’s comment, calculating F score in a ranking system is a little odd, in that you are dealing only with discrete values 1 through 9 instead of a continuous range of values. What that means is that unless you miraculously choose ranking cutoffs that match the changes in discrete value exactly, the results of your ranking system will be random. It’d be more reliable to use F score as screening criteria (“F score > 6”).

2 - the reason your ranking system doesn’t give the same results is in part due to your use of composite ranking nodes. If I recall the F score formula correctly, all 9 scores are simply summed. You’re not doing that - you’ve grouped some of the scores together and are getting normalized ranks of those groupings by using composite nodes. You should probably read up on the mechanics of the ranking methodology on P123 as the use of nodes (or not) can have a material impact on your results.

If or as you work with the Piotroski F-Score, its important to keep in mind what it’s all about and in this regard, I strongly recommend that you check the paper in which Piotroski introduced it.

He’s a professor of accounting. The research and paper cam about in the context of a world that believed two things: (1) accounting data, which presents what happened in the past, was of no use for stock picking (where success or failure depends on the future), and (2) value investing is not a viable approach because too many so-called value stocks deserve to be cheap because the companies are dogs.

Piotroski’s innovation was to show that accounting data could be used to distinguish between value stocks worth owning and value stocks that should be bypassed. The seven specific items are not carved-in-stone good-for-all-times requirements. Use them if they help. Edit them is you wish. The main thing is to use “quality” characteristics to separate buyable value stocks from value traps.

The main reason I was trying to recreate Piotroski was because I wanted to understand the boolean rankings in the ranking system of portfolio123. Thank you for all your comments, the systems I am creating on portfolio123 and my understanding of it improve by the day and therefore I am getting more excited about it by the day.