如何解决Python CVXPY 最小化百分位变量投资组合优化
我有一组投资组合回报:
public void onBindViewHolder(@NonNull final UserViewHolder holder,final int position) {
if(position == Security.alert_position) {
holder.state.setText("< Activated >");
holder.state.setTextColor(Color.RED);
holder.cards.setBackgroundColor(0x33FF0000);
}
}
和一组对冲工具对数回报:
total
Scenario
20160608 -131,225.96
20160609 -3,526,055.32
20160610 -23,529,796.59
20160613 -21,268,638.69
20160614 -10,528,552.12
... ...
20210528 5,643,877.68
20210531 236,667.34
20210601 8,244,154.88
20210602 -2,213,117.88
20210603 4,807,859.21
我正在使用它来计算历史 VaR,给定投资组合中这些工具的特定权重:
SPY US Equity EEM US Equity TLT US Equity DXY Index HYG US Equity
Scenario
20160608 0.00 0.01 0.01 -0.00 0.00
20160609 -0.00 -0.01 0.01 0.00 -0.00
20160610 -0.01 -0.03 0.00 0.01 -0.00
20160613 -0.01 -0.01 0.00 -0.00 -0.01
20160614 -0.00 -0.00 -0.00 0.01 -0.00
... ... ... ... ... ...
20210528 0.00 0.01 -0.00 0.00 -0.00
20210531 0.00 0.00 0.00 -0.00 0.00
20210601 -0.00 0.02 -0.00 0.00 -0.00
20210602 0.00 0.00 0.00 0.00 0.00
20210603 -0.00 -0.01 -0.00 0.01 -0.00
我正在尝试运行优化,以从对冲投资组合中选择最佳的工具权重,以生成 var 变量的最小值。
我尝试使用 CVXPY 来优化它,但是我收到了这个错误: NotImplementedError:不允许严格的不等式。
我相信这是因为 CVXPY 没有分位数函数。
weights = np.array([-0.5,-0.5,0.5,-0.5])
var = np.quantile((hedge_returns*weights).sum(axis=1) + port_returns,confidence)
这里有什么替代方法的想法吗?
谢谢!
其他想法,对结果矩阵进行排序,并选择正确的间隔,但排序我正在努力。
n = 5
confidence = 0.05
weights = cp.Variable(n)
var = np.quantile(((hedge_returns*np.array(weights)).sum(axis=1) + port_returns),confidence)
obj = cp.Minimize(var)
prob = cp.Problem(objective=obj)
prob.solve() # Returns the optimal value.
print("status:",prob.status)
print("optimal value",prob.value)
print("optimal var",x.value,y.value)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。