仮想通貨

機械学習で仮想通貨の価格予測→ムリ (XGBoost)

投稿日:

技術, サークル, テクノロジー, 要約, 理科, スペース, 分析, 未来的, デザイン, 青

機械学習+仮想通貨で儲けられる?

残念ながら以前の記事で述べた通り、ローソク足+機械学習でマトモな価格予測を行うことはできません。前回はPython+Keras+GRUでこのことを確認したのですが、今回はPython+XGBoostで確認をしてみます。

機械学習での予測結果とバックテスト

事業, ピース, 仕事, 経済, セール, 進捗, 発達, 多様性, グループ, チーム, 個人, 側面

今回実施するXGBoostでの結果は、下図の通りです。

画像に alt 属性が指定されていません。ファイル名: image-12-5.jpg
左図: 機械学習の予測結果(青線=実測値、橙線=予測値)
右図: バックテストの利益推移

前回と同様に、 ①予測値が実測値に先行していない(=上手く予測できていない)ことと、②利益が大きくブレつつも横ばいであることが確認できます。

なお今回も、下記のGoogle Colabに全てのコードを置いてあります。ブログ本文中のコードは最小限なので、こちらも参照してみてください。
https://colab.research.google.com/drive/19yYbngc6WNPpz4qelBOMVea06oYH23yf?usp=sharing

機械学習のプログラム

一杯のコーヒー, ラップトップ, オフィス, マックブック, ワークスペース, コーヒー ブレーク

時系列データの取得 ~ 時系列データの分割

時系列データの取得 ~ 時系列データの分割までのステップは以前の記事と同一のため、そちらを参照してください。

学習データ (x) と教師データ (y) の設定

XGBoostでモデルを作成する際には、以前のGRUのときのようにデータを整形する必要はありません。学習データと教師データを設定して、それをテーブル型データのまま、モデルに突っ込むことができます。

nanの処理だけ忘れずに実施し、下記のようになります。

def reshape(df, ref_before, pred_after=0):
    x  = table_memory(df, ref_before)
    y  = df.Close.shift(-pred_after)
    xy = pd.concat([x, y], axis=1).dropna().reset_index(drop=True)
    return xy.iloc[:, :-1], xy.iloc[:, -1]

気持ちで、t時点でのテーブルデータをt+1時点に追加することで疑似的に時系列の記憶情報を持たせる、table_memory関数を作成・利用しています(これがあってもなくても、結果はネガティブですが)。

def table_memory(df, ref_before):
    df_con = pd.concat([df.copy()] + [df.shift(i+1) for i in range(ref_before)], axis=1)
    df_con.columns = list(df.columns) + [f'{col}_lag{i+1}' for col in df.columns for i in range(ref_before)]
    return df_con

機械学習モデルの作成

普通に、XGBoostのモデルを組みます。学習曲線は下記の通り。

予測とバックテスト

結果が下図です。左側が本試験データ全体で、右側が全体の最後100回分を切り出したものです。青線が実際の終値で、橙線が予測値です。

この予測値を元に売買した際の損益グラフは、下図です。左側が損益グラフで、右側が終値の推移です。やはりダメダメですね。

感想

機械学習は、「人ができることを素早くミスなくやる」あるいは「お手軽数値計算」のために使うのが良いと感じています。まずは人間が裁量で、市場の感覚なりルールなりを掴まえる必要があるのだろうな、と。そういったわけで、AI万能論には懐疑的です。。。

本記事が何かの参考になりましたら、下記より投げ銭よろしくお願いします。
(MetaMaskの場合、ポップアップ画面左上の”Edit”で金額を調整できます)

Donate



-仮想通貨
-, , , , ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です



関連記事

no image

bitFlyer APIのTips

bitFlyer APIのTipsを列挙していきます。ご利用は自己責任で。 始めの一歩。pybitflyerを利用します。pythonコードではなく、シェル内で。 # sudo python -m p …

no image

機械学習で仮想通貨の価格予測→ムリ (Keras/GRU)

機械学習+仮想通貨で儲けられる? 残念ながら、機械学習でのお金儲けは、かなり難しいです。 少なくとも、ローソク足だけを使って機械学習で価格予測をしようとしても、ほとんどマトモな予測はできません。 機械 …

bitFlyerのAPIでできること→ほとんど何でもできる

【2020/12/12】 pybitflyer記事へのリンクを更新しました bitFlyerを使っているのだけれど、APIなるもので何かができるらしい 確かにAPIを利用すると、bitFlyerで色々 …

no image

pybitflyerで簡単自動売買

pybitflyerなるものを使えば、bitFlyerの取引を自動化できる? pybitflyerを使うことで、bitFlyerの取引を自動化することができます。 本記事ではpybitflyerを導入 …

プロフィール

タクマ
−−−−−−−−

東南アジア(ミャンマー&フィリピン)でNW系システムインテグレーターとして6年ほど駐在していました。本を1500冊以上読んだり、プログラミングをしたりしています。嫁さんはタイ人で、タイ在住です。
ーー
「〇〇を分かりやすく解説!」系のスカスカな記事を見ていると頭が悪くなりそうなので、対抗して、少し骨のある記事を書こうと考えています。
ーー
Twitter (@tkm_nkmr)
ーー
Twitterまとめのまとめ
YouTube Find!
SNS Trends

−−−−−−−−