引言:
邢不行的系列帖子“量化小讲堂”,通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助。
【必读文章】:《10年400倍策略分享-附视频逐行讲解代码》
【历史文章汇总】:https://bbs.pinggu.org/thread-3950124-1-1.html
微信个人号:xingbuxing0807,有问题欢迎交流
量化投资中,计算技术指标时常见的8个坑(上)
这是邢不行第49 期量化小讲堂的分享
“我自己计算的指标,跟同花顺给出的指标值差别很大,这是什么情况?”
“talib计算的指标和很多主流平台也不一样……很好奇参数相同为何差别这么大?”
“有人算过macd指标吗?算出来和wind提供的数值相差有点多呀。”
以上问题都来自我量化课程答疑群里的小伙伴。
我们在做量化交易的时候,经常会自己编程计算一些技术指标。计算完之后为了验证准确性,会和行情软件上的数据进行对比,此时往往会发现有差别,就会产生以上的疑问。
那么这些差异,是什么原因造成的呢?我们应该采用什么样的应对措施呢?本文就列举了几个常见错误,来帮大家避免这些问题。
01
股票价格是否复权
如果你是根据股票数据计算指标,第一点需要注意的是,你的股票数据是否经过复权处理。
在股票市场里,因为分红派息、拆股送股等原因,股价会发生异常变化。为了消除这些异常变化,大家往往会对股票数据进行复权处理。
以下是亨通光电这个股票的原始价格和复权之后的价格。可以看出,原始数据的K线图中有一个巨大的缺口。
亨通光电原始数据
亨通光电复权后的数据
针对这样的股票,我们在计算指标的时候就要特别留意:我们自己使用的数据是否进行了复权。如果你的数据没有复权,而行情软件使用的数据复权了,那么自然计算出来的技术指标的结果是不一样的。
02
复权方式不一样
另外,即使你保证了你的数据和行情软件一样,都经过了复权处理,但你还要注意:你们的复权方式是否一样。
因为其实复权方式有不同的计算方法。举个简单的例子,股票分红之后会进行扣税,有的复权方法会计算扣税,有的却不会计算。
即使同样是行情软件,复权方法都会不一样。以下是2019年2月28日贵州茅台这个股票在通达信行情软件和大智慧行情软件的数据对比:
贵州茅台在通达信行情软件
贵州茅台在大智慧行情软件
从图中我们可以看到,同样的股票、同样的日期、同样的后复权,但最后的数据却不一样。这其实就是两个软件计算复权的方式不一样导致的。感兴趣的可以扒扒它们的计算公式,或者加我微信xingbuxing0807交流。
所以我们要特别留意自己数据的复权方式。如果你的数据和行情软件数据的复权方法不一样,那最终计算出来的技术指标肯定是有差别的。
03
股票数据开始时间是否一样
除了复权之外,我们还要留意股票数据的完整性。
很多技术指标,即使用的数据一样,但如果你开始计算指标的时间不一样,最终结果也会差很多。
比如当你刚打开行情软件的时候,由于网络等原因可能导致股票数据加载不完全,它上面显示的技术指标可能是从6个月之前开始算的。
但是你自己的数据是从6年之前开始计算的,两者的开始时间不一样,这种情况就会造成某些技术指标的结果不一样。
当然也有可能是你自己数据比较短,只有最近一部分时间,这样也会造成和行情软件的不一致。
所以,当自己计算的技术指标与交易所显示的不同,那我们要去注意一下两者的数开始时间是否一致。
04
数字货币市场中交易所不一样
之前讲了股票,接下来讲讲数字货币。
首先是不要在不同的交易所之间比较技术指标。
数字货币的交易所有几千家。交易所之间的买卖交易是互相独立的,因此它们的交易数据也是各自独立存在而不相干的。
例如,以下两幅图是bitfinex交易所和okex交易所BTC/USDT交易对的K线数据对比。
bitfinex交易所
okex交易所
这两幅图对应的时间段完全相同,仔细观察会发现,两者价格走势接近,但不是完全一样的。所以基于此算出来的技术指标肯定也不会完全一样。
所以,我们在计算指标的时候,千万不要自己的数据是来自一家交易所的,但是却对照着另外一家交易所的行情数据去对比计算出的技术指标,这肯定是不一样的。
其他几个坑,详见下篇