pandas df列

时间:2018-02-12 00:06:53

标签: python pandas numpy time-series

在Larry Connors的技术交易书中,我发现了一个简单的指标,即对于金融资产时间序列,它衡量的是同一方向的连续关闭数。个别日子的得分为-1,0或+1,取决于收盘价是否低于,等于或高于前一收盘价。

系列每天递增关闭的方向相同,当方向改变时,它会重置为-1,0或1。

这就是我到目前为止:

df['sign'] = np.sign(np.log(df['close']/df['close'].shift(1)).map(str)
df['streak'] = df.groupby((df['sign'] != df['sign'].shift(1)).cumsum()).cumcount()+1

这捕获条纹,但不指示方向,因为我使用资产的返回

  

(np.log(DF [ '关闭'] / DF [ '关闭']。移位(1))

我今天收盘=昨天收盘时没有捕捉到0的状态。 如何修改代码以捕获效果;如果可能,没有“签名”栏?

1 个答案:

答案 0 :(得分:1)

你在99%的路上:

df['sign'] = np.sign(np.log(df['close']/df['close'].shift(1))).map(str)
df['streak'] = df.groupby((df['sign'] !=df['sign'].shift(1)).cumsum()).cumcount()+1
df['final_streak'] = df['sign'].astype(float)*df['streak']

应该给你你想要的东西(不知道怎么做而不使用sign栏,考虑到你已经完成的工作,这个解决方案似乎最简单。)