Botterとして本格活動して7ヵ月が経った

はじめに

この記事はポエムです。

本編

本当はキリ良く活動開始から半年で書こうと思っていたのですが、シンプルに忘れていました。
Botterのnote記事は月末に投稿する方が多いせいか、自分も月末に合わせて投稿しないといけないという固定観念にとらわれ、毎回月末を逃してはまた来月にかけばいいや。の無限ループになっていたので、思い立った時に書けの精神で今書いています。

今までとの変化

7ヵ月経ち一つ大きく変わった点は、本業が投資アルゴリズムのモデル開発になったことです。よって1日のほとんどを仮想通貨にコミットできる状態になりました。
お金をもらいながら自分の興味の対象に時間を消費できるのは精神衛生上かなり良いです。

この影響で今は所謂システムトレード方面で仮想通貨にアプローチするようにしています。
システムトレードに関しては性にあってないというか、ハイリスクランダムリターンという印象があって今のところ好きではないのですが、本業が上手く行けばこの生活を続けていけますし、技術的にはFXと株にも生かせそうという点ではやる気を上げる要素になっています。
あと本業でやる分には個人資産の観点でノーリスクランダムリターンなので、現状の自分の中では最も安全な選択肢だと思っています。その意味ではこれが今の最適解なのかなと思います。

個人と企業の違い

色々本業をやっていく中で感じた事は、個人かそうではないかは運用する上でやりやすさが全然違うという事です。
個人投資家のメリットという話になると必ず言われる事ですが、個人ではどんなリスクでも取れます。コードが不完全でもいいし、資金を沢山投じてもいい。決定権が全て自分にあるという自由度は投資においてとても大きい事を文字通り実感しました。企業でやる場合はBotを完成させてから放流まで一定の精査期間が必要だったりするはずです。エッジはそんな事をしている間になくなってしまいます。
少なくとも仮想通貨市場では個人であるメリットはとんでもなく大きいと思います。

企業では身動きがとりづらい以上、CEX等で十分大きなボリュームがあるところを狙って半恒常的に動かせるシステムトレードをするのはある意味当然の成り行きのように感じます。(当然他にも色々なアプローチがあると思います)

学術研究と企業研究の違い

実は大学院時代はAIと金融工学について研究していました。金融工学はオマケくらいで実態は金融データが予測対象のAIを作っていたという感じです。その為、基本的な知識は持ち合わせていると思っています。とはいえ、すごく真面目にやっていたわけでもないので、技術力的にはそこまで高くないと思います、、、今必死に勉強中です。
そんな経歴なので昔やっていた事の延長線かと思ってこの仕事に取り組み始めた訳ですが、実際には学術研究と企業研究では全く違う事をやっている感覚があります。
結局のところ学術研究では儲かるか否かはどうでもいい事です。論文発表で儲かるかどうかを聞いてくる先生はいません。一方で企業は儲かれば何でもいいのです。儲からない高尚なモデルはただのガラクタです。それぞれは完全に逆の目的意識を持っています。
仕事と研究でここまでやる事が変わるのかという驚きがありました。
ただ、個人的には企業研究の方が分かりやすくて好きです。儲かれば何でもよかろうという精神の方が目的がはっきりしていてやりやすいです。

モデルの成績

自分のモデルに関してはやはりまだランダムリターン感があって、改善点を絶賛模索中です。A級は突破できるくらいになってきてますが、S級はまだ大分先の話になりそうというか、現状皆目見当もつかないです。運用額を増やす必要があるというのはもちろんなんですが、運用額が大きくなればなるほど、そこまでロットが張れる場所と手法を探すのが難しいです。こういう視点を持ったことがないので大変苦労しています。

現状でモデルは4つ程作りました。

  1. MLなしシステムトレード(1日に数回)

  2. 中頻度MLモデル(1日に数回)

  3. 低頻度MLモデル(1週間に数回)

  4. 過学習型DLモデル

MLモデルは大体LGBMとかそこらへんの簡単な機械学習モデルの事ですね。DLはニューラルネットを使った何かという感じです。
1と2が良くネットとかで見るようなモデルですね。richman型とかに近いと思います。3は予測にすごく自信があるところだけに絞って低頻度にトレードするモデルです。統計的に考えると手数が稼げないので少し怖いですが、とりあえず動かしてみて様子を見ています。結果だけ見ると今のところ悪くないです。
4は自分で勝手に過学習型と呼んでいるのですが、短い期間の学習データを用意してそこに対して少し過学習気味に学習したDLモデルを用意して短い期間運用し、新しい学習データが貯まったらすぐに再学習するようなモデルです。調整がかなり難しく、まだ実践投入できていませんが、近々動かそうと思っています。

モデルの中身に関しては今のところ言える事はほとんどありませんが、先人の人達が再三言ってきた事の中で、自分の中でも特に共感した事を以下にまとめておこうと思います。

1 .必ずしも難しい事をする必要はない
これは本当に陥りやすい現象だと思います。市場の歪みや性質を見つけようとする際により難しい事をしがちです。とんでもない量のインジケーターを巧みに操っている(?)裁量トレーダーも同じような流れの結果なのでしょうか。
最近のAIブームでより高度なモデルを採用する流れもありそうです。
しかしながら、実際にはそこまで難しい事をする必要もない事は多い気がします。厳密には難しいするよりも先にする事が沢山ある気がします。

例えばHohetoさんがnoteにも出している24時間アノマリーというものがあります。これは24時間前のローソク足に対して逆相関があるという聞くととても簡単なアノマリーです。
実際にバックテストをすると右肩上がりな結果が得られます。(ただし、最近は昔ほどの影響はなくなってきています)

ここまで簡単なアノマリーでも十分に効果が得られる可能性があります。逆にDeepなモデルの性能を100%引き出すのは結構難しいと思います。決定木モデル等を使った方が金融データに対しては良い予測結果が得られたり扱いやすい印象です。

2 . 元のデータを観察する
前の話の続きのようになってしまいますが、手に入れたデータに関して十分な分析をする事はかなり重要だと思います。
ほぼ全ての機械学習モデルはデータに定常性を仮定しています。ですが、金融データに定常性はないと言って良いと思います。この時点でモデルに与えるのデータを十分に前処理する必要があるのは明らかです。データを欠損値処理して正規化して軽く基本統計量を見て、あとはモデルに学習させるというのはかなり雑なやり方だと思います(金融に限らないとは思いますが。)モデルのパラメーターを探索する前にデータを端から端まで観察する必要があります。
ただ、これがめんどくさいんですよね。できるもんならディープでポンしたいんですよ。ただし、めんどくさい所にエッジは隠れたりしているようでそこは労働するしかなさそうです、、、
先ほど例として挙げた24時間アノマリーも仮に自分だったら見つける事ができたかどうかは結構怪しい人も多いような気がします。私としても24時間前と現在の価格差等は直感的に比べたくなりますが24時間前のローソク足と現在のローソク足を比べるというのは個人的には少し意外でした。
4時間足くらいであれば24時間前のローソク足は6本前なので割とたまたま見つけられたりするかもしれませんが、実は15分足で確認しても24時間前ローソク足と逆相関があります。15分足の24時間前のローソク足は96本前なのでここまでくると結構見つけるのが大変そうです。
後はただただ、板や約定履歴を眺めたりするのも意外と学びが多かったりするなーと思いました。例えばBinance BTC/USD(COIN-M)は他のbinanceのperpに比べると価格が一方通行に動きやすいです(板が厚い)。これはmaker feeが安くて taker feeが高い事に起因している現象だと思うのですが、他のperpに比べると動きが分かりやすいです。あとは現物との乖離を注意深く見てみたりするとperpによって違った乖離の挙動があったりします。このような小さな発見があると芋づる式に色々分かってきたりするので面白かったりします。

3 . 定常的な性質を求めすぎるのは良くない
これも先ほどの話と似たような所がありますが、金融データは非定常性があります。つまり長い期間で効き続ける手法なんていうのはそうそうないというのが自分の考えです。その為非定常性に関してはよく考えたほうが良い気がします。一つの手法を長い期間でバックテストしていいのか、非定常性への処理が良くない長い期間のデータをモデルの学習用データとして一括で与えていいか等、個人的に疑問に思う所は多いです。だからこそ短い期間に対してだけ効くモデルを作ってしまえばいいじゃないかというのが過学習型DLモデルを作ろうと思った経緯なんですが、言うのは簡単でも実際にうまく作るのはかなり難しそうです。それでも自分の中で金融データの性質に則している感触はありこれからもっと深堀していこうと思っているモデルです。

おわりに

久々にnote書こうと思って書き始めたはいいものの特に書ける事が無くてとても困りました。還元できるネタを沢山蓄えられるように頑張ります。目指せS級Botter!




この記事が気に入ったらサポートをしてみませんか?