AlgoMan HFRE v2.4 — Hierarchical Factor Ranking Engine (Download)

Thanks for being so up-front about this.

A few months ago I converted all my conditional nodes to composite nodes that give N/A for all values that don't satisfy a true/false requirement. For example, here's my node for forward revenue yield:


(The divisors should be using CurFYSalesMean rather than CurFYEPSMean.)
Notice that each subnode is divided by a formula which evaluates to 0 a portion of the time, thus giving an NA. This works perfectly for a composite node in a ranking system. But it's entirely unsatisfactory for a node in your system. And if you rewrite it as an Eval you would get companies with CurFYSalesMean != NA ranking higher than those with CurFYSalesMean = NA since CurFYSalesMean tends to be higher than SalesTTM.

There is a solution to this:

Eval(CurFYSalesMean !=NA, FRank("(CurFYSalesMean/($shares * price)) / (CurFYSalesMean != NA)", #industry, #desc, #exclna), FRank("(SalesTTM/($shares * price)) / (CurFYSalesMean = NA)",#industry, #desc, #exclna))

I'll have to get Claude Code to rewrite my ranking systems because it's too labor intensive for me to go through all my composite nodes.

BTW, I did think of a way to incorporate some slippage into the mix, and that is to modify the target to take into account round-trip transaction costs calculated based on the stock's liquidity (and spread). But that doesn't punish high-turnover systems. If you're paying a commission on each trade, as I do in my hedge fund, I don't want ranking systems that emphasize mean-reversion price factors. But maybe your system helps account for that with the turnover part.

Anyway, I'll keep plugging away. Thanks for such detailed feedback: it's extremely valuable.

2 Likes