There’s probably a way to do this manually with a calculator and math formulas and all the weights involved but really this is a task much better suited to a computer. If you look at the chart here you can see that the horizontal force at 90 and 180 degrees crank position doesn’t assume the same trajectory as the average vertical force and so that automatically makes crank balancing RPM dependent. The goal is getting those two graphs to intersect at the top RPM of the bike. This is impossible to do just by the static balance factor method. If you are really lucky it might get you close if you magically pull out the right balance factor out of your hat. This graph is from the data my crank balance calculator provided about my 100cc engine and the actual balance factor is only .27 whereas you normally hear a range of .5 to .6 as being best. If I had listened to any of those brain dead zombies I would now have an engine that shakes like a washing machine instead of one that is smooth as silk at top RPM. This spreadsheet calculates all the forces involved every 15 degrees of crank rotation and then graphs the result showing the difference between the vertical and horizontal forces all thru the RPM range. I don’t know of any other software that is that complete in its computations. If the graph shows balance at too high or too low a RPM then you just virtually change the balance holes in the crank and click the calculate button again to see the new result. You keep doing this till it shows what you want.