![見出し画像](https://assets.st-note.com/production/uploads/images/71848248/rectangle_large_type_2_56bb684420b7ac4c3c4f001d9598f078.png?width=1200)
機械学習でベストチャートパターンを探る!!
株価は買いたい人と売りたい人の需給で決まるのだから、需給の結果を示すチャートには意味がある。とチャートに一定の敬意を払いつつも、
巷に溢れるチャートパターンを見るとなんだか胡散臭い。
おまじないやポエムの類のようにも感じる。
例が示されるけれど、都合の良いデータを抜き出しているだけのように見えるし、上手くいかない時に「だまし」でした。とか言われると、それを許容するなら、なんでもOKじゃん。って思ってしまう。更に言うと、別にチャートが、だまそうとしているわけでもないので、側から見ていると、独り相撲にも見える。
結局、チャートパターンって、検証データが不足しているように思う。
そこで、機械学習を使って、大量のデータから、クラスタリング(グループ化)の機能を使いパフォーマンスが良いベストチャートパターンを独自に作ってみることにした。
実施内容
1.パフォーマンスが良いチャートを抜き出す。(2971枚)
・2018年以降のNasdaq100の銘柄を5日刻みでチャート化。
・2ヶ月で10%以上上昇した銘柄の上昇前3ヶ月(60日)をチャート化。
(トレンドの中央値は10日のため、期間は60日で十分と判断。)
2.機械学習でグループ化。(165枚を27グループに分類)
・無理にグループ化して精度を落とさないよう外れ値(2806枚)を採用。
3.グループ化したチャートの中央値でチャートを作成。
4.出力された結果を個別に確認し見解を整理。
羅列するとシンプルに見えるんだけど、
グループ化で、明らかに違うチャートが混ざってしまう問題あり、この解決に下記を実施して試行錯誤した。
・チャートに特徴を持たせる。最大値・最小値にドットを付ける。
・処理対象の画像サイズを大きくする。
・時系列の特徴を強調するため横に画像を伸ばす。
・画像の色変換処理を試す。
・混ざらないようにグループ数を増やす。
いろいろ試した結果、グループ化できない外れ値のようなチャートを無理にクラスタリングするのが悪いのではないかという結論にいたり、クラスタリング手法を、k-means法から、外れ値が扱えるDBSCAN法へ変更する事で、チャートが混ざる問題を回避した。
それにより精度が上がったが、グループ化ができたのは5%、27グループ165枚となった。(まぁ、機械がグループ化ができない物は、人間も同じパターンと認識するのは困難なので、対象が少ないのは、やむなしだろう。別のアプローチとして、k-means法を使い、数百のグループに無理矢理に分類する事もできるが、その後、人手で妥当性を見ながら取捨選択してパターンを整理するのも難しい。)
DBSCAN法によりグループ化されたサンプルは下記の通り。(同じグループが横に並ぶ。)
![スクリーンショット 0004-02-09 0.39.36](https://assets.st-note.com/production/uploads/images/71796354/picture_pc_2a0040e4d20863ef598267de53e3c967.png)
![スクリーンショット 0004-02-09 0.44.00](https://assets.st-note.com/production/uploads/images/71796557/picture_pc_d7cb07fb651de61209a4add8343185a2.png?width=1200)
量が多いので全ては紹介できないが、ざっと見た感じ良さそうではないだろうか?
次に、これらのチャートに2か月後のデータを追加してグループ毎に中央値でチャートを作成すると下記のような27個のチャートパターンが出力される。
![画像3](https://assets.st-note.com/production/uploads/images/71796788/picture_pc_b721967fc84b0c79971d3dedb68f3b75.png?width=1200)
オレンジ色が1か月後、赤色が2か月後を示す。
これを整理すると下図のように整理できる。
![画像4](https://assets.st-note.com/production/uploads/images/71822048/picture_pc_ab2924ac62909c648a118d63a7889b7a.png?width=1200)
整理すると、トレンドフォローと反発に2つに区分できそうだ。
サインが分かり辛い右側の反発を割愛すると、
パフォーマンスがよいチャートパターンとしては、
上昇トレンド継続とダブルボトムが扱いやすそうだ。
更にダブルボトムに注目すると2回目のボトムは底値を切り上げている点も注目すべきだろう。
ここで逆にパフォーマンスが悪かったチャートを同様に調べて見ると、下記の様になった。
![画像8](https://assets.st-note.com/production/uploads/images/71842262/picture_pc_373a83e64e071fbab99b8e9e7784ae56.png?width=1200)
徐々に上昇力を失って、ダブルトップをつけて下落しているものや、上昇トレンドが緩やかになって下落しているように見えるもあるが、あまり目立った傾向が無く下落しているものも多い。
これらを見ていると、個人的には売却時はチャートの形で判断するよりは、明確な売却ルールを定めておいた方が良さそうに思われる。
売却ルールの例
・5%下落したら売却する。
・MACDが売りに転換したら売却する。
・X日移動平均線を下回ったら売却する。
次に、パフォーマンスの良いグループ(反発)のチャートを下記の様に個別に出力して見た。薄く灰色になっている部分がグループ化で使用した部分である。
![画像6](https://assets.st-note.com/production/uploads/images/71836985/picture_pc_b7d53a02bae94ac1b9ae5b60d77ad6d7.png?width=1200)
![画像8](https://assets.st-note.com/production/uploads/images/71838625/picture_pc_93668a10d70c34b9fc70f4a9581f0eff.png?width=1200)
![画像8](https://assets.st-note.com/production/uploads/images/71839044/picture_pc_0f268d3a24028f1bcdf3e45576754257.png?width=1200)
ここで使用したコードはこれです。
これを見ると、(VIXが30を超えた時に)ダブルボトムを付けたのを確認して買うのが良さそうである。そして、ストキャスティクスの買われ過ぎのサインは無視して「トレンドが変わるまで」ついていくのが良さそうだ。
ここで、気付いた人もいるかも知れないが、これらはコロナショックで売られ過ぎた時のタイミングで同じようなチャートパターンになっている。そして、オンラインへのシフトを意識してスターバックスが弱く、グーグル、フェイスブックが強くなっている。
結局、チャートパターンは大きなファンダメンタルズや時流には勝てない事を示しているようにも見える。
これらを踏まえると、ファンダに逆らわず、需給をチャートで確認して売買するのが良さそうに思われる。
今回の結果を整理すると、作成できたチャートパターンは下図のとおり。
![画像10](https://assets.st-note.com/production/uploads/images/71848453/picture_pc_56d413470acbe9173c1a45faa448b8da.png)
![画像9](https://assets.st-note.com/production/uploads/images/71848430/picture_pc_d8573b49a2e1493de8ea2ffc3a1b5a10.png?width=1200)
機械学習のクラスタリングで、パフォーマンスが良いチャートを分類すると、上昇トレンド継続とダブルボトムからの反発に分類できた。
詳しく状況を確認すると、買われ過ぎは無視してトレンドが変わるまでついていくのが良く、重要なポイントはファンダ・時流に逆らわない事である。
と言ったところだろうか。
今回の調査では、パフォーマンスが良いチャートパターンとして、カップウィズハンドルみたいな需給が拮抗する上値抵抗線からの上昇パターンを抽出する事は出来なかった。判定期間(3ヵ月)が短すぎたのか、今回のクラスタリング手法では抽出が難しかったのか、不明だが、この辺りはもう少し調査をしてみたい。
今回の記事が、なにかの参考になれば幸いです。
では!
おつかれさん
「缶コーヒーをご馳走してあげよう」という太っ腹な人は投げ銭を!
参考になったら「ハートボタン、フォロー、リツイート」をお願いします。読まれる可能性があがるので、次の記事を書くやる気が出ます
おまけ
どんなコーディングだったのか知りたい人へ、
今回使用したコードをおまけで付けておきます。
煩雑なコードになっているので、その点は覚悟しておいてください(笑)
ここから先は
¥ 100
この記事が気に入ったらサポートをしてみませんか?