Python 基于给定阈值查找与趋势斜率的偏差

Python 基于给定阈值查找与趋势斜率的偏差,python,pandas,time-series,signal-processing,data-analysis,Python,Pandas,Time Series,Signal Processing,Data Analysis,我有这样的时间序列: Date,val 02/06/1980,0.9866 03/06/1980,0.9859 04/06/1980,0.9657 05/06/1980,0.9859 06/06/1980,0.9864 09/06/1980,0.9871 10/06/1980,0.9877 11/06/1980,0.9885 12/06/1980,0.9895 13/06/1980,0.9905 16/06/1980,0.9921 17/06/1980,0.9933 18/06/1980,0.9

我有这样的时间序列:

Date,val
02/06/1980,0.9866
03/06/1980,0.9859
04/06/1980,0.9657
05/06/1980,0.9859
06/06/1980,0.9864
09/06/1980,0.9871
10/06/1980,0.9877
11/06/1980,0.9885
12/06/1980,0.9895
13/06/1980,0.9905
16/06/1980,0.9921
17/06/1980,0.9933
18/06/1980,0.9945
19/06/1980,0.9958
20/06/1980,0.9971
23/06/1980,0.9989
24/06/1980,1.0244
25/06/1980,1.0029
26/06/1980,1.005
27/06/1980,1.0068
30/06/1980,1.0082
01/07/1980,1.0096
02/07/1980,1.011
03/07/1980,1.0127
07/07/1980,1.0149
08/07/1980,1.0168
09/07/1980,1.0185
10/07/1980,1.0198
11/07/1980,1.0213
14/07/1980,1.0232
15/07/1980,1.025
16/07/1980,1.027
17/07/1980,1.0292
18/07/1980,1.0316
21/07/1980,1.0341
22/07/1980,1.0361
23/07/1980,1.038
24/07/1980,1.0399
25/07/1980,1.0415
28/07/1980,1.0431
29/07/1980,1.0448
30/07/1980,1.0464
31/07/1980,1.0481
01/08/1980,1.0497
04/08/1980,1.0512
05/08/1980,1.0528
06/08/1980,1.0543
07/08/1980,1.0561
08/08/1980,1.0582
11/08/1980,1.0604
12/08/1980,1.0623
13/08/1980,1.0641
14/08/1980,1.0661
15/08/1980,1.0681
18/08/1980,1.0698
19/08/1980,1.0714
20/08/1980,1.0732
21/08/1980,1.0749
22/08/1980,1.0764
25/08/1980,1.0778
26/08/1980,1.079
价值列是63天移动平均数除以252天移动平均数的乘积。我想确定斜率从最近底部上升5%(或更多)的时间段,以及斜率从最近顶部下降5%(或更多)的时间段。结果应该大致如下所示:


除了遍历数据框并定位底部/顶部并逐个进行比较之外,还有其他方法吗?我觉得这很平常,也很难想象,这会是什么样子

如果移动在-5和+5之间,会发生什么?我想我们可以使用
groupby
cumsum
pct\u change
。但是我需要确切地知道在itervalos中的除法规则是什么来创建代码我会建议一个使用离散导数的解决方案谢谢。基本上,您希望将斜坡从最近底部上升超过5%的时间段标记为risk_on=1,当falls risk_off=1,当不满足条件时,两个风险区都等于0,因此您处于中性区。@cristianhantig谢谢。你是否知道某个特定的文献或类似的问题是用离散导数解决的?@krakowi我不知道任何特定的文献,它只是出现在我的脑海中。另外,我会计算斜率的分布,并选择某个百分位以上的斜率(比如说95),如果移动在-5和+5之间,会发生什么?我想我们可以使用
groupby
cumsum
pct\u change
。但是我需要确切地知道在itervalos中的除法规则是什么来创建代码我会建议一个使用离散导数的解决方案谢谢。基本上,您希望将斜坡从最近底部上升超过5%的时间段标记为risk_on=1,当falls risk_off=1,当不满足条件时,两个风险区都等于0,因此您处于中性区。@cristianhantig谢谢。你是否知道某个特定的文献或类似的问题是用离散导数解决的?@krakowi我不知道任何特定的文献,它只是出现在我的脑海中。此外,我会计算斜率的分布,并选择某个百分位以上的斜率(比如说95)