My Attempt to Improve F-Score System

I like the idea of the Piotroski F-Score system but find it too clunky and crude. I know Yuval has made his improved version so I thought I would take a stab at it too.

The model is here and is referred to as FVS or Fundamental Value Score. There are a lot of ranking systems you'll need to copy over which are referenced in the rules using the rating function. This was my motivation and attempt...

  1. What bugs me about the original. Too binary and no magnitude. No absolute levels for leverage only that it improved. No sell rules. Book to market is a poor measure of value in today's industries.
  2. The idea. Split the F-Score into 2 nodes for ranking. Cheapness: nine yields across three categories (operating, cash/earnings, assets). Resilience: 5 industry ranks including profitability, cash and earnings integrity, solvency, operating trajectory, capital stewardship.
  3. The gates. Things a good score shouldn't be able to average away are hard buy rules: stale or incomplete statements, unreliable share counts, distress confirmed by two independent signals, Beneish red flag and cheap on at least two of the three value groups (to be more flexible in the definition of value)

Just remember to save all the underlying ranking system of which there are about 9. And share any ideas, criticisms, improvements you have.

https://www.portfolio123.com/port_summary.jsp?portid=1967959

Have you tested how this compares to the P123 Piotroski Ranking System and Screen?

https://www.portfolio123.com/app/screen/summary/1094

You can see how many hours you've put into this improvement. I'll check it out!!!! Thanks, Kurtis!!

fscore_carousel.pdf (193.5 KB)

So to make a comparison I had to run F-Score through my base universe with a Book to Market filter keeping only the top 20%. But as F-Score is binary you can get a large amount of 8-9 F-Scores. So I had to add a miniscule weighting to F-Score that prefers high book to market to differentiate between loads of identical F-Scores. The comparisons are in the attached PDF

Hi, thanks this looks really interesting, I have a question though, why are you using Price*SharesFDQ instead of MarketCap and (Price*SharesFDQ + IsNA(PfdEquityQ,0) + IsNA(NonControlIntQ,0) + IsNA(DbtTotQ,0) - IsNA(CashEquivQ,0))) instead of EV?

When I compile a ranking system I run the final product through an LLM to ensure the factors are properly built for the universe/sector/region I am using. Sometimes it will make the factors directly from the Factset line items instead of prebuilt formulas from P123. Maybe it is paranoid. Feel free to change it to whatever suits you.

Why would you do that? LLMs are terrible at accounting measures. In general, they make way more mistakes than human beings do. Not only that, but they don't test the measures like you can. Portfolio123's prebuilt measures are generally free from the kinds of errors that will break things. For example, FactSet's SharesFDQ is frequently lower than SharesQ, which is not something an LLM will know, but a human being will. Tesla has SharesFDQ of 3.54B and SharesQ of 3.95B. If you use SharesFDQ you'll be understating its market cap by $150B.

Thanks Yuval. Good catch.

I guess that brings up another point I had not considered. The formula is P123 using for their pre-builts... I assumed it was static but looking at p/s ttm it is sometimes mktcap based, sometimes FD shares based and sometimes a mix or something else that doesn't cleanly match to either.

Could the prebuilt variations be due to after-the-fact adjustments to the data used? Point in time versus adjusted? Perhaps the use of FHist could discern the differences.

I think the discrepency you observe could be linked to the timing of the Price component (or MktCap) vs the prebuilt factor.

What Price is taken for Pr2SalesTTM? (the average during the quarter, the price or mkt cap at the date of the release of the quarterly financial statements?)

The current price / the price on the AsOfDate.

I didn't understand, which one ?

The current price if you're running it today and the price on the AsOfDate if you're running it in the past. The average during the quarter and the price on the date of release are irrelevant.

thanks for doing this. But i cannot access this ranking system. i can see the rules