我有一个DataFrame
如下:
Name Volatility Return
a 0.0243 0.212
b 0.0321 0.431
c 0.0323 0.443
d 0.0391 0.2123
e 0.0433 0.3123
我想要一个Volatility
{Volatility
和该波动性的最大Return
也就是说,我想,在一个新的Df
中Name
和在我的portfolio
中的资产百分比,它给出了Volatility
的最大Return
等于0.035
因此,我需要求解一个具有多个条件的方程组,以获得固定结果(Volatility == 0.035
)的最佳解(最高Return
)
条件是:
下面是一种使用Z3Py的方法,这是一种开源的SAT/SMT解算器。 在SAT/SMT解算器中,您可以将代码编写为条件列表,程序会找到最佳解决方案(或者在使用Z3作为解算器时,仅找到满足所有条件的解决方案)
最初SAT解算器只处理纯布尔表达式,但现代SAT/SMT解算器也允许将固定位和无限整数、分数、实数甚至函数作为中心变量
为了将给定的方程写入Z3,它们被逐字转换为Z3表达式。下面的代码注释了每个步骤
结果:
您可以轻松添加其他约束,例如“任何资产都不能超过总资产的30%”:
这将导致:
相关问题 更多 >
编程相关推荐