ビットコインをはじめ暗号資産は冬の時代を迎えた。
500万円超えて購入したのに、今では275万円まで落ちてるわ……。
400万円代までナンピンしたけど、もう資金無し……。
ビットコインは新たに高値で買ってくれる人が永遠に現れ続けないと皆が儲からないシステム。
まさに「ねずみ講」と同じ。
更に「ビットコインの売却益」は「給与所得等」との合算による累進課税との事で4割程度持っていかれる人も多いんじゃない?
当時は高橋ダン氏やUKI氏などがビットコインを勧めるから購入……
あなた達のこと、信じてたのに……
ビットコインは積み立てする気になれない……。
そもそもビットコインを機械学習使ってシステムトレードしてたら、どうなったんだろう?
初手LightGBMに従って、ビットコインのバックテストをしてみよう。
機械学習って実装すると基本の仕組みはデータを変えても利用できるから便利。
因みに、機械学習による株価予測したい人は過去記事が参考になると思う。
- 【17回目】ファンダメンタルズ指標(PER、PBR)を用いた機械学習による株価予測
- 【16回目】機械学習(LightGBM)を使った株価予測入門
- 【15回目】機械学習による株価予測(3点チャージ法を改良する→失敗)
- 【14回目】機械学習による株価予測(導き出たのは斉藤正章氏の手法)
- 【13回目】機械学習を使った株価予測(LightGBMをOptunaでパラメータチューニング)
- 【12回目】機械学習を使った株価予測(pandas-profiling、create_tree_digraph可視化)
- 【11回目】機械学習を使った株価予測(ファンダメンタルズ指標導入でAUC=0.70超え)
- 【10回目】機械学習を使った株価予測(関連論文・サイトを調査してみる)
- 【9回目】機械学習で株価予測(年利・勝率向上の分析)
バックテストに利用したストラテジーのおさらい
ストラテジーは特に変更してない。
【資金管理条件】
- 銘柄(ビットコイン)
- 1回の購入資金 (50万円)
- 投資総額 (300万円)
- 単利運用
【買いルール】
- 3日後の始値が50%以上の確率で3%以上 上がると判断した場合に翌日の始値で買い
【手仕舞いルール】
- 3日経過したら翌日の始値で手仕舞い
【機械学習データ】
- [目的変数] 翌日の始値から3日後の始値が3%以上上がったもの
- [学習モデル] 勾配ブースティング(LightGBM)
[モデル評価] KFold(K-分割交差検証)
今まで交差検証(cross validation)を使ってきたが、「ファイナンス機械学習」の本によると使ってはいけないらしい。
機械学習に使った説明変数(指標)は何か?
次の33個を用意した。
というか、これも以前のコードの使い回し。
【通常(システムトレード用)データ】
全部で7個。
- 日付、始値、高値、安値、終値、出来高、曜日
【テクニカル指標】
全部で25個。計算して求めている。
- 移動平均(3日、15日、50日、75日、100日)
- ボリンジャーバンド(σ1、σ2、σ3)
- MACD(シグナル、ヒストグラム)
- RSI(9日、14日)
- ADX(平均方向性指数)
- CCI(商品チャンネル指数(Commodity Channel Index))
- ROC(rate of change)
- ADOSC(チャイキンオシレーター:A/DのMACD)
- ATR(Average True Range)
- 移動平均乖離率(5日、15日、25日)
- 前日比(1日、2日、3日)
- VR(Volume Ratio)
【その他】
全部で1個。計算して求めている。
- 日経225の騰落レシオ
日経225の騰落レシオがビットコインにどういう影響があるのか知らないけど、ソースコード変更できるほどの記憶がもはや無いので、これでやってみる。
なおビットコインの価格をProtraで利用するには手動変換が必要。取り込み方は下記を参照。
書いてて良かったブログ。
もはや、完全にやり方を忘れてたわ。
機械学習による株価予測の期待値検証
計算時間は1分。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
株価データ: 日足 銘柄リスト: ビットコイン 2015/07/13~2022/08/18における成績です。 ---------------------------------------- 全トレード数 286 勝ちトレード数(勝率) 207(72.38%) 負けトレード数(負率) 79(27.62%) 全トレード平均利率 4.39% 勝ちトレード平均利率 7.36% 負けトレード平均損率 -3.38% 勝ちトレード最大利率 30.82% 負けトレード最大損率 -14.54% 全トレード平均期間 4.44 勝ちトレード平均期間 4.49 負けトレード平均期間 4.33 ---------------------------------------- 必要資金 ¥3,601,462 最大ポジション(簿価) ¥2,999,997 最大ポジション(時価) ¥4,392,990 純利益 ¥36,806,000 勝ちトレード総利益 ¥44,583,610 負けトレード総損失 -¥7,777,616 全トレード平均利益 ¥128,692 勝ちトレード平均利益 ¥215,380 負けトレード平均損失 -¥98,451 勝ちトレード最大利益 ¥924,483 負けトレード最大損失 -¥436,015 プロフィットファクター 5.73 最大ドローダウン(簿価) -¥635,308 最大ドローダウン(時価) -¥897,940 ---------------------------------------- 現在進行中のトレード数 1 ---------------------------------------- 平均年利 127.75% 平均年利(直近5年) 123.10% 最大連勝 14回 最大連敗 3回 ---------------------------------------- [年度別レポート] 年度 取引回数 運用損益 年利 勝率 PF 最大DD 2022年 20回 ¥526,028円 14.61% 55.00% 1.37倍 -13.46% 2021年 32回 ¥6,552,869円 181.95% 84.38% 18.01倍 -5.51% 2020年 40回 ¥6,347,441円 176.25% 75.00% 7.22倍 -7.79% 2019年 39回 ¥4,300,606円 119.41% 69.23% 4.05倍 -12.74% 2018年 35回 ¥4,439,918円 123.28% 65.71% 6.76倍 -6.58% 2017年 49回 ¥10,656,450円 295.89% 83.67% 10.55倍 -12.19% 2016年 49回 ¥3,077,778円 85.46% 67.35% 5.04倍 -3.85% 2015年 22回 ¥904,899円 25.13% 68.18% 2.03倍 -14.54% [月別レポート] [2022年] 月度 取引回数 運用損益 勝率 PF 最大DD 12月 0回 ¥0円 NaN NaN倍 0.00% 11月 0回 ¥0円 NaN NaN倍 0.00% 10月 0回 ¥0円 NaN NaN倍 0.00% 9月 0回 ¥0円 NaN NaN倍 0.00% 8月 3回 -¥116,280円 33.33% 0.22倍 -3.20% 7月 4回 ¥85,699円 50.00% 1.15倍 -9.98% 6月 2回 -¥127,520円 0.00% 0.00倍 -2.99% 5月 4回 ¥110,524円 75.00% 2.31倍 -3.21% 4月 1回 -¥165,320円 0.00% 0.00倍 -5.83% 3月 4回 ¥162,072円 75.00% 1.47倍 -13.46% 2月 1回 ¥484,110円 100.00% ∞倍 0.00% 1月 1回 ¥92,743円 100.00% ∞倍 0.00% |
利益曲線は、次の通り。
単調増加に見えるけど、未学習データは最新の50日分。
つまり今年の6月、7月、8月頃からのデータが実際に機械学習で求めた結果となる。
負け越しじゃん。
というより、今年に入ってボロボロじゃない?
過去のデータを使って投資予測できない……という事なのか?
この一年間の値動きに優先度をつけた方が良いのかな?
なお、機械学習が重要だと思った指標は次のとおり。
まとめ
いつも通り学習部分は単調増加で、実践部分は寝てしまう結果となった。
機械学習で株価やビットコイン計算して金持ちになれるなら、皆やってるだろうね。
Z世代のセオリーに従って「S&P500」「全米」「オルカン」の積立インデックス投資が良いんじゃないかな。
楽だし、工数を違う事に使った方が人生ハッピーだわ。
ソースコード
バックテストには無料OSSの「Protra」を利用した。
今回は、前回GitHubに置いたソースコードに対して前述のコードを追加するだけなので割愛する。