March 7th, 2010, 11:18 am
I am implementing MV portfolio optimisation with only addition of having linear transaction costs. Given the standard deviation of portfolio return I am maximizing return less tx costs subject to the following constraints:w(i,0) - initial weight for the positionw(i,t) - final weight what I am solving for.Objective: Return = sum{exp-ret(i,t)*w(i,t) - (abs(w(i,t)-w(i,0))*txCosts}Constraints:=> sum of weights inclusive of tx costs: sum{w(i,t)+txCosts*(abs(w(i,t)-w(i,0))} = 1=> Non negative return: objective >= 0=> stddev(w(i,t)) = const=> Leverage constraint on every position: l <= w(i,t) <= uAttempting implemntation with SQP solver of NAG (nag_opt_nlp_solve) - treating all constraints as non-linear. It works quite well with small tx costs but obviously it is not correct as the abs makes objective and constraint non-smooth at the point of original weight (and it breaks with substantial tx costs). I appreciate any suggestion on how to handle that "abs" in correct but simple way. Obvious option is to generate multiple optimisations tasks with altered constaints l <= w(i,t) <= w(i,0) and w(i,0) <= w(i,t) << u - but it is lots of the combinations...