
掌握向量化回测
|
139
data['position'] = np.sign(data['return'].rolling(momentum).mean())
data['strategy'] = data['position'].shift(1) * data['return']
# determine when a trade takes place
data.dropna(inplace=True)
trades = data['position'].diff().fillna(0) != 0
# subtract transaction costs from return when trade takes place
data['strategy'][trades] -= self.tc
data['creturns'] = self.amount * data['return'].cumsum().apply(np.exp)
data['cstrategy'] = self.amount * \
data['strategy'].cumsum().apply(np.exp)
self.results = data
# absolute performance of the strategy
aperf = self.results['cstrategy'].iloc[-1]
# out-/underperformance ...