因为python版本的问题,在新版本的python中对代码进行了修改,如下:
#计算最近N1天内的最高价
result['最近N1天内的最高价'] = result['high'].rolling(N1).max()
#对NAN值进行填充
result['最近N1天内的最高价'] .fillna(value = result['high'].expanding(min_periods = 1).max(),inplace = True)
#计算最近N2天内的最低价
result['最近N2天内的最低价'] = result['low'].rolling(N2).min()
#对最近N2天内的最低值为Nan的进行填充
result['最近N2天内的最低价'].fillna(value = result['low'].expanding(min_periods = 1).min(),inplace = True)
#计算海龟法则每年的额涨跌幅及其收益
year_return = result.set_index('date')[['pctChg','海龟法则每天涨跌幅']].resample('A').apply(lambda x:(x/100+1.0).prod()-1)*100
新版本的python中的resample函数对resample(‘A’,how = )这种形式已经提出警示了。
每天的涨跌幅有些数据不是百分比的形式,所以要注意转化为百分比,除以100即可转换为百分比。
initial_idx = result.iloc[0]['close']/(1+result.iloc[0]['pctChg']/100)#计算最开始一天的开盘价,涨跌幅为百分之几,看数据要除以100,其实是将第一天的数据转化为开盘价。但是这里没有直接用开盘数据,而是由收盘价转化过去的。有点奇怪,用这种方式转化过去的开盘价与表格中原始的开盘价对应不起来,尴尬,困惑。
|