以编程方式比较两行(库存模式匹配)

时间:2008-12-18 00:15:11

标签: pattern-matching stocks

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

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

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

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

编辑:感谢您的输入!之前我考虑过最小二乘法,但我不知道该去哪里。在收到输入之后,我认为首先计算每行的最小平方以稍微平滑数据,然后缩放和拉伸像James建议的模式应该得到我正在寻找的东西。

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

6 个答案:

答案 0 :(得分:2)

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

请参阅http://en.wikipedia.org/wiki/Curve_fitting

答案 1 :(得分:1)

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

计算两个数据集之间的相关值,如果相关性大于某个值(.8?),则考虑类似足够的集合。

答案 2 :(得分:0)

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

单个平均值也可以让您更容易比较..如果平均值中的连续项目处于某种标准化形式(例如从0..1到分裂等),您可以将向量中的连续元素进行比较在某个范围epsilon内彼此相对,并获得匹配的潜力。

只是一个想法。

Mathworld(http://mathworld.wolfram.com/)也应该对曲线进行比较。

答案 3 :(得分:0)

其中一个问题是使用非线性函数的曲线拟合并不总是适用于某些模式,具体取决于它们的复杂程度。您可以使用二次或三次或其他一些多项式的顺序来获得更准确的结果,但它并不适用于所有情况,特别是随着时间的推移数据的任何急剧变化。

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

答案 4 :(得分:0)

或者看看衍生品?

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

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

答案 5 :(得分:0)

最不正方形不是你能做到的最好的。使用RANSAC算法。它将处理这种数据,因为这种数据非常难以预测并且通常很嘈杂。