我们在证券价格计算的时候,经常需要用到价格差分的计算,比如说 Pt-Pt-1 或者是 log(Pt)-log (Pt-1)。有鉴于我们获得的数据往往是完整的时间价格序列,在计算上述的价格差分时往往比较别扭。这种情况下,pandas 的 shift () 和 diff () 函数可以一步帮我们实现价格差分计算功能。
举个例子,中国银行(601988.XSHG)的时间价格序列如下表所示,通过下表也可以看出,diff () 函数其实就是 shift () 函数后,再与原来数字做差值。
PAflog.df.diff ()[1:0] 就可作为价格差分的时间序列,进而更复杂的时间序列分析,比如 ADF 检验等。
利用 diff () 对连续上涨或下跌的股票进行判断的示例程序(运行于 JoinQuant)可参考如下:
# 获取过去 5 天的价格数据,
hist = attribute_history('000001.XSHG', 5, unit='1d',
fields=['open', 'close', 'high', 'low', 'volume', 'money'],
skip_paused=True, df=True, fq='pre')['close']
if all(np.diff(hist)>0):
print ('5 日连续上涨强势股 ')
elif all(np.diff(hist) < 0):
print ('5 日连续下跌弱势股 ')
else:
print (' 既非强势股也非弱势股 ')