Drift management optimization

35 Views Asked by At

I have a problem in which I am having trouble formulating the optimization.

A portfolio value is $10M

I have a vector of current weights [.10,.15,.15,.10,.05,.10,.20,.15] and another vector of target weights [.12,.17,.17,.14,.10,.08,.22,0]

The drift between the 2 vectors is [.02,.02,.02,.04,.05,-.02,.02,-.15]

Cash flow of $500k is coming in. I would like to minimize the standard deviation of drift while using the cash flow to help get to target weights. No selling is allowed, only purchases (so, assets at index 6 and 8 can not be allocated anything)

I have tried many different approaches in matlab, but the optimization keeps giving the target weights as the answer (which is not achievable because there isn't enough cash).

I think I am making an issue with the upper and lower bounds. I've set the upper bound to the target weights and the lower bound to the current weights.

Please help me formulate the problem. Thank you

This is what I tried:

first I added the cash flow as another asset and re-weights

new current weights = [0.0952,0.143,0.143,0.0952,0.0476,0.0952,0.19,0.143,0.048]

the last weight being the cash flow

new target weight = [.12,.17,.17,.14,.10,.08,.22,0,0]

f(x) = std(tar-x)

min f(x) x

s.t.

sum(x) = 1 lower bound = [.10,.15,.15,.10,.05,.10,.20,.15,0] upper bound = [.12,.17,.17,.14,.10,.10,.22,.15,0]

When I do this, the optimization gives allocation to all the lower drifts except the lowest drift. What am I doing wrong?