I am trying to construct a portfolio tracking an index as closely as possible i.e. minimizing tracking error. The objective function is to minimize the following:
The expression being summed is below
I have tried setting up the problem in the following manner:
exp = [cvx.log(V[:,t].T*x) - cvx.log(V[:,0].T*x) - R[t] for t in range(1,V.shape[1])]
where R[t]
is the ln(It/I0) part since that can be pre-calculated. Since cvxpy does not allow division by expression, I tried converting to a log difference. This expression has no errors but when I try
for x in exp:
print(x.is_dcp())
I recieve a list of Falses. As a result, cvxpy won't be able to solve the problem since it is not disciplined.
Is there a way of formulating this problem so that it remains disciplined? Alternatively, can I use something other than cvxpy?