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

Pattern matching 以编程方式比较两行(库存模式匹配),pattern-matching,stocks,Pattern Matching,Stocks,我想做的是取一个特定的股票模式(定义为一系列x和y坐标),并将其与历史股票价格进行比较。如果我在历史价格中发现任何与我定义的模式相似的东西,我想将其作为匹配项返回 我不知道如何确定两条曲线有多相似。我做了一些研究,你可以找到两条直线的相似性(使用线性回归),但我还没有找到一个比较两条曲线的好方法 我现在最好的方法是从我正在查看的历史数据范围中获得几个高点和低点,找到直线的斜率,并将它们与我试图匹配的模式的斜率进行比较,看看它们是否大致相同 还有更好的主意吗?我很想听 编辑:感谢您的输入!我以前考

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

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

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

还有更好的主意吗?我很想听

编辑:感谢您的输入!我以前考虑过最小二乘法,但我不确定该怎么做。在我收到输入后,我认为首先计算每行的最小二乘,使数据平滑一点,然后像James建议的那样缩放和拉伸模式,应该可以得到我想要的


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

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

个人平均数也会让你更容易比较。。如果平均值中的连续项采用某种规格化形式(例如,从0..1到拆分等),则可以在某个范围内将向量中的连续元素相互比较
epsilon
,并获得匹配的可能性

只是一个想法


Mathworld()还应该有一些曲线比较的功能。

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


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

或者查看衍生工具

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


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

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


请看

数学不是我的强项,不过你可能会用到


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

最小二乘不是你能做的最好的。使用RANSAC算法。它将处理这类数据,因为这类数据非常不可预测,而且经常有噪音。

当然是利润!过去的行为预示着未来的行为!:PDOS布朗运动与布朗音符有关吗?:)