[Python]機械学習(ディープラーニング)でビットコインの価格予想をしてみた

自動売買

機械学習(ディープラーニング)を使って、ビットコインの価格予想に挑戦しました

完璧な予想結果とは言えませんが、いい結果が出たので記事にまとめます

機械学習について

機械学習とは

機械学習とは、プログラムに学習をさせて、その学習をもとに予想させることです

どうやって学習させるかというと、人間の脳みたいなものを真似してプログラムで作ります

いわゆるニューラルネットワークを作ります

人間の脳を真似たプログラムに、データを学習させていきます

詳しく知りたい方は、この本を参考にしてみてください

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

機械学習は2つのことができる

機械学習(人間の脳を真似たプログラムに学習させること)で、何ができるかというと、

回帰」と「分類」2つのことをすることができます

回帰(値を予想するとき)

過去のデータから、未来の値を予測することができます

これが、「回帰」です

例えばこんな時に使います

・これまでの気温から明日の気温を予想

・緯度と軽度から降水量を予想

・来期の売り上げ予想

・株価予想

分類(クラス分類するとき)

過去のデータから、似たもの同士を分けることができます

それが、「分類」です

例えばこんな時に使います

・画像が犬なのか猫なのか分類

・試合に勝つのか負けるのか分類

今回は、機械学習でできること2つのうち「分類」を使いました

具体的に、チャートからビットコイン価格が上がるパターンなのか下がるパターンなのかを分類します

機械学習(ディープラーニング)でビットコインの価格予想をしてみた

上に述べたように、チャートを学習させビットコイン価格が上がるパターンなのか下がるパターンなのかを分類します

やったことはこの2つです

(1)ビットコインチャートを学習させる

(2)テストする

機械学習(1)ビットコインチャートを学習させる

ビットコインチャートのパターンを学習させます

どうやって学習させるかと言うと、問題と答えをプログラムに与えます

これが教師データになります

問題(次は上がる?下がる?)

答え(下がる)

このような「問題」と「答え」のデータを、Pythonプログラムで作った脳に与えて、学習させます

今回は、上の図のような「問題」と「答え」を500個用意し、学習させました

学習させるデータは、過去のビットコインチャートから持ってきました

データを取得する方法はこの記事に書いてあります

機械学習(2)テストする

(1)で使ったデータとは別のデータを使って、50回テストしました

これがテストデータになります

すなわち、学習をもとに別の日のデータを新しく50回分予想させ、的中率を確かめました

テスト(次は上がる?下がる?)

結果

上のように、プログラムにチャートを学習させ、ビットコイン価格が上がるパターンなのか下がるパターンなのかを予測しました

結果、「上がるパターン」か「下がるパターン」かの予想の的中率は52%でした

的中率52%とはどのくらいなのでしょうか?

ランダムに予想した場合の的中率は50%(2分の1)です

なので、ランダムに予想した場合よりも、2%だけ的中率が上がったことになります

2%だけです、、

この結果の捉え方は色々あると思いますが、僕はいい結果だと思っています

反省点

反省点を2つにまとめました

反省(1)データ量が少なかった

今回はデータ量を500回分しか用意しませんでした

一般的な機械学習では、100,000回くらいのデータを使うので、少なすぎました

ビットコインの歴史は浅いので、データ数に限りがありますが、もう少し多くのデータを学習させれば的中率が上がるのではないかと思います

反省(2)データ種類が少なかった

今回はチャートのデータだけを学習させました

これは、人間で言うと、チャートだけ見て売買判断をしているのと同じです

チャートだけでは判断材料が少ないので、チャートのみを頼りに投資をする人は少ないと思います

一般的に、ビットコインの投資分析をするときは、テクニカル指標を参考にします

例)移動平均、MACD、ボリンジャーバンド

学習させるデータにテクニカル指標を導入すれば、的中率も上がると考えられます

これらの反省点をもとに、プログラムを改善していこうと思います

コメント

タイトルとURLをコピーしました