MachineLearning
Bitcoin
Cryptocurrency
暗号通貨
SENSYDay 17

機械学習で暗号通貨の価格予想をするための構想

More than 1 year has passed since last update.

当記事は、SENSY Advent Calendar 2017の17日目の記事です。

にち、にち、にち、日曜日、暗号通貨すごいですね♪(パクリ)

Twitterの暗号通貨億り人たちを見てると、僕も1秒でも早く億り人になりたい!けど彼らみたいにトレードスキルがないのでウダウダしています。僕の投資スタイルは、{'BTC': '短期(FX)', 'BCH': '中期', 'XRP': '長期(ガチホ)'}です。

(保有歴的には、BTCが2012年末くらいの10,000円くらいの時から古参です。また、記事を書いている途中に戦略変換しまして、BTCの短期トレードの難易度が上がったので現在はトレード方法が異なります。)

こういう感じでウダウダしていた時に、ふと『AIスタートアップで働いているので、機械学習で暗号通貨の価格予想をさせればいいんじゃないか』と思いました。自分のキャリアとも繋がってるし、技術的な勉強としてもすごくいい題材だと思っています。しかし、現在まだまだ見習いなので、大げさなものが作れるわけではないので構想だけ、この記事にまとめていこうと思います。

そして、この計画に則って足りない技術を長期的に勉強したり、作っていったりしていこうかと思っています。

その過程は随時記事化していきたいと思っています。


下調べ

まず、下調べとして、同じようなことをしている人がいるかどうか調べました。やっぱりいました。

これらの記事以外にもGithubに、

の参考になりそうな実装もありました。


作りたいもの

暗号通貨界隈ではClif Highさんという方が作ったweb botという予測プログラムが有名で、BCHは2017年11月に注目されるという予測は見事でした。

しかし、後ほど詳細を記載しているのですが、僕がつくたいものは長期的な展望を示すものではなく、テクニカルとツイート分析による短期的なトレードを支援するものをイメージしています。

なぜかというと、ツイートによって温度感を見ながらテクニカルによる短期売買が僕の主なスタイルだからです(なので、土日しか取引できません: ほけん)。

さらに、BTCはガチホするほど牧歌的な通貨ではなくなってきたので長期的な予測より、数秒、数分先を知れるほうがいいと思っています(なので、家で落ち着いている状態でしかできません: ほけん)。

作りたいものとして以上のような感じで、次にこのようなプログラムを実現するのに必要な技術的な部分をまとめていきたいと思っています。


RNN(LSTM)の実装

機械学習の勉強を始めた時にニューラルネットワークの種類として、RNNというのがあるのは見たことがあり、事例として株などの連続した値を扱う場合に使うものという認識くらいはありました。

また、業務でも使ったことがないのでRNNを勉強して使ってみたいなぁと思ってました。

入力するデータ(手に入るデータ)として、investing.comで2015年からのデータ(四本値)があるので、これを入力として、明日の値を出力するのを想定しています。


Twitterのツイートをポジ・ネガ判定する

僕は情報収集として、Twitterを使っています(個人的に観測した感じでは、Twitterを情報源としている人は大勢いる)。特にTwitter上の有名なビットコイナーやリップラー等は、すごい有益な情報や見通し等をツイートしているので、フォローして逐次情報を追っています。さらに、BTCとBCHのトレードをする場合は、Jihan Wuさんや、Roger Verさんの発言は重要なことが多いので絶対押さえておかないといけないと思いますし、このことからTwitterとトレードは相性がいいと思いますし、技術的にもTwitterのツイート分析とか面白そう(無責任)だと思っています。

比較的簡単そうな実装で、Twitter上のハッシュタグ #BTC とかで流れてくるツイートのポジティブ・ネガティブの判定するものがいいのかなぁと考えています(RNNより、僕にとってこちらの難易度は相当高い印象を受けています、大丈夫か?!)。


他にも取り入れたいシグナル

BTCとBCHは採掘難易度の関係で一時期逆相関の関係にある時期があり、ここらへんのハッシュパワーの関係性のデータや、取引の出来高とかもかなり大事なので入れたいのは入れたいですが一旦…

あと通貨別とかも。


最終的なネットワーク

最終的には以下のようなネットワークかなぁって想定しています。

入力としては一定期間の連続する四本値を入力を取り、当日(翌日?)の四本値を予測する部分と、一定期間ごとのハッシュタグ等でフィルターされたツイートからポジ・ネガ判定をする部分、それらの出力を入力として受け取り、1つの値として出力する部分から構成されています。

(ざっくり説明すると、チャートの分析とツイートの分析をするネットワークがそれぞれあって、それらの出力を合わせた値を1つ出力する感じです。)

fig_01.png


億り人に対するスタンス

まず、僕の考えとして、とても運が良かったり、この記事で構想したプログラムが作ることができて、億り人になった(僕には一生ムリでしょうネ、Twitterで見てるとガチの人本当にすごいですもんねぇ😅)としても、セミリタイアはしたくないです。

会社勤務で得られることは本当にいっぱいありますし、コード書いてたり、プロジェクトに関わったり、今はスタートアップで目標に向かって日々努力していることのやりがいも感じてます。

Twitter上でちょいちょい、『億り人になったら何するの?→海外旅行→億り人にならなくてもできるよね』みたいなのがありますが、単に中二的な言葉のかっこよさのみです。

考えているのは、それくらいです。全然深くない。


今後の予定

まず、RNN(LSTM)部分の実装をする必要があり、本で説明されている例も多かったり、事例もたくさん手に入れることができそうなので、年末年始に作って検証だけやってみようと思っています。

次にツイート部分は、まずは勉強からになると思いますので追々どうするか周りの研究者の方に聞いてみようと思っています♪

いま現時点で予定たてれそうなのはこれくらい…、技術的なカバーがだいぶ遅れているので長期的な見通しでコツコツやっていこうと思っています。


最後に

全然技術的なことをかけていませんが、個人的な思いを最後まで見ていただきありがとうございました。

当記事の内容に興味を持っていただき、一緒に勉強していける方がいましたら、是非情報交換しましょう♪♪