# Solve m.optimize() log.jointoutput("j x[j] mu[j] delta[j] mu[j] - delta[j]\n") for j in xrange(n): log.jointoutput(str(j) + " " + (str(x[j])).ljust(5,' ') + " " + (str(mu[j])).ljust(5,' ') + " " + (str(delta[j].x)).ljust(8,' ') + " " + str(mu[j]-delta[j].x) + "\n") nominal = 0 adversarial = 0 for j in xrange(n): nominal += mu[j]*x[j] adversarial += (mu[j] - delta[j].x)*x[j] log.jointoutput("nominal return: " + str(nominal)+"; adversarial: " + str(adversarial) + "\n objective: " + str(m.objval) + "; net:" + str(nominal - m.objval) + "\n") ###main. Syntax: adret.py datafile lpfilename. The data file has the positions, the ### expected returns and the risk model (gamma and Gamma) if len(sys.argv) != 3: # the program name and datafile # stop the program and print an error message sys.exit("usage: adret.py dataname lpname ") log = Logger("adret.log") n, gamma, Gamma, x, mu = datareader(log,sys.argv[1]) formulator(log, n, gamma, Gamma, x, mu, sys.argv[2]) log.closelog()