问题描述
我有下面的代码可以工作,但是我确实有两个关于语法如何工作的问题。
# Define some working variables
# n,an int
# er,an (n x 1) np.array of expected returns
# smallcov,an (n x n) matrix of covariances
# init_guess,an (n x 1) np.array of floats
# bounds,a tuple of n tuples,where the inner tuples are (2 x 1)
return_equals_target = {
'type': 'eq',# 'args': (er,),# <===================================================== LINE 1
'fun' : lambda w: target_return - erk.portfolio_return(w,er),}
weights_sum_to_one = {
'type': 'eq','fun' : lambda w: np.sum(w) - 1
}
objective = lambda w,c : w.T @ c @ w
results = minimize(
objective,init_guess,args=(smallcov,method='SLSQP',constraints=(return_equals_target,weights_sum_to_one),bounds = bounds
)
问题1 (更重要)
函数objective
带有两个参数w
和c
。 minimize
怎么知道哪个是最小化的,哪个是最小化的常数?
问题2 请参阅上面的第1行,并考虑是否将我替换的代码及其下面的行替换为以下内容:
'args': (er,'fun' : lambda w,r: target_return - erk.portfolio_return(w,r),
两个版本给出的结果相同,所以如果变量minimize
仍然在作用域内,为什么还要使用er
的'args'参数呢?
感谢您的帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)