Question concerning ranking best results

Hi,

In many of my rankings, I get good results in the center and bad on each side, so it looks like a curve and not a normal slope. Is there anything to do with this beside using frank >10 and frank <90? How can I use such a result in a ranking system? Thanks

Here’s how I do it. Sales%ChgTTM gives you a good bell curve like you describe. And let’s say you think 5% annual revenue growth is optimal. So try Abs(Sales%ChgTTM-5), with lower values being better. That’ll give you the desired upward slope.

I haven’t tried this myself, so caveat emptor. Perhaps this transform would work;

pow(2,-abs((x-xf)/s))

where xf is the value that should get the highest ranking, x is the value under test and s is a scaling factor (with larger values providing slower attenuation to zero).

As an example, given InsSelTrans, Data->Data Views shows values ranging from 0 to 35. If you believe that the average (17.5) is best, then use;

pow(2,-abs((InsSelTrans-17.5)/5))

5 is my arbitrary scaling factor.

If InsSelTrans=17.5, the result is 1.
If InsSelTrans=7, the result is 0.233.
If InsSelTrans=28, the result is 0.233.

Is that the kind of transform you’re looking for?

Walter

Louis - copy this ranking system and start by using it exactly as is to start with.

https://www.portfolio123.com/app/ranking-system/296690

I’ll write something about how/why it works tomorrow.

Steve

Steve -

This is a brilliant solution. It allows one to adjust results across different industries and sectors, and automatically adjusts for the market as a whole. Thanks a million.

  • Yuval

Is there an advantage to using NodeRank() over FRank() (i.e. would Abs(50- FRank("Sales%ChgTTM")) work as well)?

Thank you very much for the replies! I don’t understand what the “abs” do or the “nodrank” or the “pow”. I don’t get it either about Steve’s system when 1=0?! Sorry I am still a beginner but maybe someone could explain a bit? Thanks

P.S. I’ll wait for your explanation Steve if you have time eventually.

EDIT: Abs(50-NodeRank(“Sales%ChgTTM”)) works but Abs(50-NodeRank(“InvTurnTTM”)) gets the following error code: “Error generating graph: In ‘NAME-OF-THE-RANKING’-> In ‘InvTurnTTM’-> NodeRank functions must be placed below the referenced node”

Thanks, it looks good (but not much great alpha there), but I don’t understand how it works.

I tried to use InsSelTrans in Steve’s formula and it didn’t work.

BTW is it possible to use a loop ater noderank?

E.g. Abs(50-NodeRank(Loopsum…)

I tried but it didn’t work.

Also tried pow(2,-abs((LoopAvg…-50)/5) and didn’t work either.

How would you use this formula for non-percent data and how would you guess the correct number?

E.g. I have a curve-bell concerning a the ratio of debt to debt in other period. How would I use your formula to get an upward slope?

Louis - it used to be the case that FRank didn’t work within ranking systems, but I just tested it and it works now. So you can use:

Abs(50- FRank(“Sales%ChgTTM”))

Make sure you select “lower value” for the rank (for either FRank or NodeRank).

Bottom line is that you don’t need NodeRank. But if you want to get an idea of what I was doing then read this post from a long time ago: http://stockmarketstudent.com/stock-market-student-blog/restructuring-the-advanced-ranking-system
The system never really worked out OOS but it was just to demonstrate the functionality of conditional nodesin the ranking system.
Steve

StockMarketStudent: Why didn’t it work OOS? Is it because there is a fundamental flaw in trying to catch the middle of the ranking? Were you curve-fitting too much?

EDIT: The new formula works! Thanks! I guess the 50 is that it splits in the middle… but would it be wise to change that number to 40 or 60 if I get some curve-bell that is bigger to the left or right? Or maybe this is too much curve-fitting?

bastringue


The portfolio OOS didn’t work because I was using short term change in interest rates as a predictor of future direction of interest rates, which was an incorrect thing to do. I wouldn’t have pointed to this post but it was easier than re-writing it for the sake of showing how to use a conditional node for some interesting implementations. The port had nothing to do with catching the middle ranks.

Steve

Don’t fight it. Understand it and if it makes sense, use it.

It is very often the case that you should not want extremes – on either side. That’s why it’s so important to pay attention to screening/buy rules and not ask a rankiinbg system do more than it is capable of doing. Ranking systems can be very valuable as buy rules (through the Rating function) where you can set upper and lower boundaries.