首页 > 解决方案 > 动态更改回溯期

问题描述

我正在尝试动态调整熊猫数据框的回溯期,以对不同长度的股票数据进行回归。作为一个简单的例子,以 MA 交叉为例。

date        Prices  Diff    signal

20150101    8.5     -1.5    FALSE
20150101    11.5    0.3     TRUE 
20150102    14.5    4.5     FALSE
20150103    16.67   3.66    FALSE 
20150104    18      2       FALSE
20150105    18.5    0.5     FALSE 
20150106    18.17   -2.17   TRUE 
20150107    17      -3      FALSE

Diff 是 2 条移动平均线之间的差异,并且信号用真/假识别交叉。数字是任意的,只是示例。每个信号之间可能有 10、50、100 等行。

现在我想对信号之间存在的任何长度的价格进行回归,所以在第 6 行我想要价格 [-4:],第 8 行我想要价格 [-1:]。

谁能帮我解决这个问题?在每一行中向后循环,直到我发现最新的信号似乎效率低下。每当信号出现时,我是否应该简单地将索引值分配给变量,并使用该变量来定义回溯期?我对 Python 还是比较陌生,不知道该怎么做。

任何帮助,将不胜感激。谢谢!

标签: pythonpandas

解决方案


我实际上已经解决了这个问题,但是解决方案不是很优雅。如果有人有优雅的解决方案,请告诉我。

    if diff[-1] > 0 and diff[-2] < 0:
        signal = True
        over_count += 1
        under_count = 0
    elif diff[-1] < 0 and diff[-2] > 0:
        signal = False
        under_count += 1
        over_count = 0
    elif signal:
        over_count += 1
    elif not signal:
        under_count += 1

推荐阅读