Bot mmnot 開発ログ

🛠️開発記録#220(2025/5/13) MMbot開発ログ24「“リベート黒字型” MM Bot、10 分テストで黒転換」

前回の記事に引き続き、今回も仮想通貨botの開発状況をまとめていきます。

§0. はじめに

  • 「前回は“可観測性”強化まで到達。今回は スプレッド条件のチューニングと Maker 固定化 がテーマ」
  • 非公開事項:スプレッド閾値の具体値/エントリー実装コード/API キー etc.

§1. 今日の到達点(サマリ)

項目公開版ステータス
取引環境デリバティブ市場(銘柄・板情報は抽象化)
Bot モード本番ネット/極小ロット
新規実装Maker 100 % 固定ロジック・片翼フラット化・Fee 符号補正
10 min テスト結果Net +0.25 USD / DD 0・Taker 約定 0
次フェーズ24 h テスト → ロット拡大 & 最適化自動化

§1. 今日の到達点(サマリ)— 解説

項目公開版ステータス解説
取引環境デリバティブ市場実際の無期限先物板でテストしました。
Bot モード本番ネット/極小ロット大きな資金を賭ける前に、まずは最小ロットで安全運転。挙動を“実戦”で確かめるフェーズです。
新規実装Maker 100 % 固定ロジック・片翼フラット化・Fee 符号補正① PostOnly で板に置く位置を調整し、約定をすべて Maker 化 ② 片側だけ約定したときは即ヘッジして在庫ゼロに ③ 取引所固有の手数料符号を修正し、リベートを正しく収益に計上——の三本柱です。
10 min テスト結果Net +0.25 USD / DD 0・Taker 約定 0たった 10 分の試走で手数料込みの純利益がプラスに。しかも Taker(逆指値)の混入や損失のブレはゼロでした。
次フェーズ24 h テスト → ロット拡大 & 最適化自動化まず 24 時間通しで統計を取り、問題なければロットを徐々に増やす予定。その後は板状況に応じてパラメータを自動調整する仕組みまで目指します。

§2. 主な改修ポイント

#機能目的・注意点
1±n tick オフセット指値PostOnly で IOC/Taker 化を完全阻止(n は非公開)
2片翼 Fill → 10 s 逆指値 → 成行退避在庫リスクをゼロ化し、DD ガードを温存
3Fee 符号補正 (isMaker 判別)Bybit v5 は Maker でも正値返却 → マイナス計上に修正
4高速ループ (interval=数秒)回転率 ↑・Cancel 率 ↓ ― ただし API Rate-Limit に要注意

§2. 追加した主要機能 — 解説

#機能何をしているか?どうして必要?
1± n tick オフセット指値指値を板中央から “数 tick 外側” にずらして置くことで、必ず PostOnly (=Maker) で板に並ぶようにしています。板が瞬間的に動くと PostOnly 注文が IOC/Taker に化けることがあります。± n tick のバッファを設けるとこの事故を 0 % にできます。
2片翼 Fill → 10 s 逆指値 → 成行退避片側だけ約定したら、逆側を 10 秒待っても刺さらない場合に即成行で逃げる “自動フラット化” を入れました。在庫を抱える時間を 10 秒以内に限定し、ほぼ 在庫リスク 0 で回せます。DD ガード(ロスカット上限)を温存できるのがメリット。
3Fee 符号補正 (isMaker 判別)Bybit v5 API は Maker リベートでも execFee を正値で返します。isMaker=True のときは符号を反転させ、リベートを “マイナス手数料” として集計しました。符号を誤解すると「黒字なのに赤字表示」になる致命的バグに。取引所ごとに API 仕様が違うため、ログで必ず確認するのが鉄則です。
4高速ループ (interval ≈ 数秒)板の再評価を 4 秒ごとに行い、発注のタイミングを細かく刻みました。ループが速いほど Cancel が減り Fill が増える=回転率アップ。ただし API の呼び出し回数が増えるため、レートリミットとサーバー負荷に注意が必要です。

§3. 10 分テストのハイライト(抜粋ログ)

cycle 3  pnl=+0.00  fee=-0.04  net=+0.04  (Maker)
cycle 4  pnl=+0.00  fee=-0.04  net=+0.08  (片翼リベートのみ)
cycle 5  pnl=+0.00  fee=-0.04  net=+0.12
…

§3. 10 分テストのハイライト — 解説

ログ行何が起きた?着目ポイント
cycle 3 pnl=+0.00 fee=-0.04 net=+0.04両サイドとも Maker でキャンセル無し。“価格差益” (pnl) はゼロでも、リベート (fee) が −0.04 USD 入り、純利益 (net) が +0.04 USD。「リベートだけで黒字」という戦略が機能していることを示す典型例。
cycle 4 pnl=+0.00 fee=-0.04 net=+0.08 (片翼リベートのみ)片側だけ約定→10 秒の逆指値→在庫ゼロ化。結果としてリベートだけをもう一回獲得。片翼でもリスクを抱えずに もう一度 −0.04 USD を積み上げられる。
cycle 5 pnl=+0.00 fee=-0.04 net=+0.12同じくリベートのみが積み上がり、10 分で純利益は +0.12 USD に。スプレッド利益を狙わずとも、Maker100 % × 高回転だけで黒字が伸びる様子が見える。

ポイントは “fee がマイナス” になっていること。
取引所から受け取るリベートを正しくマイナス計上できている証拠で、これが Net を押し上げています。サンプルでは価格差益 (pnl) がゼロのままでも、3 サイクル連続で Net が右肩上がりになっているのがわかります。


§4. 学び・Tips

  1. 「リベートだけで黒字」を先に作ると精神的にラク
    まずは“取引手数料の返金(メーカーリベート)だけでプラスになる”状態を目指すと、値動きを読むストレスがぐっと減ります。相場がどちらへ動いても、置いておくだけで少しずつ利益が積み上がるので、落ち着いて次の改良に取り組めます。
  2. PostOnly 固定でも板が動くと IOC 化する ⇒ tick オフセット は必須
    「PostOnly =必ず板に乗る」と思いがちですが、板(オーダーブック)が急に動くと、指値が相場に飲み込まれて IOC/Taker 約定 に変わることがあります。数 tick(0.1 USD × n)外側に指す余裕を持たせることで、この“化け”をゼロにできます。
  3. 片翼ヘッジは「“埋める”より“逃げる”ほうがコスト小
    片側だけ約定して在庫を抱えたとき、同じ価格で反対側を待つより、すぐ成行で逃げたほうがコストが小さく済むケースが多いです。今回も「10 秒待ってダメなら即逃げる」方式で、損失ゼロのままリベートだけ取ることに成功しました。
  4. 手数料 API は取引所ごとに符号仕様が違う ― テストログで必ず検証
    ある取引所は「リベート=負の手数料」、別の取引所は「リベートも正の手数料で返す」などバラバラです。実際のログを見て符号を合わせるひと手間をサボると、損益表示が真逆になるので要注意。
  5. DD Guard は Net ベースで張ると誤爆しない
    DD ガードを「手数料控除後の純利益(Net)」で判定すると、リベート分を含めた本当の損益を基準にできます。Gross(手数料控除前)で張ると「黒字なのに DD ガード誤発火」という悲劇が起きるので、Net ベース推奨です。

§5. 今後のロードマップ

  • 24 h 通し運転で統計を収集(Net / DD / Cancel% / p95 latency)
  • ロットを 段階的 に 1.5× → 2× … 拡大
  • Spread 閾値を ボラ指標 に連動させる自動最適化
  • Grafana ダッシュボードで Net 曲線を常時モニタ

噛み砕くと,,,

  1. まずは 24 時間ぶっ通しで走らせて “健康診断”
    Bot を丸1日止めずに回し、
    • 純利益(Net)
    • ドローダウン(DD)
    • 注文キャンセル率(Cancel%)
    • ループの遅さの上位 5%(p95 latency)
      といった数字を集めます。人間でいえば血圧や脈拍を測るようなもの。長時間データが取れれば、本当に安定しているか判断できます。
  2. ロット(取引数量)は “じわじわ” 増やす
    いきなり大金を動かすと想定外の揺れが怖いので、
    1× → 1.5× → 2× …段階的にロットをアップ
    各ステップで Net が安定してプラスなら、次の段階へ進む安全運転方式です。
  3. スプレッド条件を“相場の元気さ”に合わせて自動調整
    相場が静かなときと荒れているときでは、取りたいスプレッド幅が変わります。そこで、価格の動き(ボラティリティ)を指標にして スプレッド閾値を自動で上下させる仕組みを作る予定です。手動チューニングを減らして、24 h 任せっぱなしでも最適に近づけるのが狙い。
  4. Grafana で “成績グラフ” を常時表示
    最後に、純利益の折れ線や Cancel 率などをリアルタイムで眺められる ダッシュボード(Grafana) を用意します。グラフで異常を早期に発見でき、スマホからでも状況確認できるので運用がグッと楽になります。

§6. ⚠️さいごに(安全系ディスクレーマー)

本記事は個人開発の技術共有を目的としており、売買シグナルやアルゴリズムの核心部分は公開していません。
実売買は必ず自己責任でお願いします。

-Bot, mmnot, 開発ログ