我的数组不在范围内
我正在尝试使用 4 种资产投资组合在有效前沿内找到最大夏普比率投资组合。出于某种原因,当我去发现每个资产达到 MSR 所需的权重时,我收到一个超出 0.0 - 1.0 范围的数组,这很奇怪,因为我在上面的公式中写了界限。我该如何解决这个问题?
def msr(riskfree_rate, er, cov):
""" target_ret ->;瓦 """
n = er.shape[0]
init_guess = np.repeat(1/n, n)
bounds = ((0.0, 1.0),)*n
weights_sum_to_1 = {
'type': 'eq',
'fun': lambda weights: np.sum(weights) -1
}
def neg_sharpe_ratio(权重,riskfree_rate,er,cov):
r = erk.portfolio_returns(weights, er)
vol = erk.portfolio_vol(weights, cov)
return -(r - riskfree_rate)/vol
结果 = 最小化(neg_sharpe_ratio, init_guess,
args = (riskfree_rate, er, cov,), method = "SLSQP",
options = {'disp': False},
constraints = (weights_sum_to_1),
bounds=bounds
)
return results.x
rf = 0.1
w_msr = msr( rf、er、cov)
r_msr = erk.portfolio_returns
vol_msr = erk.portfolio_vol(w_msr, cov)
msr(0.1, er[l], cov.loc[l,l])
答案:
array([4.51375048e-15, 1.00000000e+00, 1.40512602e-16 , 0.00000000e+00])
I am trying to find the max Sharpe ratio portfolio within an efficient frontier using a 4 asset portfolio. For some reason when I go to discover the required weights of each asset to reach the MSR, I receive an array that goes beyond the bounds of 0.0 - 1.0 which is weird as I have written the bounds in my formula above. How can I fix this?
def msr(riskfree_rate, er, cov):
"""
target_ret -> W
"""
n = er.shape[0]
init_guess = np.repeat(1/n, n)
bounds = ((0.0, 1.0),)*n
weights_sum_to_1 = {
'type': 'eq',
'fun': lambda weights: np.sum(weights) -1
}
def neg_sharpe_ratio(weights, riskfree_rate, er, cov):
r = erk.portfolio_returns(weights, er)
vol = erk.portfolio_vol(weights, cov)
return -(r - riskfree_rate)/vol
results = minimize(neg_sharpe_ratio, init_guess,
args = (riskfree_rate, er, cov,), method = "SLSQP",
options = {'disp': False},
constraints = (weights_sum_to_1),
bounds=bounds
)
return results.x
rf = 0.1
w_msr = msr(rf, er, cov)
r_msr = erk.portfolio_returns
vol_msr = erk.portfolio_vol(w_msr, cov)
msr(0.1, er[l], cov.loc[l,l])
answer:
array([4.51375048e-15, 1.00000000e+00, 1.40512602e-16, 0.00000000e+00])
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论