I don’t know why it took me so long to figure out a more elegant solution to this, but here is an example of a formula that will tell you the relative position of a Task entity amongst all the Tasks related to a common parent Project:
(Find(Project.Tasks.Sort([Start Date]).Join("#" + Right("000" + [Public Id], 4), ""),"#" + Right("000" + [Public Id], 4)) + 4) / 5
In this example, the position is given for items based on their start date, but it can equally be used to get the position of items based on manual sorting order, e.g.
(Find(Project.Tasks.Sort().Join("#" + Right("000" + [Public Id], 4), ""),"#" + Right("000" + [Public Id], 4)) + 4) / 5
It will work provided there are no entities with a public Id value greater than 9999, but could be adjusted to increase that limit.
Note: you will probably want to set the formula to have zero decimal places at the time you create it