我的功能是这样的:
def computer_daily_returns(df):
daily_returns = df.copy()
daily_returns[1:] = (df[1:] / df[:-1].values) - 1
**daily_returns.ix[0, :] = 0**
return daily_returns
并生成如下df:
GOOG AAPL GLD XOM
2010-01-04 0.000000 0.000000 0.000000 0.000000
2010-01-05 -0.004404 0.001689 -0.000911 0.003873
2010-01-06 -0.025209 -0.015881 0.016500 0.008642
2010-01-07 -0.023280 -0.001857 -0.006188 -0.003213
2010-01-08 0.013331 0.006629 0.004963 -0.003991
2010-01-11 -0.001512 -0.008812 0.013289 0.011250
2010-01-12 -0.017684 -0.011376 -0.020913 -0.005029
当我尝试使用
时allocs = spo.minimize(sharpe_ratio, guess_allocs, args=(normed,) bla bla bla..
它给了我
ValueError("Objective function must return a scalar")
sharpe_ratio
是一个函数,包含computer_daily_returns
函数。
删除后daily_returns.ix[0, :] = 0
一切正常......