1st pass = as above, ROC(C, 12)
2nd pass = from 1st pass, take the top 20 results and then rank these by ROC(C, 6)
3rd pass = from 2nd pass, take the top 10 results and then rank these by ROC(C, 3)
start with 'symlist' in the example and get list of tickers from the ranks. (1st pass)
use ticker list from pass 1 and again generate ranking.
this way you will be able to do it as many times as needed.
Then from the final list, assign to PositionScore.
I've not done it but this would be my approach.