【问题标题】:Programmatically compare two lines (stock pattern matching)以编程方式比较两行(股票模式匹配)
【发布时间】:2008-12-18 00:15:10
【问题描述】:

我想做的是采用某种股票模式(定义为一系列 x 和 y 坐标)并将其与历史股票价格进行比较。如果我在历史价格中发现任何与我定义的模式相似的东西,我想将其作为匹配项返回。

我不确定如何确定两条曲线的相似程度。我做了一些研究,你可以找到两条直线的相似性(使用线性回归),但我还没有找到比较两条曲线的好方法。

我现在最好的方法是从我正在查看的历史数据范围中获取几个高点和低点,找到线的斜率,并将这些斜率与我试图匹配的模式的斜率进行比较如果它们大致相同。

有更好的想法吗?我很想听听他们的声音!

编辑:感谢您的意见!我之前考虑过最小二乘法,但我不确定该去哪里。不过,在我收到输入之后,我认为首先计算每条线的最小二乘以稍微平滑数据,然后像 James 建议的那样缩放和拉伸模式应该可以得到我想要的。

我计划使用它来识别股票中的某些技术标志,以确定买入和卖出信号。已经有一些网站在某种程度上做到了这一点(such as stockfetcher),但我当然想自己尝试一下,看看能不能做得更好。

【问题讨论】:

    标签: pattern-matching stocks


    【解决方案1】:

    计算每个点上残差(y 差)的总最小二乘。这应该为您提供几何拟合的度量(它们看起来有多相似)。然后,您应该能够为“足够相似”设置一些容差。

    http://en.wikipedia.org/wiki/Curve_fitting

    【讨论】:

      【解决方案2】:

      数学不是我的强项,但你可以使用Correlation

      计算两个数据集之间的相关性值,如果相关性大于某个值(0.8?),则认为这两个数据集相似足够

      【讨论】:

        【解决方案3】:

        其中一个问题是使用非线性函数的曲线拟合并不总是适用于您的某些模式,具体取决于它们的复杂程度。您可以使用二次或三次或其他多项式的阶数来获得更准确的结果,但这并不是在所有情况下都有效,尤其是在数据随时间发生剧烈变化的情况下。

        老实说,我认为一个合理且相对简单的解决方案是“缩放”和“拉伸”您的模式,使其出现在与历史数据相同的范围内。您可以对 x 轴使用插值,对 y 轴使用乘法加偏移。之后,只需查看每个点的平方差的平均值,如果低于阈值,则可以认为它是匹配的。它需要进行一些调整才能获得可预测的结果,但我认为这是一种很好的方法,它应该允许您定义任何类型的模式,而无需依赖回归产生良好拟合的曲线。本质上它只是统计的应用。您还可以查看标准差或方差以获得更全面的方法。

        【讨论】:

          【解决方案4】:

          或者看看衍生品?

          理论上,股票价格运动通常被建模为带有漂移因子的布朗运动。 (我知道的很少,但是看看here

          如果你不介意我问,那会是什么目的?

          【讨论】:

          • 利润,当然!过去的行为预示着未来的行为! :P
          • 布朗运动与棕色音符有什么关系吗? :)
          【解决方案5】:

          一种想法可能是采用不同时间范围的移动平均值(每周、几个月、几年;每周、几个月、几年等),并将它们与现在的移动平均值进行比较。

          各个平均值也可以让您更轻松地进行比较。如果平均值中的连续项目采用某种标准化形式(例如从 0..1 考虑拆分等),您可以将向量中的连续元素与在epsilon的某个范围内互相匹配,并获得匹配的潜力。

          只是一个想法。

          Mathworld (http://mathworld.wolfram.com/) 也应该有一些曲线比较。

          【讨论】:

            【解决方案6】:

            最小二乘并不是你能做的最好的。使用 RANSAC 算法。它会处理这种数据,因为这种数据非常不可预测,而且经常是嘈杂的。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-10-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多