我想比较一下简单的移动平均策略的收益率和遵循教科书代码的原始收益率。唯一的区别在于对不适用数据的处理,结果完全不同。你知道吗
根据df.dropna(inplace=True)
的定义,它在同一个变量中保持具有有效项的数据帧,该变量应等于df=df.dropna()
。但结果不同,为什么?你知道吗
1.教科书治疗:
data=pd.DataFrame(data)
data['SMA1'] = data['Close'].rolling(42).mean()
data['SMA2'] = data['Close'].rolling(252).mean()
data['Position'] = np.where(data['SMA1'] > data['SMA2'], 1, -1)
data['Returns'] = np.log(data['Close'] / data['Close'].shift(1))
data['Strategy'] = data['Position'].shift(1) * data['Returns']
data.dropna(inplace=True)
np.exp(data[['Returns', 'Strategy']].sum())
#output 1
#Returns 4.017144
#Strategy 5.811294
2.我的治疗
data=pd.DataFrame(data)
data['SMA1'] = data['Close'].rolling(42).mean()
data['SMA2'] = data['Close'].rolling(252).mean()
data['Position'] = np.where(data['SMA1'] > data['SMA2'], 1, -1)
data['Returns'] = np.log(data['Close'] / data['Close'].shift(1))
data['Strategy'] = data['Position'].shift(1) * data['Returns']
data=data.dropna()
np.exp(data[['Returns', 'Strategy']].sum())
#output 2
#Returns 3.199432
#Strategy 4.628373
目前没有回答
相关问题 更多 >
编程相关推荐