我正在尝试构建一个尽可能紧密地跟踪指数的投资组合,即最小化跟踪误差。目标函数是最小化以下内容:
求和的表达式如下
我尝试通过以下方式设置问题:
exp = [cvx.log(V[:,t].T*x) - cvx.log(V[:,0].T*x) - R[t] for t in range(1,V.shape[1])]
ln(It/I0) 部分在哪里,R[t]
因为可以预先计算。由于 cvxpy 不允许按表达式除,我尝试转换为对数差异。这个表达式没有错误,但是当我尝试时
for x in exp:
print(x.is_dcp())
我收到一份虚假清单。结果, cvxpy 将无法解决问题,因为它没有纪律。
有没有办法制定这个问题,使其保持纪律?或者,我可以使用 cvxpy 以外的东西吗?