前回の記事に引き続き、今回も仮想通貨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 ガードを温存 |
3 | Fee 符号補正 (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 ガード(ロスカット上限)を温存できるのがメリット。 |
3 | Fee 符号補正 (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
- 「リベートだけで黒字」を先に作ると精神的にラク
まずは“取引手数料の返金(メーカーリベート)だけでプラスになる”状態を目指すと、値動きを読むストレスがぐっと減ります。相場がどちらへ動いても、置いておくだけで少しずつ利益が積み上がるので、落ち着いて次の改良に取り組めます。 - PostOnly 固定でも板が動くと IOC 化する ⇒ tick オフセット は必須
「PostOnly =必ず板に乗る」と思いがちですが、板(オーダーブック)が急に動くと、指値が相場に飲み込まれて IOC/Taker 約定 に変わることがあります。数 tick(0.1 USD × n)外側に指す余裕を持たせることで、この“化け”をゼロにできます。 - 片翼ヘッジは「“埋める”より“逃げる”ほうがコスト小」
片側だけ約定して在庫を抱えたとき、同じ価格で反対側を待つより、すぐ成行で逃げたほうがコストが小さく済むケースが多いです。今回も「10 秒待ってダメなら即逃げる」方式で、損失ゼロのままリベートだけ取ることに成功しました。 - 手数料 API は取引所ごとに符号仕様が違う ― テストログで必ず検証
ある取引所は「リベート=負の手数料」、別の取引所は「リベートも正の手数料で返す」などバラバラです。実際のログを見て符号を合わせるひと手間をサボると、損益表示が真逆になるので要注意。 - DD Guard は Net ベースで張ると誤爆しない
DD ガードを「手数料控除後の純利益(Net)」で判定すると、リベート分を含めた本当の損益を基準にできます。Gross(手数料控除前)で張ると「黒字なのに DD ガード誤発火」という悲劇が起きるので、Net ベース推奨です。
§5. 今後のロードマップ
- 24 h 通し運転で統計を収集(Net / DD / Cancel% / p95 latency)
- ロットを 段階的 に 1.5× → 2× … 拡大
- Spread 閾値を ボラ指標 に連動させる自動最適化
- Grafana ダッシュボードで Net 曲線を常時モニタ
噛み砕くと,,,
- まずは 24 時間ぶっ通しで走らせて “健康診断”
Bot を丸1日止めずに回し、- 純利益(Net)
- ドローダウン(DD)
- 注文キャンセル率(Cancel%)
- ループの遅さの上位 5%(p95 latency)
といった数字を集めます。人間でいえば血圧や脈拍を測るようなもの。長時間データが取れれば、本当に安定しているか判断できます。
- ロット(取引数量)は “じわじわ” 増やす
いきなり大金を動かすと想定外の揺れが怖いので、1× → 1.5× → 2× …
と 段階的にロットをアップ。
各ステップで Net が安定してプラスなら、次の段階へ進む安全運転方式です。 - スプレッド条件を“相場の元気さ”に合わせて自動調整
相場が静かなときと荒れているときでは、取りたいスプレッド幅が変わります。そこで、価格の動き(ボラティリティ)を指標にして スプレッド閾値を自動で上下させる仕組みを作る予定です。手動チューニングを減らして、24 h 任せっぱなしでも最適に近づけるのが狙い。 - Grafana で “成績グラフ” を常時表示
最後に、純利益の折れ線や Cancel 率などをリアルタイムで眺められる ダッシュボード(Grafana) を用意します。グラフで異常を早期に発見でき、スマホからでも状況確認できるので運用がグッと楽になります。
§6. ⚠️さいごに(安全系ディスクレーマー)
本記事は個人開発の技術共有を目的としており、売買シグナルやアルゴリズムの核心部分は公開していません。
実売買は必ず自己責任でお願いします。
👇ラジオで話したこと
─ 「リベート黒字型 MM Bot、10 分テストで黒転換」回 ─
🎙️「どうも、よだかです。
前回は“観測できるボット”を目指してメトリクスを仕込みました。
きょうは 『Maker 100 % 固定で手数料負けをゼロにする』 がテーマ。
10 分のテストで『リベートだけで黒字』を確認できたので、
そのロジックと学びをサクッと共有していきます。」
1️⃣ サマリ
- 取引環境 … 本番ネット、極小ロット
- 新実装 … PostOnly+片翼ヘッジ+手数料符号補正
- 10 分結果 … Net + 0.25 USD、Taker 0 件、DD 0
- 次フェーズ … 24h 通し → ロット拡大 → 自動最適化
🎙️「要は“板に置くだけで利益が出る体質”に一歩近づいた、
というわけです。」
2️⃣ 主要改修4つ
(1) ± n tick オフセット指値
読み方:ティック・オフセット
「PostOnly でも板が飛ぶと IOC 化して Taker に化けます。
そこで 中央から数ティック外側 にずらして置いて、
‘Maker でしか約定しない’ 条件を物理的に保証しました。」
(2) 片翼 Fill → 10 s ヘッジ
「片側だけ刺さったら 10 秒だけ反対側を待機。
埋まらなければ 即成行で逃げる。
在庫リスクを 10 秒以内に封じ込める作戦です。」
(3) Fee 符号補正(isMaker 判定)
「Bybit v5 はリベートも 正の値 で返すクセ者。
isMaker=True
だけは 符号を反転 させてnet = pnl - fee
が正しく計算できるようにしました。」
(4) 高速ループ(interval ≈ 数秒)
「8 秒→4 秒へ短縮。Cancel は減り Fill は増える。
ただし API レート制限 を踏まえて、
ここは板の流動性と要相談。」
3️⃣ 10 分テストの結果
Cycle | pnl | fee | net | メモ |
---|---|---|---|---|
3 | +0.00 | –0.04 | +0.04 | 両サイド Maker |
4 | +0.00 | –0.04 | +0.08 | 片翼→逃げ |
5 | +0.00 | –0.04 | +0.12 | 〃 |
🎙️「見てのとおり、価格差益ゼロでも
リベートだけが積み上がって右肩上がり。
これが“リベート黒字型”の醍醐味です。」
4️⃣ 学び & Tips
- リベート黒字を先に作る → 相場を読まなくてもメンタル安定
- PostOnly だけでは不十分 → オフセット必須
- 片翼は“埋めるより逃げる” → コスト最小
- API ごとに手数料符号が違う → ログで要確認
- DD ガードは Net 基準で張れ → 誤爆防止
5️⃣ 次のロードマップ
- 24 h 通し運転 … Net / DD / Cancel% を統計
- ロット 1 → 1.5 → 2 × … 段階拡大
- ボラ連動の動的 s_entry … 閾値を自動で上下
- Grafana ダッシュボード … 成績をリアルタイム監視
🎙️「まず 24 時 間走らせて“健康診断”を終えたら、
ロットをジワジワ上げていきます。
目標は 『寝てても稼働、起きたらグラフで確認』 です。」
🎙️「というわけで、『Maker 固定で黒字化』 の回でした。
今後は 24 h テストとロット拡大の過程についてお届けします。
コードと資金はくれぐれも自己責任で!
それでは、また次回。」