macd simple中策略收益的计算 pct_change() cumprod()

今天看了别人简单macd策略的代码,我发现思路有点巧妙,而且最大化利用了一些现成的轮子,在这里做一下记录。
以沪深300为例,
1.指数存成一个series,计算ret = series.pct_change(),这个by element,后一个除以前一个,就是百分比变化,第一个值是NaN
2.策略的买点和卖点,因为条件是非买即卖,比如策略一 hist > 0,策略二 (hist > 0) and (dea > 0),所以就形成一个series,以日期为索引,True False为元素,True转为1,False转为0。
3.上面得到的series,向下shift一个位置,含义就是相当于以买入日的收盘价买入,卖出同理,(实际操作中,存在一定差异),sig_lag
4. sig_ret  = sig_lag * ret,非买入时点乘出来就是0
5. (1 + sig_ret).cumprod(),就得到了收益曲线(cumprod是series或者dataframe的内置方法,就是累积连乘,比如序列[1,2,3,-1]乘出来得到[1,2,6,-6]),这里就有一个假设这个策略是上次卖出的钱又全部投入到下一次的买入

留言

熱門文章