Я пытаюсь написать задачу оптимизации портфеля, используя cvxpy.
initial_weights = [0.045, 0.035, 0.024, 0.028...]
rets = (np.log(data/data.shift(1))
w = cvx.Variable(38)
ret = np.sum(rets.mean()*w)*252
prob = cvx.Problem(cvx.Maximize(ret), [cvx.sum_entries(w)==1, w>0.02, w<0.06])
result = prob.solve()
После решения значение w.value имеет вид [[0,02], [0,02], [0,04] ...]
Я хочу добавить ограничение, которое работает примерно так:
for i in range(len(initial_weights)):
abs(initial_weights[i]-w[1][i])>0.005
Есть ли у кого-нибудь предложения о том, как включить это в ограничения?