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

#1 この記事は？

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

<b>参考記事</b>
・[2段階学習モデルによるperformance metrixの改善](https://qiita.com/NT1123/items/a4b8d2f73b3e232b2443)
・[Financial Machine Learning Part 1: Labels](https://towardsdatascience.com/financial-machine-learning-part-1-labels-7eeed050f32e)


#2 何がやりたいの？

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

![119.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150223/795346d3-cce6-4f6c-8de2-8b8f8b1d72d6.jpeg)


#3 どのようにやるの？

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

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

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

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


![128.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150223/749dbfcc-136a-4a37-7afe-cfd84c850913.jpeg)

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

●2018年12月4日→2018年12月9日のビットコイン価格
![129.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150223/99f527a9-53d9-4a9c-8f7a-d98e2dbcb408.jpeg)

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

<b>[TN]</b> 価格がTriple-Barrier内で推移すると予測　→　実際にTriple-Barrier内で推移すると予測
<b>[TP]</b> 価格が上がると予測→実際に価格が上がった
<b>[TP]</b> 価格が下がると予測→実際に価格が下がった。
の頻度を向上させることができた。
![127.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150223/83daaef2-7b36-913d-03a0-ceb053b83d06.jpeg)


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

![130.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150223/bbaf0e5d-bd08-336d-9219-d93cb6c93eca.jpeg)

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


![170.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150223/6d46ace5-c893-8ee1-a977-491eb5a4bbf5.jpeg)



#5 まとめ

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



#6 コードの公開

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

https://github.com/fdfpy/studyresult/tree/master/3-5

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

下記の図に示した流れに沿って日次収益標準偏差を算出します。
![120.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150223/7288580c-be27-c6b2-76ac-b8af39f4f1e9.jpeg)

###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を付与します。

```math
\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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150223/8ee1bdfa-fd84-c0f4-3445-ad81ec630bce.jpeg)


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

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

![123.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150223/8d0cde45-028d-5b46-8b15-e48b55302e13.jpeg)

###6-4 1st model,2nd modelの訓練
![124.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150223/823e0085-c222-d37a-6a55-d415b0684a07.jpeg)

###6-5 1st model,2nd modelにテストデータを適用し、Confusion matrixを評価する。
![125.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150223/4e2b0abb-770c-6a77-c2f3-658f8902ff47.jpeg)