well, the first improvement I would test is:

var oldMargin= Margin;

Margin = max( oldMargin, 0.5 * OptimalF * Capital * sqrt(1 + ProfitClosed/Capital)/iNum));

ciao