Bot 思考ログ 開発ログ

🛠️週次報告(2025/6/7~13の記録)データ集め職人(風)な1週間だった話

こんにちは。ぼっちbotterよだかです。

今回も過去1週間の振り返りを書いていきます。

ざっくりまとめると「データ集めに奔走した1週間」という感じでした。

「自前の秒足用データくらいサクッと集められるでしょ」という軽い気持ちでコード書き始めて、半日後に1,000行以上のスクリプトになっているので、リファクタしては再び走らせて、、、みたいなことをやっています。

1時間とか6時間とかかけて検証しなければならないので、今回の記事はその合間に書いています。(データ集め中にまとまった時間ができたので思考整理がてら書いているって感じですね)

本記事では「なぜ、データ集めが大切であるのか」と「データ集めが何の役に立つのか」ということを実体験ベースでまとめています。

ここで書いていることは、私が取り組んでいる中で言語化できるものの一部に絞っていますが、botterのリアルとして暇つぶしにお付き合いいただければ幸いです。

FRMMbotのエントリロジックを強化する

私が開発継続しているbotの一つであるFRMMbotはその特性上、シンプルなMMbotとは違って、片側Fillが続いた場合のポジション管理を失敗すると証拠金が吹き飛んで即死するリスクがあります。

そのため、在庫を抱えないことや抱えた在庫といかに付き合うかなどが重要なのですが、これは現段階では許容できる範囲まで抑え込めることが確認できているため、残る課題はいかにエントリを強くするかという点にあります。

そのため、本番環境にてbotを動かしながらエントリの精度を高める必要があるのですが、ここで問題になったのが「獲得できるデータの粒度」です。基本的には「約定」「板情報」の2種類を土台にしてエントリの精度を高めていけば良いのですが、FR絡みの戦略においては、これ以外にもいくつかの要素がエントリ最適化に関わってきます。

それらのデータを獲得&処理・加工するためのスクリプトを作成していたら、結果として1,000行程度のスクリプトになってしまったため、現在は大規模リファクタ中です。

1日分の毎秒のバックテスト用データを集めるというのは、各データの86,400行のカラムを全て埋めて、なおかつそれらが一つもずれてはいけないということです。そりゃ、1,000行程度のスクリプトで良い気になれるはずもなく。(技術的なことの一部はこの記事でざっくり書いています)

24時間安定させることの難しさ

正直な話、botのロジックを書くことよりも、「ローカル環境でいかにして通信を安定させるか」「接続が不安定な時にどのように対処するのか」という部分がはるかに難しいし、その対策は自分でbotを回してみることでしか見えてきません。

通信接続が切れた時に、どこまで握りつぶして良いのか。あるいは、そこに目を瞑って続けていても良いことは何か?

これらへの答えは実際に24H回し続けていないと絶対に気づかないし、だからこそこの点は他者との明確な差になります。この手の具体的な知見はネット上にはあまり見られません(本気で探していないというのもあるけど)。私の場合は、自分で考えて試してた方が早いです。別にローカル環境にこだわっているわけではないのです。限界を感じたら外部サーバーを借りてそこで環境構築してbotを走らせた方が多分効率は良いでしょう。ただ、それは自分でできる範囲内のことが終わった後にしたいのです。

段階的な強化

というわけでFRMMbotについては、エントリロジックを詰めつつ、それに伴って増加するであろうエグジットのロジック強化とポジション管理ロジックについて段階的に詰めていくというフェーズです。

エントリを強くするために、必要な情報は自前で集めて加工できる。そしてそれを戦略実行後のPnLと比較して因果関係を明文化した後に、ロジックの修正をして再び botを走らせて,,,という流れを自動化していくことが当面の目標です。

ついでに言うと、FR絡みの戦略には一つ以上触れておいて、そこで一回勝ち切る経験を積みたいというのもFRMMbotにこだわっている理由の一つです。FR絡みの戦略は、今後もさまざまな市場で一定の需要があると考えているので、現在やっていることは無駄になりにくいはずです。

清算スナイプbotのエッジ検証:泥沼に片足を突っ込む

データ集めの一つとしてDeFi絡みのオンチェーンデータ収集と加工が必要。これも長期にわたって仮想通貨botを作る上では絶対に避けては通れない道です。そもそも、DeFi絡みのトレードは私が仮想通貨を触り始めたきっかけでもあるし、初めてきちんと自分の考えた方法で勝てたという経験があるので、戦略自体はイメージしやすいのです。

ところが、bot開発においては、まずこのオンチェーンデータとの付き合い方というのが曲者で、CEXとは全く違う領域の勝負になります。DeFiでのbot勝負は先乗りしたプレイヤーが総取りするみたいな構造があるので、CEX以上に情報へのアプローチは重要です。

というのも、CEXでの戦いが(基本的には)データを見てから動くのに対し、オンチェーンでの戦いはそもそもデータが生まれる前の状態を観測して、確定するであろうトランザクションに対して自分が何をするのかだったり、そもそもトランザクションを確定させる前提で動いたりすることなどが勝てるbotの基本設計なのです。特殊過ぎて沼る。

ただ、この点においてはbotterになる前から分かっていたことだったので、焦ってどうこうということはないです。しかし、触らないのも違う。どうせ触らなければならないのだし、素振りがてら個人でも勝ちの目がありそうなところを突いてみたくなったのです。

そこで、まずはハイリキ(ハイリキがDeFiかと言われると微妙ですが)で一つくらいはbotを動かしてみようと思い、清算スナイプbotの雛形を作ってみました。これは現段階では、私の戦略にエッジがあるかどうかを検証している段階なので、ここでもデータ集めと成形を安定して継続できるスクリプトを書くことからスタートしています。

現状、接続を安定させることはできそうなので、ここをクリアしたら2~4週間分のデータを貯めて、戦略のエッジ検証をする予定です。オンチェーンプロトコルはそれぞれに仕様が異なる場合が多いので、Docsを熟読しながらコツコツ進めていきます。

DeFi領域は、特に実装と改善のスピードがものをいう世界なので、いざという時に速度と精度が高い状態を再現できるように基礎部分を固めるということが短期目標です。

マルチCEXアビトラbotの監視スクリプト

さて、次の話題。

余計なことはごちゃごちゃ考えないでとにかくシンプルで強いbotを作りたい。(そんなに楽なことがあるわけないという意見は無視して)

ということで、超シンプルかつ王道戦略であるアービトラージ。理屈の面から切り込めば、無裁定状態を正しく定義することが、スタートラインと言えるでしょう。

市場における歪みをどのように定義するかにもよりますが、私自身は「アービトラージという概念は聖杯に近い」と考えています。詳しく知りたい人は「アービトラージ入門」を読みましょう。アビトラを概念レベルで理解するためにとても役立ちます。過去に私もブログ記事も書いているのでまずはそちらを読んでみるのも良いかもしれません。(仮想通貨Botterの必読書シリーズ②アービトラージ入門)

私も例に漏れず、シンプルなアビトラ戦略を自動実行するbotを作ってみました。簡単に言うと複数のCEXに跨って横断的にデータを集めながら有利な状態にある時だけ取引を行うbotです。

当然、そんな戦略は誰でも思いつくし、スクリプトを書くのはそこまで難しい話ではありません。(遅延とか滑りとか色々な問題はあるにせよ)

ここで重要なのは、「データの監視プロセスを如何に死なせないか」という点です。

実際にやってみると分かることですが、複数のCEXに跨ってデータを取って比較し続けることは思った以上にハードルが高いのです。自分が実行しようとする戦略にもよりますが、データが充分に揃っていない時に取引を行うのは私にとっては決して小さくないリスクです。

現段階では、取引所をのデータ通信を安定して監視するスクリプトを完成させることが最優先課題です。

BTC現物に限定して各取引所に跨ってアビトラを行うという超ざっくり戦略のbotを無料で拾えるこれまた超ざっくりしたデータで検証したところ、私が目標とする収益を安定的に叩き出すためにはだいたい2億円ほど必要だと判明しました。この点においては過去の取引経験などから「今の私のやり方では1億円あっても足りないだろうな」という肌感はあったので、粗いバックテストの結果とはいえ「やっぱりそうだよね」と妙な納得感がありました。

自分で集めたデータで検証したことは納得感が高いですし、人の意見にも左右されにくくなるのでおすすめです。

それに加えて「この方法ではダメだが、他の方法でなんとかできるかもしれない」と考えるきっかけにもなります。シンプルに言うのであれば「負け筋を潰す」ということですね。

戦略発案→ロジック改善→再デプロイまでの自動化

これは中期的な目標ですが、ロジック改善の自動化までは最低限行えるようになりたいです。

簡単にまとめると、「データ取得」→「処理・加工」→「戦略創出・実行戦略への反映」→「戦略実行(botを走らせる)」→「実戦データの収集&加工&解析」→「PnLとの因果関係の明文化(勝ち筋を磨く・負け筋を潰す)」→「執行戦略の改善」→「botの再デプロイ」というループを自動化したいのです。

現在は、競合しない戦略を並行開発することで、このループに乗せられそうなところはどんどん実施している最中です。

この点は、やれることが山のようにあるので、焦らず一つずつ確実にものにしていきます。

今週取り組んでいた「データ取得スクリプトの開発に時間を割く」というのは、まさにこのループを回すための土台です。ここがグラついていると他の全てがコケるのがはっきりしているので、力を注いでいるのです。

まとめ

自分で検証して改善するチャンスをむざむざ無くす(減らす)ことは避けたい。

そういう考え方をしているから「データ集め」に注力することに抵抗感がないのかな、と思います。

今回は、久しぶりに自分で記事を書いていますが、自分自身の考えを(公の場で)言語化するという意味でも良い機会になったと感じています。

botterとして2ヶ月半が経過しましたが、今やっていることの効果検証も重ねながら、開発に集中します。因果関係が明文化できるようになってくると発信できる内容は限られてきますが、それでも自分の考えや学びを定期的に発信することが自分自身の整理につながるため、今後も発信は静かに続けていきます。

来週は「清算スナイプbotのデータ蓄積」と「FRMMbotのエントリロジック強化」を優先的に進めます。(上手くいけばエグジットロジックの強化にもつながるはず!)

最後まで読んでくださってありがとうございます。

対戦、よろしくお願いします。

-Bot, 思考ログ, 開発ログ