MLbotで爆損するなかれ

こんにちは、日本爆損防止委員会です。

当会は、ここ数年でにわかに盛り上がりを見せる株・暗号資産・FX等の金融取引により、取り返しのつかない爆損をしてしまう人を無くすことを目的とし、発信活動をしています。

以前の記事で、auカブコム証券のkabuステーションAPIを使った自動売買の実装方法を解説しました。

この記事では、具体的なトレードロジックについて言及していませんでした。勝てるロジックに言及するのは投資アドバイスと取られるリスクがありますし…いやまぁそもそも筆者には勝てるロジックがワカリマセン

一方で、負けるロジックについては比較的よくわかります。日本爆損防止委員会の使命は爆損して人生を棒に振る人を減らすことですので、今回は自動売買 (bot / algo trading) におけるありがちな爆損について書きたいと思います。

今回取り上げるのは、MLbotです。

MLbotとは

MLbotのMLはMachine Learning、つまり機械学習です。MLbotとは、機械学習を使って売買判断に関わるシグナルを作成し、自動で売買を行うものを指します。

昨今はAI分野の進化が凄まじく、あらゆる分野に影響を与えています。当然のように、金融取引においてもAI・機械学習を活用しようという取り組みが行われています。

人間の脳が一定時間で処理できる情報の量と質には限界がある。しかし、AI・機械学習に大量のデータを学習させパターンを抽出させることで、将来の値動きが予測でき、簡単に儲けられるのではないか…!?

金融時系列データの難しさ

AI・機械学習で将来の値動きを予測しようとする場合、過去の金融市場に関わるデータを使って訓練を行うことになりますが、この金融時系列データというのが極めて曲者です。

Kaggleコンペの数々が示すように、AI・機械学習は、多くの構造化データ(テーブル形式のデータ)に対して優れたソリューションになり得ますし、画像や自然言語といった非構造化データに対しても人間を凌駕するレベルになってきています。

一方、数多くあるKaggleコンペの中でも突出して「運ゲー」になってしまっているのが、金融時系列コンペです。なぜ金融時系列では機械学習がうまくいかないのか…?

AIの時代ですから大規模言語モデル (Gemini 1.5 flashを使用) に聞いてみましょう。

https://aistudio.google.com/

以下の8つの理由が返ってきました。

1. ノイズの多さ: 金融時系列データは、市場の様々な要因によって非常にノイズが大きいです。ニュース、政策変更、予想外のイベント、そして単なるランダムな変動など、予測不可能な要素が多数含まれており、これらのノイズを分離し、真のシグナルを抽出することが困難です。

2. 非定常性: 金融時系列データは、多くの場合、非定常性(stationaryではない)を示します。つまり、統計的特性(平均、分散、自己相関など)が時間とともに変化します。しかしながら多くの機械学習アルゴリズムは定常性を仮定しているため、直接適用すると精度が悪くなってしまいます。 非定常性を扱うためには、データの前処理(例えば差分系列をとる、GARCHモデルを用いるなど)が必要となりますが、最適な前処理方法を見つけるのは困難です。

3. 多変量性と高次元性: 金融市場は複雑な相互作用のネットワークであり、多くの変数が複雑に絡み合っています。 株式、債券、為替レート、商品価格など、多くの変数を考慮する必要があるため、高次元データとなり、計算コストが高く、モデルの解釈が難しいです。 また、変数間の関係が非線形であることも多く、モデル化が複雑になります。

4. 外生変数の影響: 金融市場は外部要因(経済指標、政治情勢、自然災害など)の影響を受けやすく、これらの変数をモデルに取り込むことが重要です。しかし、これらの変数の選定と適切な取り込み方は、専門的な知識と経験を必要とし、難しい課題です。

5. 過学習: 特に高次元データにおいて、モデルが訓練データに過剰に適合し、新しいデータに対して予測精度が低い「過学習」の問題が起こりやすいです。適切な正則化手法やモデル選択が重要になります。

6. データの欠損: 金融データには、取引時間外やデータ収集エラーによって欠損値が存在することがあります。欠損値の処理方法は予測精度に影響を与え、適切な手法を選択することが重要です。

7. 概念ドリフト: 金融市場のトレンドは時間とともに変化します。過去のデータで学習したモデルは、時間の経過とともに精度が低下することがあります。これを概念ドリフトと言い、継続的なモデルの更新や再学習が必要です。

8. バックテストの難しさ: 機械学習モデルを評価する際には、バックテストが重要ですが、金融データにおけるバックテストは、適切なパラメータ設定やデータ分割方法の選択など、多くの課題があります。 過去のパフォーマンスが将来のパフォーマンスを保証するものではないことも考慮する必要があります。

gemini 1.5 flash

このうちのいくつかには、解決策がないわけではありません(非定常な予測変数を使わない、定期的に再学習する、など)。ただし、どんなに気をつけても「(1)ノイズの多さ」にあるように予測不可能な要素は必ずあるので、ドローダウンは必ず付き纏います

そんなときに、過学習を見過ごしていたり、バックテストにバグがあったりして強気でいると、市場に容赦なく爆損に追い込まれます。

厄介なのは、「(3)多変量性と高次元性」にあるように、往々にして実装者がMLbotのモデルが何をしているのか解釈できていない場合が多いために、「(7)概念ドリフト」のように市場のトレンドが変化しているのについていけてないのか、あるいは別のファクターの影響なのか、そもそも何が原因で爆損しているのかわからないことです。

これは、心理的に非常に不安な状態になります。

一般的な裁量トレードの場合、爆損しても原因が明らかなケースが多いです。例えばDOGEをショートして爆損したとき、「うあああイーロンマスクぅうううぅ」

一方、MLbotはどういうbotなのかにもよりますが、よく分からない銘柄をよく分からない理由でショートしていて、よく分からないけどその銘柄は爆上げしていてなんか爆損している…ということがままあります。

以下の記事でtomoさんが書かれている通り、MLbotはリバーサルと小型株効果が現れやすいことがわかっており、この辺りを意識的に対策していないと特に爆損しやすいです。

金融でAI・機械学習を使って儲けることはできないのか

少なくとも、「APIでデータをポォン!機械学習にインヌ!成行注文でゴー!」という軽いノリでは市場の養分になるだけです。

APIで取れるデータということはその時点でデータにエッジはないわけですし

機械学習もlightgbmなどをそのまま使うだけであればそこにもエッジはなく

成行注文も何も工夫していなければ執行にもエッジがない

時間軸はわかりませんが必ずや爆損へ収束していくでしょう。

さて、世の中には多くの爆損の民がいる一方、彼らから消えたお金をまんまと回収している一握りの勝ち組がいます。そのうちのさらに一握りはXで関連する投稿しています。それを見ていきましょう。

日本株

Pegionさんとbotter_01さんは、日本株のシステムトレードをしていそうです。お二人ともJQuants APIを使用していることを明言していますね。面白いのは機械学習を使って(いそう)ではあるものの、それ自体を売買シグナルとするのではなく、あくまで分析の足掛かりとして使って(いそう)であるところです。

このアプローチは「(3)多変量性と高次元性」、「(5)過学習」を避けることができますね。「(1)ノイズの多さ」「(2)非定常性」といった金融時系列データ自体の難しさはあるのでかなりの分析力は問われますが、そこがクリアできればお二人のように利益を出すことができるようです。

Numerai

kotaさんはNumeraiをやっているようです。Numeraiはクオンツヘッジファンドですが、売買シグナルをクラウドソーシングで集めているところが特徴です。理念としては、世界中の優秀なデータサイエンティストから機械学習モデルの予測値を集めるものなのですが、kotaさんの成績は異常に良いですね。良すぎるので多分MLbotじゃないと思います。

MLbotは、数多の爆損を挟みつつ勝率5割~6割くらいでなんとか全体でプラス…みたいな損益になるのが「上手くいっている」botのイメージです。これ以上だとarbitrageか、別のゲームをしていないと厳しいかなと。

(後日訂正)MLbotだそうです。強い!!!
https://x.com/dal6393/status/1861583618784796779

暗号資産

morioさんは暗号資産でMLbotをやっている気がします(違かったらすみません)。ご本人は時折、爆損の民に寄り添った投稿をされていますが、

公開されている通算損益を見ると明らかなように爆益です。勝率や損益のボラも含め、MLbot実運用の成功例として、MLbotをやりたい人には特に参考になるでしょう。

先物

JGB366さんは投資運用会社の代表をされている方です。ガチプロですね。ご自身の会社の投資ストラクチャーを公開されているのですが、ご本人もポスト内で言及されているように感動的に機械学習の使い方が上手いです。

金融時系列データにおける機械学習は、最初に述べた1 - 8の理由の通り、また、多くの金融kaggleコンペが運ゲーだったように、難しい…というかク⚫️ゲーです。ギャンブルにしかならない場合がほとんどなわけです。

だからといって、金融市場から利益を得るのに機械学習が使えないわけではなくて、ディーラーのパフォーマンス予測という、ロバストな問題に取り組まれているのですね。これは値動きを予測するというク⚫️ゲーとは一線を画す秀逸な問題設計だと思われます。実際に、インデックスを超過するリターンが得られているようで、金融 x 機械学習の非常に優れた成功例だと思います。

終わりに

日本株も暗号資産も、APIで手軽にデータが取れる時代になりました。

AI・機械学習のライブラリも充実しており、データを分析しモデルを作ることがかつてなく容易になっています。

じゃあMLbotだっ!……と飛びつきたくなりますが、現実はそんなに簡単ではないですね。Kaggleでも金融コンペは相変わらず出てきていますし、「APIでデータ取得 x 機械学習」が流行りやすい時代ではありますが、本当に勝っている人は独自のエッジをお持ちですね。

いいなと思ったら応援しよう!