я использую такой вот упрощенный подход для цели тестов:
var depo = new EstimatedMoney();
var depo1 = depo.Execute(sec, i);
var share = 0.7;
расчитываю рублевый эквивалент ГО(только для фьюча РТС и очень упрощенно, т.к. доллар не беру текущий), 8 это типа плечо в контракте:
var GO = (sec.ClosePrices[i] / 50 * 34)/8;
считаю кол-во контрактов для лонга верхняя отсечка тут 100:
var leNum = Math.Min(Math.Floor(depo1 * share / GO),100);
кол-во контрактов для шорта:
var seNum = leNum;
мне для моих скромных нужд этого хватает...

такой подход конечно работает только в ситуации когда позиций открытых нет и необходимо понять насколько можно набрать.