我們在證券價格計算的時候,經常需要用到價格差分的計算,比如說 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 (' 既非強勢股也非弱勢股 ')