こんにちは、ぼっちbotterよだかです。
今週の振り返りをざっくりまとめていきます。
今週は「エッジ検証パイプラインの整備とマシン稼働の安定化に注力した1週間」でした。
botを走らせつつ、同時に開発も進めるというスタイルでbotterをしているのですが、私が使っているPC1台ではそれがしんどくなってきたので、新しい機材を注文したというのが本記事執筆時点での現状です。
初めに結論をいうと「今のPCじゃ開発継続はキツいので、新しいPCを注文したよ」ってことです。
今回の記事は、この1週間で何をしていたのかという裏側をまとめていきます。
MMbotの勝機が見えた
4月の後半からちまちま作ってきたMMbotは、現在勝機が見えています。とは言え、「見えていても拾えないエッジは真のエッジではない」ので、つべこべ言わずにそのエッジを拾い切るbot作りを詰めていくことが急務です。
特に力を入れていたのが、取得&保管したデータを加工するスクリプト(bucketizer)の改修作業です。諸々の理由から秒足データを作成しているのですが、この過程は分足作成と比べると躓くことが数多くあり、分足作成とはまるで別格の難易度でした。(乗り越えてしまえばなんてことないのですが)一日の秒数は86,400秒なので、ここに合わせて諸々のデータを統合してバックテストまで持っていくまでにbucketizerの改修が必要だったというわけです。
bucktizerの工夫抜粋
バケット化スクリプトに施したことの一部をギャグっぽくまとめてみました。
🧠【gzip手動解凍】
これは「壊れかけのファイル」も途中までちゃんと読めるようにしてんの。
普通の方法だと「うわ、CRC不一致!全部使えません!」で終わり。
でもこれなら「とりあえず読めるとこまで使おう」ができる。
つまり99%死んだファイルから1%の金を取り出す仕組み。
金融データでこれができるって、まあ要するに金になるんだわ。
⏳【normalize_ts 桁数ベース】
これ見た目ギャグっぽいけど、実運用だと時刻の単位が統一されてないことがマジで多い。
例えば取引所Aはマイクロ秒、Bはミリ秒、Cは秒って感じ。
でも形式に頼らず中身だけで秒単位に揃えるロジックがあると、
→ 全部まとめて処理できる。
→ 実装も軽くて、超高速。
つまり「どんなデータもぶっ壊さずに即処理できる」万能カッター。
📊【VWAP自作+Polars/Arrow芸】
vwapって実は重い計算なんよ。ライブラリ任せだと遅かったり、落ちたり、そもそも正確じゃなかったりする。
自分で書くことで:
- 精度コントロールできる
- 型も指定できてメモリ食わない
- 何億件でも処理できる
しかもArrow → Polars
のコンボで、一番コスパいい速度出してる。
つまり「ミサイル作るなら部品から作る」ぐらいガチなやつ。
botの安全機構を整備、Slackとの連携も済ませてトラブル時の通知も配備し、データ通信機構を安定させ、「まともに動けばまぁ勝てるんじゃないかな?」という段階まで来ました。
(本当は他にもたくさんありますが全部書くのは面倒臭いので割愛します。詳しく知りたい方は過去記事を読んでください。大体全部書いてあります)
しかし、ここで曲者なのは「まともに動けば」という部分です。これを乗り越えるのがボトルネックになりました。
というのも、私は他のbotの開発も並行で進めていてそれらの開発に必要な(もしくは開発をしないという判断をするための)データを取るためのrecorderスクリプトもどんどん改良が進んでいます。ついでに言うとrecorderを安定して稼働させるためにはスクリプト1枚ではほぼ不可能なので、プロジェクト全体の整備も必要です。
そして、それらを並行稼働させつつ開発も進めて、しかもbotの稼働も1台のPC(Mac Book Air M2)で行っているため、ついにPCのスペックが根を上げ始めたというわけです。
ここで「外部サーバーレンタルで解決じゃん」という声が聞こえてきそうですね。諸々の要因から、現在は保留中というだけです。
ものすごく雑に言うと「1台のPCでやることが多すぎてメモリが8GBRAMでは厳しい」という状態です。
朝起きるとPCフリーズ
監視・収集・記録・圧縮・成形・解析・ロジックへの反映などのパイプラインを安定させて、尚且つこのパイプラインが生きているかどうかの監視をしている。
そして、このパイプラインが複数同時に走っていて今後も増えていく。
それを傍目に見ながら、新戦略のbotをChat GPTとCursorを伴走させながら作成して、テスト稼働させている。
ついでに、既存botを稼働させている&安全監視及びPnL監視のスクリプトも動いていたりいなかったり。
ざっくり言うと、これが現状です。
今週1週間は朝起きるとまず確実にPCがフリーズorクラッシュ状態間近という状態でした。
そのため、朝一の作業はbot開発ではなく、PCの挙動がおかしくなった原因を洗い出し、修正案を検討し、原因がはっきりしないことについてはログを吐き出す機構を組み込んでスクリプトを走らせるということがメインタスクでした。
元々、この手のトラブルシューティングは嫌いではないのですが、ログが残っていないor必要とするログに辿り着けないという点は若干のストレスではありました。
専業botterなので「時間が十分にあるのに情報不足で今すぐに問題解決に手をつけることができない」という状態を作ってしまうことがもどかしくもありました。何が何でもログを残しておくことは本当に大事ですね。
ついでに、bot稼働中に流れるログにもトラブルの原因分析ができるようにさまざまな機構を盛り込みました。
もう一つ保険積んだ。ある程度知見が貯まってきたのでそろそろブログにまとめる。 https://t.co/0j2Tt8LAyC pic.twitter.com/HhqEWuzmho
— よだか(夜鷹/yodaka) (@yodakablog) June 18, 2025
やれることは全てやった
1週間かけて諸々の原因分析を済ませ、私のPC1台で開発&運用を継続していくことはキビシイ。
これが現在の結論です。超雑にまとめると「メモリ不足」。これにつきます。
マシンスペックの限界にぶち当たったかもしれないので、今日は新規購入を真剣に検討する。もう4日も連続でPCがダウンorクラッシュっぽいことになっている。
recorder2本を常駐させつつbotもちょいちょい動かして、ChatGPTを伴走させて開発していると8GBRAMではダメかもしれん。— よだか(夜鷹/yodaka) (@yodakablog) June 19, 2025
現状、アプリ・ソフト・スクリプトに対して打てる手はすべて打っていますが、今後も開発がスケールしていくことが確定しているので、新機材(Mac mini M4 Pro/24 GB/512 GB)を購入することにしました。現在使っている局面ワイドモニターや接続ケーブルとの互換性も確認して、購入しました。色々と候補はありましたが、現状でのベターな選択ができたはずです。
退職金の一部が遊んでいたのもあって、サクッと購入に踏み切ることができました(退職金ありがとう)
「機材の新規購入はもうちょっと先かな?」と思っていましたが、予想よりも早くbotの並行開発&運用フェーズに入ることができたので、想定内の出費といえばその通りかもしれません。
どの道、物理面で開発のペースが落ちたり、運用の効率が低下することは最もあってはならないことだと思っているので、「新機材を購入しない」という選択肢は元々なかったのですが。
以下に、今週やったことのハイライトを発信できる範囲のものに絞ってテキトーにまとめておきます。
今週やったこと
日付 | 主なアウトプット & 進捗 | 課題・学び | 次の一手 |
---|---|---|---|
6 / 14 (土) | MMBot Docker自動再起動+watchdog二層監視 完了(Slack 通知 / リブート試験 OK)|ログ・DB・PnL 出力階層整理タスク 洗い出し|FRMMbot の出口ロジック強化方針を決定|DD で建玉が閉じないバグ を修正 | “再起動=運用死守ライン” を体感。依存関係の棚卸し=安心感◎ | cron ベース継続監視を組み込む |
6 / 15 (日) | bucketize_day.py など ETL パイプライン一式を Makefile 化(record / bucketize / funding / validate )|3 h データ取得→バケット化→バックテスト POC 成功 | 行数ズレ・型不一致で落ちるリスクを検証で炙り出し | “fail-fast” バリデータ拡充 |
6 / 16 (月) | core.py を RotatingFileHandler 付きに刷新(10 min / 100 MB ローテ & 即時 gzip)|1 h 長回しテスト OK | I/O ↔ CPU バックプレッシャ制御と gzip で 10分の1 圧縮に成功 | 24 h ランで RSS 監視値チューニング |
6 / 17 (火) | memory_pressure -l critical で 8 GB MBA の上限を定量チェック → メモリ節約ルール 策定|Bybit Recorder v5 コードレビュー(型ヒント統一・タスクキャンセル戦略)|fix-trade-schema ブランチで Hyperliquid Sniper trade スキーマ修正着手 | フリーズ原因=メモリ逼迫+ VSCode 拡張干渉と仮説立証 | Sniper: ローカル POC → Docker 化 |
6 / 18 (水) | ラジオ原稿ネタ「失敗する / 成功する asyncio 設計」ラフ作成|エッセイ 「ブラックボックス礼賛」 執筆=思考整理デー | コードから離れ概念リフレッシュ | FRMMbot 仕様書ドラフトまとめ |
6 / 19 (木) | (この日は新規コード作業なし -- インプット/設計整理に充当) | テストネット → 本番移行計画 を一覧化 | |
6 / 20 (金・今日) | Mac Thunderbolt 接続状況の確認→開発環境 I/O 安定化チェック 新機材購入を決定 | 実機ハード情報の見方を把握 | ディスプレイ解像度固定後の 長時間 Recorder 再テスト |
来週のTODO
- 新機材のセットアップ
- MMbotのエントリ&エグジットロジックを詰める
- 清算スナイプbot/マルチCEXarbbotの監視体制常駐&安定化
というわけで、明日からは新機材のセットアップとそれに伴ってどんどん加速していく開発&運用フローをコツコツと磨いていきます。

今後もこの調子で開発の進捗状況を発信していきます。