30
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

メタラベリングと2段階機械学習を使った株価変化の予測

Last updated at Posted at 2020-09-26

#1 この記事は?

ファイナンス機械学習(Advanced in Financial Machine Learning)の第3章には、Triple-Barrier Methodとメタラベルを導入した2段階機械学習手法を導入し、現時点の株価のデータが制限時間内までにTriple-Barrierスレッシュ上限を超えるか、またTriple-Barrierスレッシュ下限を超えるか、それともTriple-Barrierスレッシュ上下限内で収まるかを予測する手法を紹介している。この手法をビットコインに適用し、F1スコアを改善した事例がこちら(Financial Machine Learning Part 1: Labels)に書かれています。概念自体がやはり難しいので(Financial Machine Learning Part 1: Labels)をかみ砕いて解説をした記事を書きたいと思います。

参考記事
2段階学習モデルによるperformance metrixの改善
Financial Machine Learning Part 1: Labels

#2 何がやりたいの?

現在の株価が、制限時間内に①スレッシュ上限を超えるか?  ②スレッシュ下限を下回るか? ③スレッシュ上下限内で推移するのか?を予測したい。将来の株価そのものを予測するわけではなく、①スレッシュ上限を超えるか?, ②スレッシュ下限を下回るか?, ③スレッシュ上下限内で推移するのか?の3つのケースのどれになるのかを予測したいわけです。

119.JPG

#3 どのようにやるの?

###3-1 2段階機械学習を使う

任意の時間を起点にTriple-Barrier内のビットコインの価格の動き(Triple-Barrierスレッシュ上限に達した。スレッシュ下限に達した。Triple-Barrier内に収まった)を記録した訓練データを1st機械学習モデル(ロジスティック回帰)に入力し、1st機械学習モデルを訓練する。1st機械学習モデルの出力と、訓練データを使い、2nd機械学習モデルを訓練する。

###3-2 2段階機械学習をメリットは?

2段階機械学習モデルを使うとAccuracyを向上させることができる。

128.JPG

#4 何ができたの?
2018年12月4日→2018年12月9日のビットコインの価格のデータを「2段階機械学習モデル」を適用することでAccuracyを向上させることができた。

●2018年12月4日→2018年12月9日のビットコイン価格
129.JPG

●「2段階機械学習モデル」を適用することでAccuracyとF1-scoreを向上できた。(予測精度が向上した。)
つまり、「2段階機械学習モデル」を適用することで

[TN] 価格がTriple-Barrier内で推移すると予測 → 実際にTriple-Barrier内で推移すると予測
[TP] 価格が上がると予測→実際に価格が上がった
[TP] 価格が下がると予測→実際に価格が下がった。
の頻度を向上させることができた。
127.JPG

訓練データ、テストデータを訓練された機械学習モデルに入力し、Confusion matrixを算出した。TP(True Positive)は利確パターン、逆にFP(False Positive)は損切パターン、TN(True Negative)、FN(False Negative)は何もしないパターンなので、TPの個数が増えて、FPの個数が減ることが好ましいといえます。

130.JPG

実際、2nd modelは1st modelに対し
・訓練データでは・・・TP向上、FP減少なので 利確確率が向上している。Accuracy,F1-scoreも向上している。
・テストデータでは・・・TP減少、FP減少。AccuracyとF1-scoreが向上しているので、機械学習モデルによる予測が当たる確率は上昇しているが、TP減少、FP減少となっているのでどちらが利益をだせるかは状況によりけり。(損切を行う確率は減少していることを評価すべきか)

170.JPG

#5 まとめ

  • ビットコインの将来価格の動き予測に2段階機械学習モデルを適用した。
  • 「2段階機械学習モデル」を適用することでAccuracyとF1-scoreを向上できた。(予測精度が向上した。)
  • 「2段階機械学習モデル」は「1段階機械学習モデル」に対し、訓練データにおいては、利確確率が向上し、損切確率が減少するので好ましい
  • ただしテストデータに適用すると、「2段階機械学習モデル」は「1段階機械学習モデル」に対し、利確確率も損切確率も減少するので、「2段階機械学習モデル」と「1段階機械学習モデル」のどちらが利益を出せるかは状況によりけり。ただし損切を行う確率は減少している

#6 コードの公開

上記を実施したJupyterコードは下記にアップロードしました。

###6-1 日次収益標準偏差の算出(準備)

下記の図に示した流れに沿って日次収益標準偏差を算出します。
120.JPG

###6-2 Label付与方法

時間$t_{i}$での日次収益標準偏差をvolstd($t_{i}$)とする。また時間$t_{i}$での株価を$c[t_{i}]$とします。
Triple-Barrierを定義します。(下記図では、上限閾値Vthu=volstd($t_{i}$),下限閾値Vthd=-volstd($t_{i}$)、,制限時間15分としています。)
$vol=c[t]/c[t_{i}]-1$を計算します。下記に従いLabel=0,-1,1を付与します。

\begin{eqnarray}
Label
=
\begin{cases}
1 & ( vol \geqq Vthu ) \\
0 & ( Vthd \lt b \lt Vthu ) \\
-1 & (vol \lt Vthd)
\end{cases}
\end{eqnarray}

121.JPG

###6-3 Confusion matrixへの割り当ての定義

下記図に従いConfusion matrixへの割り当てを行います。

123.JPG

###6-4 1st model,2nd modelの訓練
124.JPG

###6-5 1st model,2nd modelにテストデータを適用し、Confusion matrixを評価する。
125.JPG

30
30
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?