57 │ def calc_series_diff_like_volume(self, s):
58 │ volume = s.copy()
59 │
60 │ volume_diff = volume.diff()
61 │ volume_diff[0] = volume[0]
62 │
63 │ volume_in_tick = volume_diff
64 │ negative_index = volume_diff<0
65 │ volume_in_tick[negative_index] = volume[negative_index]
66 │ return volume_in_tick
这是我写的函数,tick数据里面的volume是当天volume的总和,但是我想要计算出来这一个tick内的成交量,所以自然的是该用目前这个tick的volume减去last tick的volume,然后单独处理第一个tick的volume,因为pandas的diff后第一个会变成nan,还有其他的为负数的tick的volume,因为这些是每天刚开市的时候清零的数据,减去上一天的最后一个tick会变成负数,每天第一个tick的volume就不需要改,直接赋值为这天的第一个tick的volume
但是这样我用天勤的数据算出来,au2006在2月份的volume总共为1679849, 而上期所的数据显示,是1640768
请问哪里错了呢?
下面是我的算法根据天勤的数据计算的结果,其中的au2003的数据错的更离谱,上期所的数据是53,而我的是8459
pt.df.filter(like='volume_in_tick').sum()
au2003.volume_in_tick 8459.0
au2004.volume_in_tick 133375.0
au2006.volume_in_tick 1679849.0