金融市場でのパターン認識


8

金融市場のパターンを認識するのに最適な機械学習モデルまたはディープラーニングモデル(教師あり学習が必要)はどれですか。

金融市場でのパターン認識の意味:次の画像は、サンプルパターン(つまり、頭と肩)がどのように見えるかを示しています。

画像1:

頭と肩のパターンのプロトタイプ

次の画像は、実際のチャートイベントで実際にどのように形成されるかを示しています。

画像2:

実際のチャートイベントの頭と肩

私がやろうとしていることは、画像1と同様のパターンは頭と肩のパターンとして定義できますが、グラフ(価格チャート)では画像1ほど明確に形成されません。画像2は頭と肩のサンプルですチャート(価格チャート)のパターンフォーム。画像2にあるように、通常のアルゴリズムまたは分析では頭と肩のパターンとして識別できません(多くの肩と頭に誤解を招く可能性が高い構造と多くの高低があるため)その他の構造)。同様の(画像2のような)パターンが形成されたときに、頭と肩のパターンを認識するようにマシンをトレーニングすることを期待しています。

お時間をいただきありがとうございます。

間違った方向に進んでいる場合はお知らせください。私は機械学習の初心者の知識しか持っていません。


1
それで、あなたはバイナリ分類器(弱気対強気)が必要ですか?ここでたむろ
Emre

私の意図は、チャートで上記のパターンを認識することでした。チャートで使用されるデータは、任意のタイプのデータ(たとえば、株式市場データ)にすることができます。チャートのよりきれいな画像を使用する必要がありました。
Suraj Neupane

@SurajNeupane質問は少し不明確です。詳しく説明してください。あなたが述べたことに基づいて、私はあなたが動く窓に特徴を作成し、それを教師付き分類問題として扱うことができると思います。
iratzhash 2017年

あなたを誤解させてしまった場合は、謝罪します。私はそのトピックについてさらに詳しく説明しました。それでもまだはっきりしない場合は、別の方法で説明します。
Suraj Neupane 2017年

回答:


1

これらは役に立つかもしれないいくつかの提案です。

  1. 曲線上のデータは、私の国の道路よりもバンピーです。ですから、曲線を滑らかにすることから始めるべきだと思います。最も単純な中央値平滑化から、LOESSなどのローカル回帰モデルまで、多くの平滑化フィルターがあります。微調整するパラメーターがいくつかあります。例を見てください。
  2. 極大値を見つける。Pythonのnumpyにはこのための実装があり、これは役立つはずです。

私の考えは、基本的に頭と肩、つまり3つの最大値が得られるまでスムーズにすることです。

警告:スムージングは​​、曲線上のノイズ(文字通りのノイズの意味ではない)の量を減らしますが、曲線を元の位置からシフトして表現する傾向があります。

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()

このような方法で、確認が必要になる可能性のある方向が示されることを願っています。


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]) plt.plot(lowess(sample_points,range(len(sample_points)), is_sorted=True, frac=0.2, it=0),'b-'); plt.show(); これはパターンに非常に近いです。このパターンをトレーニングして、実際にチャートに表示されたときに認識されるようにしたかったのです。それは可能ですか?
Suraj Neupane 2017年

@SurajNeupaneはい、それはダイナミックタイムワーピングによって実行できます。しかし、左肩と右肩のタイミングには特定のパターンがなく、カーブのどの時点でも発生する可能性があるため、スムージング後に最大値を見つけることをお勧めします。
Kiritee Gak 2017


2

この論文を見ましたか?著者は、DTWを使用してチャートパターンのコレクションを識別します。


0

パーセンテージを使用してパターンを模倣できるようです。両肩の高さはどのくらいですか(頭)両肩は同じ高さにする必要がありますか?このわずかな違いは何ですか。回答を見つけることは、成功したパターンのパーセンテージが何であったかを確認するためにチャートを調べた後に来るかもしれません。次にこれを模倣します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.