金融市场的模式识别

数据挖掘 机器学习 深度学习
2021-10-07 11:28:26

哪种机器学习或深度学习模型(必须是监督学习)最适合识别金融市场的模式?

我所说的金融市场中的模式识别是什么意思:下图显示了示例模式(即头肩)的样子:

图 1:

头肩形态原型

下图显示了它在实际图表事件中的实际形成方式:

图 2:

真实图表事件中的头肩顶

我想要做的是:任何类似于图 1 的模式都可以定义为头肩模式,但在图表(价格图表)中,它不会像图 1 那样清晰。图 2 是头肩模式的示例图表中的模式形式(价格图表)。如图 2 所示,不能通过正常的算法或分析将其识别为头肩模式(因为有很多高点和低点形成了很多结构,很容易误导成很多肩膀或头或任何其他结构)。我期待训练机器在形成类似(如图 2)图案时 识别头肩图案。

感谢您的时间。

让我知道我是否走错了路。我只有机器学习的初学者知识。

4个回答

您应该查看基于Dynamic Time Warping (DTW) distance的分类器。DTW 是一种计算两个给定序列(例如时间序列)之间最佳匹配的方法。它已被用于监督学习设置,特别是据报道,当用于最近邻分类器时,它取得了最先进的结果。

你看过这篇论文吗?作者使用 DTW 来识别图表模式的集合。

这些是一些可能有用的建议。

  1. 曲线上的数据比我国的道路还要坎坷。所以我认为你应该从平滑曲线开始。有许多平滑过滤器,例如从最简单的中值平滑到局部回归模型(例如LOESS)。有一些参数需要调整。看看这个例子。
  2. 寻找局部最大值。Python 的 numpy对此有一个实现,这应该会有所帮助。

我的想法是基本上平滑,直到你得到你的头和肩膀,即三个最大值。

警告:平滑虽然减少了曲线上的噪声量(不是字面上的噪声),但它倾向于将曲线从其原始位置移动以表示它。

示例 Python 实现将类似于

from statsmodels.nonparametric.smoothers_lowess import lowess
import numpy as np
from scipy.signal import argrelextrema
import matplotlib.pyplot as plt
sample_points =  np.array([1,2.3,3.5,3,4.5,5,2.25,33.3,5,6.7,7.3,56.0,70.1,4.2,5.4,6.2,4.4,100,2.9,45,10,3.4,4.8,50,2.3,3.45,5.5,6.7,7.9,8.7,6.1])
for i in np.arange(0,0.5,0.05):
    # i in the loop is the percentage of data points we are inputing for the loess regression. Wiki atricle explains it, I guess
    filtered = lowess(sample_points,range(len(sample_points)), is_sorted=True, frac=i, it=0)
    maxima = argrelextrema(filtered[:,1], np.greater)
    if len(maxima[0]) == 3:
        plt.plot(filtered[:,1])
        plt.show()

我希望这种方式可以说明您可能需要检查的地方。

您似乎可以使用百分比来模仿这种模式。两肩到峰内大约多高?(头)两肩要平吗?完美或确实给出了细微的差别这个细微的差别是什么。在研究图表以查看成功模式的百分比后,可能会找到答案。然后模仿这个。