仮想通貨トレーディングBot構築
体系ガイド+段階的ロードマップ
📖 このガイドの読み方
- 各概念は「概念 → なぜ重要 → Botでの効き方」の順で読む。
- ⚠️ 警告ボックスは本番で資産を失う論点、■ 要点ボックスは判断の核、> 注記ボックスは時点依存・出典依存の但し書き。
- 判断ゲート G0〜G3を満たしてから次フェーズへ。「動いたから次へ」ではなく「基準を満たしたから次へ」。
- §6 のチェックリストはクリックで進捗が保存される(この端末のブラウザ内)。
§エグゼクティブサマリ
本ガイドは、国内現物の暗号資産トレーディングBotを「理論理解 → バックテスト/検証基盤 → 小規模実運用」の3段階で構築するための体系ガイドである。各フェーズの末尾に測定可能な判断ゲートを置き、「動いたから次へ」ではなく「基準を満たしたから次へ」進む。
最初のゴールは「儲かるBotをいきなり作る」ことではない。仮説 → 検証 → 小額運用 → 監査可能な改善を継続できるトレーディングシステムを作ることである。結論として、現物・低頻度・少数銘柄・小額・完全ログ型から始め、マーケットメイク、高頻度裁定、ML予測、レバレッジ運用は後段に回すのが合理的だ。
Botの利益は戦略だけで決まらない。期待収益は概念的に次のように分解できる。
インジケーター選定よりも、仮説の質・検証設計・リスク制御・執行・監視・セキュリティが重要である。
特に肝に銘じるべき注意点。
- バックテストは静かに嘘をつく — ルックアヘッド・過剰最適化・生存者バイアスを構造的に潰す検証基盤の品質が、成否の大半を決める。
- コストが損益の符号を決める — 国内は「取引所(板)」と「販売所(スプレッド数%)」が桁違い。Botは必ず板APIを叩く。
- 税が戦略を規定する — 2026-06時点は雑所得・総合課税(最大約55%)、暗号資産同士の交換も課税イベント。高回転戦略は税引後で評価する。
- 出金権限なしAPIキー+多層フェイルセーフが実弾投入の絶対条件。最初の実弾は「全損しても生活に影響しない額(数万円)」に限定する。
本文中で示す手数料・レート制限・税率・統計値はいずれも時点依存・概算・出典依存である。実装・運用前に必ず各取引所の公式APIドキュメント、国税庁・金融庁・JVCEAの一次情報、税理士で裏取りすること。
0全体像:Botの利益は「戦略」だけで決まらない
0.1何を作るのか(守備範囲)
暗号資産市場は 24/7 稼働、CEXは板(オーダーブック)、DEXはAMMという異なる市場構造を持つ。本ガイドは国内CEXの現物・板取引を主対象とする。
| 戦略種別 | 概要 | 国内現物での可否 |
|---|---|---|
| DCA(積立) | 定額定期購入。予測放棄・最堅牢 | ◎ 最初の題材に最適 |
| トレンド/モメンタム | 上昇を取り下落でキャッシュ退避 | ○ 買いのみ前提で実装可 |
| 単一銘柄逆張り(平均回帰) | z-score/RSIで過熱検出 | △「落ちるナイフ」対策必須 |
| グリッド/簡易MM | 指値網・両側提示でスプレッド+リベート | △ メイカーがマイナスの取引所限定 |
| 取引所間/三角裁定 | 価格差を取る | △ 事前資金配置型のみ現実的 |
| ペアトレード(市場中立) | 空売り必須 | ✕ 現物では不可(将来オプション) |
| ファンディング/現先裁定 | 無期限先物が必要 | ✕ 現物では不可(将来オプション) |
0.2なぜ「国内CEX現物」から始めるのか
API整備・日本円入出金・規制内・税務の見通し・清算リスクなし。レバレッジ/無期限先物/DEX/海外取引所は規制・税務・カウンターパーティリスクが増すため、比較・将来オプションに留める。なお国内の個人向け暗号資産証拠金取引のレバレッジ上限は、暗号資産の種類によらず 2倍である(現物中心の本ガイドでは清算リスク回避の根拠として補足的に把握しておけばよい)。
0.3個人Botが負けやすい理由(先に直視する)
- 執行ミスマッチ: 戦略の欠陥より、スリッページ・レイテンシ・部分約定・二重発注など「本番だけで起きる」問題が主因。
- バックテストの嘘: ルックアヘッド(当日終値で当日約定)は勝率を静かに2-3%底上げし、気づきにくい。
- 過剰最適化: パラメータを多数試し、偶然勝った1つを「発見」と誤認。
- コスト軽視: 販売所スプレッド・テイカー手数料往復・税で期待値が消える。
- 生存者バイアス: SNSは勝ち報告だけが拡散。溶かした多数は投稿しない。
参考として「公表戦略の相当数が新データで再現に失敗する」「バックテストSharpeと実運用成績の相関は極めて低い」「実運用ではエッジが大きく減衰する」といった報告が複数ある。ただしこれらは特定研究・媒体由来の概算で、出典依存・諸説あり。数字を鵜呑みにせず「本番では理論値どおりにはいかない」という方向性の教訓として受け取る。
0.4現実的な目標設定
- 「最悪全損してよい少額」で、本番固有のバグを小さな損失で炙り出すことが初期の目的。
- 実運用はバックテスト理論値の50-70%再現できれば上等(エッジは本番で大きく減衰しうる)。
- Botの真価は「年率◯%」ではなく「破産しない検証・リスク・運用の型」を持つこと。
0.5自己勘定運用と第三者向け提供の規制差
日本では、自分の資金・自分の口座で、登録済み国内交換業者の公開APIを使って自動売買すること自体は適法(取引所の利用規約・API規約の遵守が前提)。一方、無登録で他人資産を集めて運用したり、Bot組込みの運用サービスやシグナル配信+預り金を他人へ提供すると、暗号資産交換業/金融商品取引業等の無登録営業に該当し得る。本ガイドは前者(自己勘定)に限定する。
1理論マップ:最初に理解すべき領域
各概念は「概念 → なぜ重要 → Botでの効き方」で読む。
1.1市場構造・取引所メカニクス
板(オーダーブック)と最良気配(BBO)
板は買い指値(ビッド)と売り指値(アスク)を価格順に並べたもの。最高ビッド = best bid、最安アスク = best ask、差がスプレッド。約定はテイカーが反対側の指値を価格優先・時間優先(price-time priority)で食って成立する。国内の「取引所(板)」= bitFlyer Lightning / bitbank / GMO取引所 / Coincheck取引所。「販売所」は取引所が相手の相対取引で、スプレッドが片道2.5〜5%にもなることがある。Botは必ず板を叩く。
OHLCVだけでは市場の一部しか見えない。完全には、板の厚み・スプレッド・出来高・約定履歴・キャンセル・流動性偏り・(先物では)資金調達率・建玉・清算・手数料体系まで含む。現物・低頻度はOHLCV中心で開始可。MM/裁定/短期はL2板・約定・レイテンシ・約定確率・maker/taker・部分約定が必須。
注文種別(対応マトリクスを最初に作る)
| 種別 | 意味 | 主な対応(要公式確認) |
|---|---|---|
| market(成行) | 即時約定・常にテイカー | 全社 |
| limit(指値) | 板に載ればメイカー | 全社 |
| stop / stop_limit(逆指値) | トリガー発火 | bitbank: type:stop / stop_limit(trigger_price) |
| Post-Only | テイカー化を拒否しメイカー限定 | GMOコイン(国内初導入) |
| OCO / IFD / IFD-OCO | 利確+損切り自動設置 | GMOコイン等 |
| IOC / FOK | 即時約定残キャンセル / 全約定不可なら全取消 | 取引所差あり |
→ 対応していない注文種別を前提に設計するとライブで破綻する。初期に各社公式ドキュメントで対応表を作る。
国内現物取引所では、サーバ側ストップ/ストップリミットのAPI対応が限定的・取引所依存である。サーバ側ストップが無い前提で、Bot側のソフトストップ(価格監視 → 成行/指値発注)を実装する必要がある。だがソフトストップはBotプロセスの生存が前提であり、「Botプロセスが落ちたら損切りも止まる」のが現物Bot最大級の損失リスクである。後述のデッドマンスイッチで全注文をキャンセルできても、保有ポジションのフラット化(損切り執行)はできない点に注意。接続断・プロセス死亡時の挙動を最初に設計する。
メイカー/テイカーと手数料(2026時点・現物板・要再確認)
| 取引所 | メイカー | テイカー | 備考 |
|---|---|---|---|
| bitbank | -0.02% | +0.12% | メイカーがマイナス=受取(リベート)。MM/グリッド向き |
| GMOコイン(BTC/ETH/XRP/DAI) | -0.01% | +0.05% | 取引所「取引手数料」が無料の項目あり、Post-Only対応 |
| GMOコイン(その他銘柄) | -0.03% | +0.09% | |
| bitFlyer Lightning | メイカー 0.15%→0.01%(段階制) | テイカー 0.15%→0.01%(段階制) | 直近30日取引量で逓減。メイカー/テイカーともプラス手数料=リベートなし |
| Coincheck(取引所) | 無料の銘柄あり | 無料の銘柄あり | 販売所はスプレッド収益 |
注記:
- 「マイナス手数料」=メイカー約定すると逆に受け取れる仕組み(bitbank / GMOの一部)。bitFlyerは段階制だがリベートは無く常にプラス手数料であり、メイカー戦略の収益構造が bitbank / GMO とは決定的に異なる。比較時に混同しないこと。
- GMOの「取引所API手数料無料」は取引「板」サービスの取引手数料に関する条件であり、API利用料が無料という意味。メイカー/テイカー手数料(マイナス含む)は別概念として発生する。
→ テイカー往復(例 GMO 0.05%×2 = 0.10%)を超えるエッジが無ければ成行多用は構造的に負ける。メイカーリベートを取る設計(Post-Only指値)か、低頻度で値幅を稼ぐ設計かが戦略選択の分岐点。
流動性・スリッページ・マーケットインパクト
厚み(depth)= 各価格帯に積まれた数量。成行はBBOから順に厚みを消費し、平均約定価格が初期BBOから乖離する=スリッページ。発注サイズが板の厚みに対し大きいほどインパクトが拡大。スプレッドは「即時性の最低コスト」、厚みは「価格を動かさず捌けるサイズ」、スリッページは「期待価格と実約定価格の差」と整理できる。国内はBTC_JPY以外の流動性が薄く、ニュース時はスプレッドが数倍化。→ バックテストで「BBOで全約定」と仮定すると必ず負ける。板から想定平均約定価格を計算し、最大発注を板トップ数レベルの累積数量の一定割合に制限する。
マッチングエンジンと板同期(REST + WebSocket)
取引所内部のマッチングエンジンが価格優先・時間優先で約定を生成する。Bot側の同期パターン:
- RESTで板スナップショット取得
- WSで差分(L2 incremental)を受けローカル板を更新
- シーケンス番号/タイムスタンプでギャップ検出 → 再スナップショットで再構築
約定・残高は別ストリームで突合。ローカル板の同期バグは最頻出の実装事故。見えている板は常に「過去」であり、成行は想定より滑り、指値は約定しないことがある前提で設計する。
現物 vs 先物/perp/funding(比較知識)
現物 = 資産そのものを売買、保有金利コストなし・強制ロスカットなし。証拠金/レバレッジ = 担保で建玉、維持率割れで追証・強制ロスカット(例: bitFlyerは維持率100%未満で追証、50%未満で強制決済)。無期限先物(perp) = 満期のない先物で、現物指数価格に貼り付けるため資金調達率(funding, 典型8時間ごと)を多数派から少数派へ授受。約定/清算はmark price(操作耐性のある公正価格)基準。海外perpのfunding/ベーシスはセンチメント補助指標として国内現物Botでも市況把握に使える。
CEX vs DEX(比較知識)
CEXはオーダーブック方式・カストディ・KYC前提。DEXは多くがAMM(定数積 x·y=k)でスリッページが非線形(指数的)に拡大し、mempool可視ゆえMEV(フロントランニング等)にさらされる。日本の登録現物Botは規制・税務・法的明確性からCEXが基本で、DEXは初学者の実運用対象としては推奨しにくい。
取引所間裁定の実情
「価格差があるから儲かる」は典型的誤解。往復手数料・送金時間(ブロック確認+取引所処理)・送金中の価格変動・板の薄さで見かけの鞘の大半が消える。国内で現実的なのは両取引所に事前資金配置して送金せず取る型のみ。
1.2戦略アーキタイプ(国内現物で現実的なものを明示)
エッジの源泉(最初に1文で言語化する)
あらゆる収益は次のいずれかに分解できる:(1)方向性リスクプレミアム(トレンド/モメンタム)、(2)平均回帰(過剰反応の修正)、(3)裁定/無リスク鞘、(4)流動性供給の対価(MMのスプレッド/リベート)、(5)情報/イベント。「自分の取りに行くエッジは誰がなぜ手数料を払ってくれるのか」を言えないと、ただのノイズへのオーバーフィット。国内現物では(1)(2)(3の取引所間)が現実的、(4)はリベートのある取引所で限定的に可能、(3の現先/funding)は現物のみでは原理的に取れない。
市場レジーム整合
トレンドフォロー/ブレイクアウト/モメンタムはトレンド相場で機能しレンジで削られる(ホイップソー)。グリッド/MM/逆張りはレンジで機能しトレンドで大逆行。レジームは事前に確実な判別はできず(ADX・ボラ・ハースト指数・MA傾き等で推定する程度)。単一戦略は必ず不得意レジームを持つため、レジーム判定か停止条件(グリッドはレンジ逸脱で全停止)が必須。
国内現物で成立する戦略集合(線引き)
- 成立する: トレンド(買い/退避)、単一銘柄逆張り、比率リバランス、取引所間/三角裁定、グリッド、DCA、リベート取引所での簡易MM。
- 成立しない/将来オプション: ペアトレードの市場中立形(空売り必須)、ファンディング裁定・現先裁定(無期限先物必須)。
各戦略の要点と破綻シナリオ・推奨度
| 戦略オプション | 推奨度 | エッジ | 破綻シナリオ | 必須の歯止め |
|---|---|---|---|---|
| 低頻度・現物・トレンドフォロー | モメンタム | レンジでホイップソー、機関参入でエッジ減衰 | 下落時キャッシュ退避 | |
| 低頻度・現物・平均回帰 | 過剰反応修正 | 落ちるナイフ(下落トレンド) | トレンドフィルター+ストップ+最大ナンピン回数上限 | |
| グリッド/レンジ | レンジ往復 | トレンド逸脱で含み損が無限に拡大 | レンジ逸脱で全停止・資金管理 | |
| ペア・統計裁定 | 価格不整合 | 相関/共和分崩れ、空売り必須 | ※現物のみでは市場中立形は組めない | |
| Funding rate / basis裁定 | キャリー | 先物レッグの深いDD・清算 | ※Perp/清算/証拠金理解後 | |
| マーケットメイク | スプレッド+リベート | 在庫偏り・逆選択・レイテンシ | 在庫上限・リベート取引所限定 | |
| ML予測 | (多様) | 最も過剰最適化しやすい | 特徴量/リーク防止/WF/劣化検知 |
勝率の直観:トレンドフォローは勝率30-45%だが損小利大でペイオフが歪み、少数の大相場が年間損益を決める。逆張り系は勝率高めだが損益比が悪いと一発で破綻。MMは在庫リスクが本質(Avellaneda-Stoikovが古典)。ペアトレは共和分ベースが相関ベースより有効との報告(Gatevら、ただし期間・銘柄依存で再現性は要自前検証)。
1.3アルファ・シグナル生成
テクニカル指標と滑らかさのトレードオフ
SMA/EMAは平滑化とラグのトレードオフ。RSI(14)/MACD(12/26/9)はモメンタム、ボリンジャー(MA±2σ)はボラ正規化、ATRは方向を持たないボラ指標でストップ幅・サイジングに最も実用価値が高い。単独指標のエッジはコスト控除後でほぼ消える。1戦略あたり指標は3-4個まで(過剰は過学習)。
時系列の性質
生価格は非定常(ADF/KPSSで確認)→ 対数リターンで定常化。リターン自体の自己相関は弱いが、二乗・絶対値には強い自己相関=ボラティリティクラスタリング(ARCH-LM検定)。→ 方向予測は難しいがボラ予測は相対的に容易で実務価値が高い。特徴量は必ず定常化してからモデルへ。
GARCH系
GARCH/EGARCH/GJR-GARCH(archライブラリ)で条件付き分散を予測。サイジング・動的ストップ・レジーム検知に。方向予測より頑健だが構造変化直後は崩れる。
特徴量設計と分数次差分
通常の1次差分はメモリを失いすぎる。López de Pradoの分数次差分は「定常性を満たす最小の差分次数d」でメモリを最大限残す(mlfinpy)。各ファクターに経済的合理性を持たせると過学習の歯止めになる。
ラベリング(ML戦略の生死を分ける)
- トリプルバリア法: 各時点から当時のボラに比例した上バリア(利確)・下バリア(損切り)・垂直バリア(時間上限)のどれに先に当たるかでラベル付け。
- メタラベリング: 方向(side)は別ルールで決め、MLは「取る/見送る=ベットサイズ」だけを学習。
- リーケージ防止: purged k-fold + embargo が必須。通常のランダムk-foldは時系列で未来漏れを起こし、バックテストを壊滅的に楽観化する。
有意性検定(領域全体の安全装置)
多数試せば偶然優れた戦略が必ず出る(試行回数Nが増えるほど偶然の最大Sharpeは上振れ)。Deflated Sharpe Ratio (DSR)(試行回数・歪度/尖度・サンプル長で補正)、PBO(CSCV法)で「偶然でないか」を評価。最低100トレード・複数サイクルで検証。試した全戦略・全パラメータの回数を記録することが補正の前提(→ 実験トラッキングは §4・§6 で仕組み化)。
暗号資産固有のオルタナデータ
オンチェーン(取引所ネットフロー、MVRV、SOPR、Glassnode/CryptoQuant)は日次〜サイクルの中長期・コンテキスト用で国内低頻度Botと相性が良い。センチメント(Fear & Greed指数)は逆張り補助・単独根拠にしない。OFI等の微細構造アルファは秒以下の超低レイテンシ前提で国内現物では実用困難(実証的にも減衰報告あり)。RLは過学習リスクが高く最後の手段。
1.4バックテスト・検証手法(最重要・厚め)
ここが戦略全体の成否を大きく左右する。「コードが動く=正しい」ではない。バックテストは静かに間違った数字を出し続けるのが最も危険。 QuantConnectが説くように「バックテストは現実の近似にすぎず、仮定の質が全てを決める」。
(1) ルックアヘッドバイアス(最頻出・最も気づきにくい)
「その時点で知り得なかった未来情報」の混入。典型:確定していない当日足のcloseで当日途中に約定/全期間で計算した平均・分散で過去を正規化/再描画系インジケータ(ZigZag)。
- 実装規約: シグナルは t 時点で確定した情報のみで生成し、約定は t+1 始値(または次tick)。
shift(1)を最初に固める。指標・正規化は rolling/expanding で過去のみ参照。
(2) 過剰最適化・多重検定
- 対策: 試行回数を記録 → DSR / PBO / White's Reality Check で割り引く。パラメータは経済的根拠のあるものに限定し、鋭いピークでなく滑らかなパラメータ高原(plateau)を選ぶ。最終判断は一度も触っていないホールドアウトでのみ。パラメータ数の目安は10個未満。
(3) アウトオブサンプル検証とウォークフォワード(WFA)
IS(学習)/OOS(検証)を時系列分割。WFA =「直近Nヶ月で最適化 → 次Mヶ月で評価」をスライド(anchored = 窓を伸ばす / rolling = 固定長)。複数OOS区間でレジーム依存の脆さを暴ける。
(4) 時系列CV(Purged / Embargoed / Combinatorial)
金融時系列はラベルが時間的に重なるため通常k-foldはリーケージ。Purged k-fold + embargo で重複除去。CPCV はN個のブロックからk個を検証に選ぶ全組合せで多数の擬似OOSパスを生成し PBO/DSR を低分散に推定。初期はWFA、成熟後にCPCV。
(5) 取引コスト・スリッページ・約定遅延のモデリング
- 保守的スリッページ目安:主要通貨片道0.05〜0.1%、低流動アルト0.2〜0.5%以上。
- OHLCVのみのバックテストはスリッページを過小評価しうる。
- ストレステスト: 手数料2倍・スプレッド2倍・レイテンシ100〜200ms・フルTaker手数料でも黒字か。
- ターンオーバー(回転率)を必ず計測=コスト感応度の代理。
(6) リスク調整後リターン指標(複合で見る)
| 指標 | 定義 | 注意 |
|---|---|---|
| CAGR | 年率成長率 | 単独では誤誘導 |
| Sharpe | 超過リターン/全体ボラ | 単独では誤誘導 |
| Sortino | 超過リターン/下方ボラ | 上振れを罰しない |
| Calmar | 年率リターン/MDD | 生存性に直結 |
| MDD(最大DD) | ピークからの最大下落率 | 最重要・先に上限を決める |
| Profit Factor | 総利益/総損失 | 1.2未満は弱い |
| Expectancy | 期待値(手数料込) | 全トレードを共通計測 |
| 勝率・損益比 | 勝率90%でも損益比0.1なら破綻 | |
| Exposure / Trade Count / Parameter Robustness | パラメータ近傍で急落しないか |
暗号は24/7なので年率化は252日でなく365日基準(時間足なら 365×24 等)。
合格ラインの考え方:「利益が出ること」ではなく、手数料2倍・スリッページ2〜3倍・約定遅延・暴落/横ばい/上昇/下降の各局面で崩れないこと。
(7) 生存者バイアスとデータ品質
現在生き残る銘柄だけで検証するとリターンが過大評価される。point-in-timeユニバース(各時点で実際に取引可能だった銘柄集合、上場廃止含む)を使う。国内BTC/ETH中心なら影響は相対的に小さいが、銘柄選択ロジックを持つ戦略では致命的。
(8) ペーパートレード/フォワードテスト(最終関門)
testnet/dry-run → 最小ロット実弾。データ遅延・API障害・レート制限・注文却下・部分約定・再起動時の状態復元はバックテストでは見えない。バックテストとフォワードの乖離が許容内かを定量ゲートに。
Freqtradeのdry-run等は「自分の指値が板に与える影響・キュー順位・実際に約定したか」を正しくシミュレートできず、楽観的に約定したと見なしがち。メイカー戦略ではペーパーは特に当てにならず、約定品質は極小ロット実弾でしか測れない。「ペーパーで税引後プラス」を過信してはいけない。
1.5リスク・資金管理(勝つことより破綻しないこと)
「リターン最大化」ではなく「破産回避とMDD上限の先決め」が出発点。リスク管理コードは戦略コードより先に、かつ厚く書く。
ドローダウンの非対称性(腹落ちさせる)
−10%回復に+11.1%、−30%に+42.9%、−50%に+100%、−80%に+400%。だから「取り返そうと賭け額を増やす」は自滅。
ポジションサイジング
- 固定比率(%リスク法): 1トレードで口座の0.25〜1.0%(保守的)〜最大2%だけをリスクとして賭ける。
数量 = (資産 × リスク割合) / |エントリー価格 − 損切り価格|損切り価格を先に決め → 数量を逆算する順序をコードで強制。1R(リスク単位)で全トレードを共通計測(Rマルチプル)。期待値 = 勝率×平均勝ちR − 負け率×平均負けR。初心者の第一選択。
- ケリー基準: 勝率p・損益比b(q=1−p)のとき
f* = (b·p − q)/b。連続/正規近似ではf* ≈ μ/σ²。フルケリーはエッジ10%過大評価で賭け率2倍・DD 50-80%級。1/4〜1/2ケリーに留める。ファットテールの暗号では1/4以下が無難。> 注記記号の定義に注意:μ・σ²はリスクフリー控除後の期待「超過」リターンと分散であり、ボラ/リターンの時間スケール(年率か日次か)を必ず揃えること。日次リターンと年率分散を混ぜると桁が狂う典型ミスになる。
- ボラティリティターゲティング:
サイズ ∝ 目標ボラ / 実現ボラ(EWMA/GARCH/ATRで推定)。BTCの30日実現ボラは年率30〜45%帯(金の30〜45倍)。相場が荒れたら自動で薄く張る — DD安定化に最も効く。
サーキットブレーカー/キルスイッチ(多層防御)
| 層 | トリガー | アクション |
|---|---|---|
| トレードレベル | 損切り価格到達 | そのトレードを決済 |
| 戦略レベル | 日次 −2〜5%、連敗N回 | その戦略を停止(StoplossGuard/Cooldown) |
| ポートフォリオレベル | 累積MDD超過、接続断、約定/注文レート異常、価格想定外乖離 | 全停止+全キャンセル |
| 手動 | 緊急ボタン | 全決済・全停止 |
停止は「警告」でなくハードルール(コード強制・人手不要)。停止状態を永続化し再起動で解除されないように。Freqtradeのstoploss/protection機構が実装リファレンスになる。
VaR/ES と相関
VaR = 信頼水準での最大損失、ES/CVaR = VaR超過時の平均損失(テールリスク)。暗号はファットテールで正規仮定VaRは過小評価 → ヒストリカル法を。アルトはBTCと相関0.7超、ストレス時に相関が1へ収束し分散が効かなくなる。相関行列を定期再計算し高相関クラスタの合算エクスポージャを制限。1銘柄に資産の20%超を賭けない上限をコードでハード化。
規律のシステム化
パラメータをコード/設定にロックし、変更はGit管理+レビュー+再バックテスト+判断ゲート通過を必須化。リベンジトレードを技術的に不可能にする。緊急時は「止める」だけで「増やす」裁量は持たせない。
1.6データ取得・管理
データ種別の階層
OHLCV(最も扱いやすい)/ティック・約定履歴/L2板/ファンディング(現物は対象外)/オンチェーン。粒度が細かいほどデータ量・コストが指数的に増える。国内現物の初手は1分足OHLCV + 約定履歴で十分なことが多い。
国内取引所の質の高いヒストリカル板(L2)は入手しにくい。スリッページ/約定モデルや簡易MM検証はL2履歴がないと成立しないため、早期に自前WebSocketコレクタで板/約定を録り始める。複数レジームをまたぐ自前L2データは数ヶ月かけないと貯まらない — これがロードマップの所要期間を規定する(§3参照)。
タイムスタンプ整合性
取引所ごとに基準(約定/受信/サーバ)・精度(秒/ミリ秒/マイクロ秒)・TZが違う。保存はUTC epoch整数(ミリ秒統一)、表示時のみJST変換。ローカルタイム保存はTZバグとリークの温床。
バー境界・リサンプリング
pandas resampleのデフォルト label='left' のまま「バー時刻 = 確定時刻」と誤解すると未来情報リーク。label='right', closed='right' の意味を理解し、シグナルは確定済みバーのみで生成。低粒度→高粒度集約は可、逆は不可なので保存は最小粒度で。
ohlc = trades['price'].resample('5min', label='right', closed='right').ohlc()
vol = trades['size'].resample('5min', label='right', closed='right').sum()
# シグナルは確定足のみ。実行時は shift(1) でバー内情報の混入を防ぐ
signal = (df['close'] > df['close'].rolling(200).mean()).shift(1)
取引所間データ差異
同じBTC/JPYでも価格・出来高・板厚が違う。販売所と取引所で実効価格が大きく異なる。出来高がbase建てखかquote建てか、taker sideの定義も差がある。約定する取引所自身のデータで検証するのが鉄則。
リアルタイムストリーミング
WSは必ず切れる。CCXT Proの watch* は未対応取引所だとRESTポーリングへフォールバック(emulated)。板差分はsequence番号で連続性チェック → 欠番で再スナップショット。WS主・REST補完の二重化、ハートビート監視(GMOは1分ping/3回無応答で切断)。
ストレージ選定
| 用途 | 推奨 | 備考 |
|---|---|---|
| 小規模ヒストリカル分析 | Parquet + DuckDB | サーバ不要・列指向・第一選択 |
| リアルタイム書込+SQL | TimescaleDB | PostgreSQL拡張・連続集約でOHLCV自動生成 |
| ティック級高頻度 | QuestDB / ClickHouse | 取り込みスループット最速級 |
パーティション設計は exchange/symbol/year/month。大規模はpolarsがpandasより高速・省メモリ。
データ品質
欠損バー(連続インデックスにreindexして穴検出)、重複(約定IDで一意化)、異常値(ゼロ価格・桁違い)、ヒストリカル改訂。取得元・取得時刻のメタデータを残し再現性を担保。汚いデータでの綺麗なバックテスト結果が最も危険。
1.7システム設計・実装インフラ
推奨アーキテクチャ(最小構成)
Exchange API/WebSocket
│
▼
Market Data Collector ──► Data Store (OHLCV/trades/orderbook/funding/fees)
│ │
▼ ▼
Feature / Signal Engine ◄──────────┘
│
▼
Risk Engine ← シグナルが「買い」でも、ポジション上限/日次損失/
│ スプレッド/流動性/API異常/データ遅延で却下できる
▼
Order Management System (OMS)
│
▼
Exchange Adapter
│
▼
Execution / Fill / Balance Reconciliation
│
▼
Monitoring / Alert / Kill Switch / Audit Log
要点:Signal EngineとRisk Engineを必ず分離する。 シグナルが買いでもRisk Engineが上限・損失・流動性・異常で却下できる構造にする。イベント駆動(MarketEvent → SignalEvent → OrderEvent → FillEvent)にしておくとバックテストとライブを同一フローに保てる(nautilus_trader等)。国内現物の数銘柄・低頻度なら最初はポーリングループで十分だが、リスクチェックを執行から、戦略を取引所APIから分離しておかないと後で全面書き直しになる。
REST vs WebSocket
RESTは状態変更(発注・キャンセル)と正確な照会(残高・約定)。WSは高頻度ストリーム(板・約定通知)。鉄則は「価格・板はWSで受け、発注はRESTで投げ、約定確定はRESTで必ず突合」。WSを唯一の真実にしてはいけない。
レート制限・バックオフ(目安・要再確認)
| 取引所 | 制限 |
|---|---|
| bitbank | 参照系 約10回/秒・更新系 約6回/秒、超過で429 |
| GMOコイン | Private GET/POST各20回/秒(高取引高で30)、WS subscribe 1IP1回/秒 |
| bitFlyer | Private 約500req/分(IP単位)、注文系に細かい上限 |
クライアント側トークンバケット+429/5xxで指数バックオフ+ジッター。ccxtの enableRateLimit は目安として常時ONにしつつ過信しない。
冪等性・二重発注防止(最も痛いバグ)
ネットワーク断で「リクエストは届いたがレスポンスが返らない」は必ず起きる。client_order_id(UUID)で冪等発注。国内は対応がまちまちなので非対応取引所では「発注intentをローカル永続化 → 発注 → 確定」の二相記録にし、起動時にオープン注文・約定履歴と突合(リコンサイル)。盲目的リトライ禁止 — まず fetchOrder で実状態を照会してから再送判断。
# 概念コード:冪等発注 + 例外分岐
coid = str(uuid.uuid4())
record_intent(coid, symbol, side, amount, price) # ローカル永続化(発注前)
try:
order = ex.create_order(symbol, 'limit', side, amount, price,
params={'clientOrderId': coid})
confirm_intent(coid, order['id'])
except ccxt.RequestTimeout:
# 盲目的に再送しない。実状態を照会してから判断
existing = find_order_by_client_id(ex, coid)
if existing is None:
retry_with_backoff(coid) # 届いていなければ同一coidで再送
except (ccxt.InsufficientFunds, ccxt.InvalidOrder):
kill_switch.trigger("invalid order"); notify_human()
状態管理・約定整合性
内部状態は必ず取引所実状態と乖離しうる。取引所をsource of truthとし、起動時+定期+約定イベント受信時にREST照会で残高・オープン注文・約定履歴を突合、差分があればアラート+安全側(発注停止)。全イベントを追記専用ログで永続化(イベントソーシング)=税務記録にもなる。
言語選択
国内現物の低〜中頻度(秒〜分足、数銘柄)はPython一択(ccxt/freqtrade/jesse/pandas/TA-Lib、開発速度最速)。asyncio + aiohttp/websockets + uvloop でI/Oバウンドは十分。マイクロ秒を争うHFTのみRust(nautilus)/Go。「速いから」と最初からRustで全部書くと判断ゲートに到達できない。
金額計算
価格・数量・残高は必ずDecimal。floatの端数・丸めで数量エラー・残高ずれが起きる。tick size/lot size/最小発注額はAPIのmarket情報(ccxtの precision/limits)から取得して丸め、発注前バリデーション。
WebSocketライフサイクル
ping/pongハートビート、切断検知 → 指数バックオフ再接続、再接続後にチャンネル再購読+再認証+RESTで再同期、沈黙検知ウォッチドッグ。
設定・シークレット・dry-run分離
APIキーはコード/Gitに絶対入れず環境変数/Secret Manager。戦略パラメータはYAML/TOMLでコードから分離し、dry-run/liveを同一コードで設定フラグ切替。APIキーは権限最小化(出金権限なし・IPホワイトリスト)。
時刻同期
VPSのNTP同期を有効化。nonce/timestamp expiredエラー防止。複数プロセス/再起動でのnonce巻き戻りに注意。
1.8セキュリティ・運用
APIキー権限最小化(唯一にして最重要の防御線)
Botに渡すキーは「参照+取引」のみ。出金・送金権限は絶対に付けない。漏洩しても最悪「勝手に取引される」に留まり「資産が消える」を防げる。出金先アドレスのホワイトリスト登録も併用。bitbankは出金エンドポイントが存在するためコード側で出金系メソッドを呼ばないガードを併用。NISTの鍵管理・OWASP API Security Top 10の考え方に沿う。
IPホワイトリスト・シークレット管理
BotのStatic IP(Elastic IP/NAT GW)のみ許可(GMO/Coincheckは管理画面で対応)。シークレットは最低でも環境変数、推奨はSOPS+age/dotenvx、本番はVault/AWS Secrets Manager。30〜90日でローテーション(新キー発行 → 設定更新 → 動作確認 → 旧キー失効のゼロダウンタイム手順)。本番/検証鍵を分離。git-secrets/gitleaks のpre-commitフックで誤コミット防止。
依存関係・サプライチェーン・OS堅牢化
ライブラリのサプライチェーン攻撃(pip/npmの悪性パッケージでキー窃取)に備え、依存をlockfile+ハッシュで固定(ピン留め)する。CCXT等の更新を追う運用と、更新による破壊的変更/悪性更新のリスクはトレードオフなので、更新は検証環境で先に確認してから本番へ。VPS自体の堅牢化(SSH鍵認証のみ・自動セキュリティアップデート・最小開放ポート・ファイアウォール)も行う。
アカウントセキュリティ
2FAはSMSでなくTOTP/FIDO2(SIMスワップ対策)。国内登録業者は資金決済法・JVCEA規則で、利用者の暗号資産を原則コールドウォレット等で管理し、ホットウォレット保有分は同種・同量の履行保証暗号資産を自己資産として保持する義務がある(=文字どおりの100%コールドではなく、ホット保有分の見合い担保が制度の肝。取引所破綻リスクはゼロではない)。したがって運用資金(取引所)と保管資金(ハードウェアウォレット)を分離し、Botに必要な最小限だけ取引所に置く。
運用リスク分類
| 種別 | 内容 |
|---|---|
| 暴走発注 | 単位ミス(円とBTC取り違え)・無限ループ・状態管理バグによる二重発注 |
| フラッシュクラッシュ | 薄板で成行が想定外価格で約定(国内アルトは特に薄い) |
| 取引所障害/メンテ | bitFlyer 毎日4:00-4:10定期メンテ、相場急変時のサーバ詰まり・遅延約定 |
| API変更 | エンドポイント/レート制限/レスポンス仕様の変更 |
| 取引所カウンターパーティ/出金規制 | 障害時の出金停止・新規受付停止・約定取消、銀行側の暗号資産関連振込制限。複数取引所分散の裁定では「資金を動かせない」リスクが本質 |
これらはバックテストに絶対現れない運用層リスク。
フェイルセーフ
キルスイッチ(全注文キャンセル+新規発注停止を一発実行)、ポジション/発注上限、日次損失キャップ、デッドマンスイッチ(Botが定期pingし途絶えたら別プロセスが全キャンセル=Healthchecks.io/Uptime Kuma)。国内現物は取引所側Cancel-on-Disconnectが限定的なので自前ハートビート監視が現実的。実弾前に意図的に発火させて確実に止まることをテスト。
再掲:デッドマンスイッチで全注文キャンセルはできても、保有ポジションのフラット化(損切り)はBotプロセスの生存が前提。プロセス死亡時に建玉が無防備になる点を最大リスクとして扱う。
監視・アラート
Prometheus + Grafana + Alertmanager(個人ならTelegram/Discord通知でも可)。重要メトリクス:
- 損益/DD(日次・累積)
- 残高乖離(内部想定残高と実残高の差=バグの早期警報・最重視)
- 注文失敗率/APIエラー率
- レイテンシ(内訳を分解:データ受信 → シグナル計算 → リスクチェック → 発注 → 約定確認の各段)
- 時計ドリフト(clock skew)の常時監視(NTPずれはnonce/timestampエラーの原因)
- ハートビート/稼働
閾値超過でアラート+キルスイッチ連動。
ログ・冪等性
全発注・約定・APIエラーを構造化ログ(JSON, timestamp, client_order_id)で永続化。CCXTの例外階層(NetworkError/OnMaintenance/RateLimitExceeded/InsufficientFunds/InvalidOrder/OrderNotFound)を型ごとに分岐。ネットワーク系のみ指数バックオフ、約定不明時は照会してから判断。
段階的資金投入とRunbook
ペーパー → 最小ロット実弾 → 段階増額。障害復旧手順(全キャンセル → 建玉確認 → リスク中立化 → 原因調査 → 再開条件)を平時に文書化。再開は自動でなく人間の判断ゲートを挟む。bitFlyer定期メンテ時間帯は自動停止を組み込む。
1.9日本の規制・税務・取引所選定
税務・規制は2026-2028が転換期。確定情報は国税庁・金融庁・JVCEAの一次情報と税理士で都度確認。本ガイドの数値は時点依存。
現行の所得税(2026-06時点)
暗号資産の利益は原則雑所得・総合課税。所得税累進(5〜45%)+住民税10%で最大約55%。損益通算(給与等との通算)・繰越控除は不可(雑所得内の通算は可)。課税イベントは売却だけでなく暗号資産同士の交換(BTC→ETH)・商品決済・条件によりステーキング/レンディング報酬も含む。給与所得者の「雑所得20万円以下なら申告不要」は所得税限定の特例で、住民税は20万円以下でも申告義務が残る。なお年間収入300万円超かつ帳簿保存がある場合などは事業所得等の判定論点が出る。
取得原価計算法
総平均法(届出しない場合のデフォルト)または移動平均法。一度選ぶと原則3年継続・銘柄ごと管理。Bot稼働前に方式を固定し、Cryptact/Gtax等の設定と一致させる。高頻度Botは手計算が破綻するため損益計算ツール連携が前提。
年跨ぎ含み益リスク(最も痛い実務事故)
総合課税・損益通算不可の下で、「年内に利益確定したが暗号資産のまま保有 → 年明けに暴落 → 納税資金が無い」という時間差リスク(いわゆる年末の税地獄)が最大級の事故になる。高回転Botは含み益と実現益が日々ズレるため、対策をリスク管理コードに組み込む:
- 実現益が一定額を超えたら、保守的に税相当額(現行なら最大約55%)を自動で円転・隔離する運用ルール。
- 納税想定額を別口座/別管理にし、運用資金と混ぜない。
規制の大転換
2025年6月に改正資金決済法が成立・公布(電子決済手段等・暗号資産仲介業の新設、国内資産保有命令の追加等、政令等は2026年6月施行予定)。金融審議会WG報告(2025-12-10)で暗号資産を資金決済法から金商法(FIEA)の金融商品へ移管する方針。インサイダー・相場操縦規制(見せ玉/スプーフィング等のアルゴ規制明確化)・無登録業者の厳罰化が及ぶ方向で、2026年通常国会に法改正提出見込み。Botでも見せ玉的なアルゴ設計は将来的に規制対象となりうる点を継続ウォッチ。
2026年度税制改正大綱(2025-12-19公表・方針段階)
特定暗号資産を申告分離課税へ移行する方針が示された。税率は20.315%(所得税15% × 復興特別所得税2.1%上乗せ = 15.315% + 住民税5%。文書により「一律20%」と要約されるが正確には20.315%)。損失の3年繰越控除も方向付け。適用は「金商法改正法施行日の属する年の翌年1/1以後」=早くて2028年1月想定。対象は「国民の資産形成に資する暗号資産に限定」等の条件付き・細目未確定で、国内上場の主要銘柄(BTC/ETH等)が当然に対象になるとは限らない。
→ 当面の収益試算は現行の総合課税前提で保守的に行い、分離課税は別シナリオとして管理する。断定は禁物。
個人 vs 法人の器(規模が出たら検討)
| 観点 | 個人(現行・雑所得) | 法人 |
|---|---|---|
| 課税 | 総合課税・最大約55% | 実効 約23〜34%目安 |
| 損失通算 | 雑所得内のみ・繰越不可 | 損失繰越(中小は10年) |
| 含み益 | 売却時課税 | 期末時価評価課税の論点あり(要確認) |
| 経費 | 雑所得の必要経費(VPS代・データ代・ツール課金等) | 経費範囲が広い |
ソフトウェアエンジニアの本格運用では、VPS代・データ代・ツール課金の経費算入、雑所得内通算を押さえ、規模が出たら法人化の是非を税理士と検討する。判断は §3 のフェーズ0で前提として持っておく。
Botの合法性
自己資金・自己口座・登録業者の公開APIでの自動売買は適法(規約遵守前提)。他人資産運用/シグナル配信+預り金は無登録営業リスク。海外取引所(例: Bybitは過去3度FSA警告・2026年に日本居住者向けサービス終了)は規制・税務・被害回復の三重リスク。国内現物主軸は規制リスク最小化の正しい選択。
取扱銘柄
JVCEA審査通過のホワイトリスト/グリーンリスト銘柄のみ(グリーンリスト=3社以上取扱・初回から6か月超等で個別審査が緩和される広く流通する銘柄)。海外の薄商いアルトは国内非対応。対象銘柄リストはハードコードせずmarkets APIから動的取得し、上場廃止・取引停止・メンテ時間に例外処理。
取引所選定マトリクス(要一次情報再確認)
| 取引所 | 板取引 | メイカー/テイカー | CCXT | 特徴 |
|---|---|---|---|---|
| bitbank | ◎ アルト板も比較的厚い | -0.02% / +0.12% | 対応 | MM/グリッド向き、stop/stop_limit、公式docs整備、ネイティブWS |
| GMOコイン | ◎ | -0.01% / +0.05%(主要4) | 未統合(公式API直叩き) | API手数料無料・入出金無料・Post-Only |
| bitFlyer | ◎ BTC/JPY国内トップ級 | 0.01〜0.15%段階(リベートなし) | 対応(Pro=WS) | BTC板厚さ重視、アルト現物ペア少 |
| Coincheck | △ 板対応銘柄限定 | 取引所無料の銘柄あり | 対応 | 販売所主体・Bot不向きな経路に注意 |
→ GMOコインがCCXT未統合は見落としやすい。使うなら api.coin.z.com を自前実装する前提。国内特化ならpybotters(非同期・WS・DataStore・日本語docs)も有力。
2よくある落とし穴・失敗パターン(領域横断)
| # | 落とし穴 | 回避策 |
|---|---|---|
| 1 | 販売所APIでBotを回す(スプレッド数%で即破綻) | 必ず「取引所(板)」エンドポイント。コードのコメント/テストで「販売所を叩いていない」を保証 |
| 2 | ルックアヘッド(当日closeで当日約定・全期間スケーリング) | シグナルは確定足のみ、約定はt+1。shift(1)を規約化。再描画系インジケータ排除 |
| 3 | 過剰最適化・多重検定(90%超勝率・綺麗すぎる右肩上がりは危険信号) | 試行回数を記録しDSR/PBOで割り引く。パラメータ高原を選ぶ。ホールドアウトは最後に1回だけ |
| 4 | コスト無視(手数料・スプレッド・スリッページ・税) | 実コストを実測して埋め込み。手数料/スプレッド2倍・フルTakerのストレステスト。税引後で評価 |
| 5 | メイカー指値がテイカー約定してリベートどころか手数料を払う | Post-Only使用。約定種別を実約定データで必ず検証。フィルされないリスクも損益に織り込む |
| 6 | ローカル板/ポジション同期ミス(WS差分取りこぼし) | sequence/timestampでギャップ検出→再スナップ。RESTをsource of truthとして定期突合 |
| 7 | 二重発注(タイムアウト時の盲目的リトライ・再起動で同じ注文) | client_order_id冪等発注+起動時リコンサイル。再送前に必ず実状態照会 |
| 8 | サーバ側ストップ非対応の見落とし(プロセス死亡で損切りが効かない) | ソフトストップ実装+プロセス死活監視。各社のストップ系API対応を実機確認 |
| 9 | 生存者バイアス(今日の銘柄を過去に投影) | point-in-timeユニバース・上場廃止銘柄含む。国内BTC/ETH中心なら影響小 |
| 10 | 国内現物制約の無視(空売り・先物前提の戦略を実装) | 成立する戦略集合を最初に線引き。市場中立/ファンディング系は将来オプションに |
| 11 | 税の設計漏れ(暗号資産交換も課税・20万円ルールを住民税に誤適用・年跨ぎ納税原資) | 全約定ログ永続化→Cryptact/Gtax連携。20万円ルールは所得税限定。納税相当額を円転・隔離 |
| 12 | 出金権限付きキー・キー直書き・IP制限なし・依存未固定 | 出金権限を外す・コードガード・Secret Manager・IPホワイトリスト・pre-commitフック・lockfile固定 |
| 13 | フェイルセーフなしで本番投入 | キルスイッチ・上限・損失キャップ・デッドマンスイッチを実弾前に発火テスト |
| 14 | floatで金額計算 | Decimal徹底・tick/lot/最小額をmarket情報から取得して丸め |
| 15 | バックテスト合格=本番OKの誤認/ペーパー過信 | dry-run→最小ロットの判断ゲート。乖離を定量監視。メイカー約定は実弾でしか測れない |
| 16 | メンテ停止ツールへの依存(素のbacktrader等) | メンテ状況・ライセンス・本番移行性を選定時に確認 |
| 17 | 海外前提情報で税・規制を誤認(分離課税が既に始まったと誤解) | 一次情報で都度確認。現行は雑所得・総合課税 |
3段階的ロードマップ(バランス型)
各フェーズに測定可能な判断ゲートを置く。「動いたから次へ」ではなく「基準を満たしたから次へ」。基準割れなら躊躇なく前フェーズへ戻す。
依存関係の前提:国内L2板履歴は買えず自前収集が必要なため、データ収集はフェーズ1で開始し以後ずっと並行で回し続ける。L2に依存する戦略(精密MM・スリッページ実測・グリッド精密検証)は、L2が数ヶ月蓄積された後段に回す。最初は公開OHLCV/海外データで検証作法を固める。
目的・制約・前提合わせ
目的
運用目的/対象市場/対象商品/最大DD/1日最大損失/1トレード最大損失/使用資金上限/税務記録要件/取引所リスク方針を定義。「個人botの多くは負ける」「バックテストは静かに嘘をつく」を出発点に据える。
学ぶ/作る
板・指値/成行・スプレッド・メイカー/テイカー・スリッページ(Harris『Trading and Exchanges』)。各取引所の手数料/最小単位/レート制限/API仕様・ストップ系API対応可否を一次ドキュメントで確認。販売所と取引所(板)の価格差を実際に画面で見比べる。日本の税(雑所得・総合課税、暗号資産交換も課税、20万円ルールは所得税限定)と個人/法人の器の違いを把握。
初期制約(推奨デフォルト)
現物のみ/BTC・ETH・主要ステーブル中心/レバなし/小額/1時間足以上。
成果物
注文種別+ストップ対応マトリクス、手数料・レート制限比較表、「取りに行くエッジは何か」を1文で言語化したメモ。
取引所を1〜2社に選定済み/対象銘柄(まずBTC_JPY)決定/取得原価計算法(総平均 or 移動平均)を固定/「最悪全損してよい少額」の上限を決定/規模が出た場合の法人化検討を税理士相談事項としてメモ。
理論理解+データ基盤
目的
「正しいデータを持つ」ことに先行投資。実装の最重要関門である板同期・壊れない執行の最小骨格を固める。
学ぶ/作る
- CCXT(またはpybotters/GMO公式API)で板スナップショット+WS差分・約定・自分のfillを取得し、ローカル板を再構築 → シーケンスギャップ検出 → 再同期。
- 壊れない執行の最小骨格を先に作る:Decimal計算、client_order_id冪等発注、発注intentのローカル永続化、起動時リコンサイル、ソフトストップ+プロセス死活監視、キルスイッチの雛形(リスク管理コードを戦略より先に厚く)。
- タイムスタンプUTC統一、Parquet+DuckDBに保存(パーティション設計)。データ品質チェック(欠損/重複/異常値)。L2板/約定の自前WebSocketコレクタを起動して録り始める(以後継続)。
- スリッページモデル化関数(「このサイズを成行したら平均いくらで約定するか」)。
- statsmodelで非定常性 → 対数リターン・ADF/KPSS・ボラクラスタリングを手を動かして確認。最初は1h・4h・日足で十分。
成果物
データ収集パイプライン、ローカル板再構築モジュール、スリッページ推定関数、執行の最小骨格、ヒストリカルデータセット(蓄積中)。
板同期がギャップ検出 → 再同期で安定動作する/コスト(手数料±+保守的スリッページ)込みのバックテストが回る/全約定ログが税計算可能な形式で永続化される/冪等発注・リコンサイル・ソフトストップの最小骨格が動く。
検証基盤・仮説ベース戦略研究
目的
「紙の上で勝つBot」を排除する検証規律の確立。ここがBot全体の成否を大きく決める。
学ぶ/作る
- 因果性規約(シグナル=確定足のみ、約定=t+1)をコードレビューで強制。
- 仮説ベースで研究(戦略を量産しない)。仮説例:200日MA上抜けでトレンドフォロー期待値改善/ETH-BTC短期乖離の平均回帰/高ボラでサイズ縮小しCalmar改善/上昇トレンドの押し目買いはRSI逆張りよりDD小。1仮説の検証時間・パラメータ数を制限。
- 単純戦略(移動平均クロス/ドンチャンブレイク+下落時退避、DCA)を vectorbt/Jesse/freqtrade で実装。
- ウォークフォワード分析(rolling/anchored)→ 複数OOS区間で安定して正のエッジが残るか。train/validation/test分割、Monte Carlo順序シャッフル、最大連敗・最大DD。
- DSR / PBO / purged k-fold + embargo を標準手順化。実験トラッキング(MLflow/W&B/DVC、シード固定、結果とgitコミットハッシュの紐付け)で試行回数を自動記録(手作業の集計は必ず破綻する)。
- ストレステスト(手数料/スプレッド2倍・レイテンシ・フルTaker)。複数レジーム(強気/弱気/レンジ、2-3年)で評価。取引所別・暴落ストレステスト。
- QuantStats等で複合指標レポート(CAGR/Sharpe/Sortino/Calmar/MDD/PF/ターンオーバー)。
- リスク管理モジュール(固定比率・ATRストップ・キルスイッチ・ボラターゲティング)。
- (任意・後半)トリプルバリア+メタラベリング+LightGBM、GARCHによるサイジング — すべてpurged CVとDSRで検証。
成果物
再現可能なバックテスト基盤、WFA/CPCVスクリプト、実験ログ、検証レポート、リスク管理モジュール。
- ルックアヘッドが無いことをコードで確認済み。
- OOS/WFAで DSRが有意(多重検定後も偶然でない、目安 p<0.05相当)かつ MDDが「フェーズ0で自分が決めた許容損失額」以内 かつ 複数レジームでプラス。
生Sharpeの絶対値(例 Sharpe>1)を固定の合格線にしない。 24/7・365日年率化したSharpe>1は単一BTC現物・低頻度では非現実的に高く、地味だが健全な戦略を棄却し過学習した高Sharpe戦略だけを通す逆選択を招く。また「MDD 10-15%以内」は株式・分散ファンド基準で、単一BTC現物では20-40%が普通に出るため固定閾値にすると実質全滅する。閾値は絶対値固定でなく「DSR有意」「自分の許容額以内」という相対基準にする。
- 最低100トレード・複数サイクルで検証。コスト2倍でも非破綻・パラメータ近傍で急落しない・取引回数十分・1取引所1銘柄非依存・障害時動作定義済み。
- ペーパー(dry-run)で1〜3ヶ月、税引後でプラスかつバックテストとの乖離が許容内(ただしメイカー約定はペーパーでは過信しない)。
- フェイルセーフ(キルスイッチ・上限・デッドマン・ソフトストップ)を意図的発火テストで合格。
ペーパー → 小額ライブ
目的
本番固有のバグ・運用リスクを小さな損失で炙り出し、ライブとバックテストの乖離を実測。目的は利益でなく運用品質検証。
学ぶ/作る
- ペーパートレード:リアルタイム取得/発注シミュ/約定想定/想定PnL対実勢/各種ログ/残高照合/異常通知。足確定前シグナル変化・想定価格で約定しない・スプレッドで期待値消失・API制限・残高ズレを観測。
- Docker化して国内リージョンVPS/クラウドへデプロイ(NTP同期・restart: always・ログ永続化・SSH鍵のみ・最小ポート)。
- APIキー最小権限(出金なし・IP制限)、Secret Manager、構造化ログ、監視(Prometheus+Grafana or Telegram通知、残高乖離・時計ドリフト含む)。
- 最小ロット実弾(数千〜数万円、全損可の額)で開始。実約定のスリッページ・手数料符号・部分約定・約定率、メイカー戦略なら実フィル率・キュー位置・マークアウト(約定後N秒のPnL)・逆選択コストを計測(これらはペーパーでは測れず実弾でのみ計測可能)。
- 約定ログをCryptact/Gtaxに流せる形式で出力し損益・納税額(住民税含む)をシミュレート。納税相当額の円転・隔離ルールを稼働。
- 障害復旧Runbook、bitFlyer定期メンテ自動停止。
KPI(90日の重心は「利益額」でなく「検証品質」「運用品質」)
実約定スリッページ/APIエラー率/注文拒否率/未約定キャンセル率/バックテスト差分/PnL乖離/残高照合エラー/最大連敗/アラート妥当性/停止・再起動復旧性。
無人で安定稼働し残高乖離が出ない/実約定スリッページ・約定率が想定内/実成績が税引後で理論値の50-70%を再現/フェイルセーフが本番ストレス下で機能。→ 満たせば段階的に増額/銘柄拡大。割れたらフェーズ2へ戻す。
増額時の回帰ゲート:薄い国内板では増額するほどスリッページが効きエッジが消える(キャパシティ制約)。増額のたびに、更新した発注サイズ・板厚前提でG3(実スリッページ・約定率が想定内か)を再通過する。
本番運用化・改善・拡張
- 複数戦略ポートフォリオ/複数取引所/ユニバース選定/ボラターゲティング/取引所リスク分散。
- Prometheus・Grafana監視/監査ログ/税務エクスポート/週次・月次レポート/戦略停止基準/モデル劣化検知/定期再学習・WF更新・DD上限サーキットブレーカ。
- レンジ系(グリッド/簡易MM)をリベート取引所(bitbank)で。レンジ逸脱全停止・在庫上限・テイカー約定比率点検必須。L2蓄積後に本格検証。
- 規制・税制ウォッチを定常化:金商法移管(2026国会〜)と分離課税20.315%(最短2028・条件付き・未確定)を別シナリオ管理。確定したら戦略・法人化要否を再評価。
- 発展(別フェーズ・別リスク管理):共和分ペアトレード・ファンディング裁定は国内レバ口座/海外先物口座が必要 — 規制・税・カウンターパーティリスクを再評価してから。
ロードマップまとめ表
| 時期 | フェーズ | 主眼 |
|---|---|---|
| 1週目 | フェーズ0 | 方針決定・前提合わせ・取引所選定 |
| 2〜3週 | フェーズ1 | データ基盤+壊れない執行の最小骨格(L2収集は以後継続) |
| 4〜6週 | フェーズ2 | 仮説ベース戦略研究 |
| 7〜8週 | フェーズ2 | 検証強化(WF/DSR/PBO/ストレステスト) |
| 9〜10週 | フェーズ3 | ペーパートレード |
| 11〜14週 | フェーズ3 | 小額ライブ |
| 15週〜 | フェーズ4 | 本番運用化・拡張 |
最初の堅い設計:FreqtradeでBTC/ETH現物(まずBTC_JPY)の4時間足トレンドフォローBot。市場フィルター(BTCが長期MA上回る時のみリスクオン)/エントリー(短期モメンタム+出来高一定以上+スプレッド閾値以下)/イグジット(トレンド悪化/ATR損切り/トレーリング/日次損失上限)/サイズ(min(資産×許容損失率/損切り幅, 流動性上限, 銘柄上限))。発注は現物・成行 or 保守的指値、リスクは1トレード0.5%以下・日次2%で停止、運用はペーパー2〜4週 → 小額ライブ4週以上、実装はFreqtradeでMVP → 必要時CCXT自作化。
4推奨技術スタック・ツール・OSS(国内現物前提)
技術スタックの推奨度付き要約:(1) Freqtrade中心 (MVP最効率)、(2) CCXT+自作エンジン (OMS/リスク/監視/ログ自作要)、(3) Hummingbot (MM/裁定向け)、(4) QuantConnect/LEAN (マルチアセット研究)、(5) Jesse (検証重視)。初期はFreqtradeでMVP → 限界が見えたらCCXT自作化が現実的。
| レイヤ | 第一推奨 | 代替/補完 | 国内現物での注記 |
|---|---|---|---|
| 言語 | Python | Rust/Go(HFTのみ) | 低〜中頻度は Python一択。asyncio+aiohttp+uvloop |
| 取引所接続 | CCXT / ccxt.pro | pybotters(国内WS特化・日本語docs) | GMOコインはCCXT未統合→公式API直叩き。各社のWS/レート制限/精度/注文種別は実機検証 |
| Bot基盤 | Freqtrade(バックテスト→dry-run→ライブ一貫、月次リリース) | NautilusTrader(本番グレード・Rustコア)、Jesse(ルックアヘッド排除の検証重視) | 空売り前提例が多いので買い/退避に翻案。国内取引所対応は要検証 |
| 高速研究 | vectorbt(OSS、Apache2.0+Commons Clause=商用販売不可) | vectorbt PRO(有償) | 大量パラメータ探索=多重検定の温床なのでDSR/PBO併用前提 |
| 指標計算 | TA-Lib | pandas-ta-classic(本家pandas-taは2026/7アーカイブ予定) | 指標は3-4個に絞る |
| 統計/ML | statsmodels(ADF/KPSS/共和分)、arch(GARCH)、LightGBM/XGBoost、mlfinpy(トリプルバリア/分数次差分/purged CV) | scikit-learn | mlfinlab本家はクローズド化、mlfinpyが代替 |
| 板/ティック高精度BT | hftbacktest | — | MM/OFI学習・検証用。国内現物実戦は低レイテンシ制約で困難 |
| データ保存 | Parquet + DuckDB(小規模) | TimescaleDB(リアルタイム)、QuestDB/ClickHouse(ティック) | polarsで大規模高速化 |
| 実験管理/再現性 | MLflow or W&B + DVC | git tag + シード固定 | 試行回数の自動記録=DSR/PBOの前提。手作業集計は破綻する |
| インフラ | Docker + 国内リージョンVPS/クラウド | AWS/GCP/さくら/ConoHa | 取引所に近い東京リージョン。NTP同期必須・SSH鍵のみ・最小ポート |
| 監視 | Prometheus + Grafana + Alertmanager | Telegram/Discord通知(個人最小構成)、Sentry、Healthchecks.io/Uptime Kuma(デッドマン) | 残高乖離・時計ドリフト監視を最重視 |
| シークレット | 環境変数+SOPS+age / dotenvx | Vault / AWS Secrets Manager | git-secrets/gitleaks pre-commit、依存lockfile固定 |
| 評価レポート | QuantStats | pyfolio-reloaded / empyrical | 年率化は365日基準 |
| リスク/最適化 | NumPy/Pandas/SciPy(自前VaR/CVaR/ケリー) | Riskfolio-Lib(ERC/CVaR)、PyPortfolioOpt(HRP) | まず自前実装で原理理解 |
| 税務 | Cryptact / Gtax | 国税庁計算書Excel(検算用) | 方式を固定しツール設定と一致させる |
| センチメント参照 | Alternative.me Fear & Greed API(無料) | Glassnode/CryptoQuant(有料・中長期) | 補助シグナル・単独根拠にしない |
5学習リソース(優先度付き)
最優先(検証規律の核・必読)
- Marcos López de Prado『Advances in Financial Machine Learning』 — トリプルバリア・メタラベリング・分数次差分・Purged/Combinatorial CV・DSR・PBO。検証手法の決定版。
- Larry Harris『Trading and Exchanges』 — 板・注文種別・流動性・コスト。戦略以前の「取引の物理」。
- Bailey & López de Prado『The Deflated Sharpe Ratio』 / 『The Probability of Backtest Overfitting』(SSRN 2326253) — 高Sharpeを信じる前に通す手続きの原典。
戦略・リスク管理
- Ernest P. Chan『Algorithmic Trading』『Quantitative Trading』 — 平均回帰・モメンタム・ペアトレード(共和分)・ケリー。
- Van K. Tharp『Trade Your Way to Financial Freedom』 — Rマルチプル・エクスペクタンシー・サイジング(初学者向け)。
- Ralph Vince『The Mathematics of Money Management』 / Thorp『The Kelly Capital Growth Investment Criterion』 — 固定比率・ケリー・破産確率。
- Stefan Jansen『Machine Learning for Algorithmic Trading』(2nd) — データ→特徴量→モデル→検証の一気通貫(GitHubに全コード)。
公式ドキュメント(一次情報)
- Freqtrade(freqtrade.io)/ CCXT(docs.ccxt.com)/ NautilusTrader(nautilustrader.io/docs)/ Jesse(jesse.trade)/ Hummingbot(hummingbot.org)。
- bitbank API(github.com/bitbankinc/bitbank-api-docs)/ GMOコイン(api.coin.z.com/docs)/ bitFlyer Lightning(lightning.bitflyer.com/docs)/ Coincheck(coincheck.com/documents/exchange/api)。
- 国税庁 暗号資産タックスアンサー・計算書 / 金融庁 暗号資産制度WG報告(2025-12-10)・令和8年度税制改正(2025-12-26 PDF) / JVCEAグリーンリスト・自主規制規則。
論文・記事・コミュニティ
- arch / mlfinpy / vectorbt 各docs。pybotters docs+Zenn記事(国内事情に最も即した日本語実装情報)。
- BIS WP1087『Crypto carry』(ファンディング裁定の構造)、arXiv:2209.05559(crypto DRLの過学習)、暗号資産LOB微細構造の論文群。
- QuantConnect/LEAN・Quantopian Lectures アーカイブ(クオンツ検証作法)。
注意:「儲かる断言・実績スクショ・有料サロン/コピートレード勧誘」は生存者バイアスとして警戒。再現可能なコードと検証手順が公開された一次情報を優先し、自分のバックテスト/ペーパー結果を唯一の真実とする。
6次の一歩(最初の2週間チェックリスト)
Week 1:観察・準備・読む
Week 2:環境構築・データ取得
📚参考・出典
数値・仕様・税制は時点依存。実装・運用前に下記一次情報で必ず再確認すること。
取引所公式API・手数料(一次情報)
- bitbank API ドキュメント(REST/WebSocket、逆指値 stop/stop_limit、レート制限、メイカー -0.02%/テイカー +0.12%): github.com/bitbankinc/bitbank-api-docs
- GMOコイン API ドキュメント(Public/Private、Post-Only、IFD-OCO、レート制限、取引所現物の手数料): api.coin.z.com/docs
- bitFlyer Lightning API ドキュメント(REST/JSON-RPC over WebSocket、段階手数料、証拠金維持率・ロスカット): lightning.bitflyer.com/docs
- Coincheck 取引所API ドキュメント: coincheck.com/documents/exchange/api
規制・税務(一次情報)
- 国税庁『暗号資産等に関する税務上の取扱い及び計算書について』(雑所得・総合課税、総平均法/移動平均法、計算書Excel、FAQ)
- 金融審議会『暗号資産制度に関するワーキング・グループ報告』(2025-12-10、金商法移管・不公正取引規制)
- 金融庁『令和8年度税制改正における金融庁関係主要項目』(2025-12-26、申告分離課税20.315%・3年繰越・適用時期)
- 金融庁『暗号資産に関連する制度整備について』(個人レバレッジ2倍上限)、改正資金決済法(2025年成立・2026年施行予定)
- JVCEA(日本暗号資産等取引業協会)グリーンリスト・自主規制規則・利用者財産管理規則
OSS・ライブラリ(公式)
- CCXT / ccxt.pro: docs.ccxt.com, github.com/ccxt/ccxt
- pybotters(国内取引所WS特化・非同期): pybotters.readthedocs.io
- Freqtrade: freqtrade.io / Jesse: jesse.trade / NautilusTrader: nautilustrader.io / Hummingbot: hummingbot.org / QuantConnect/LEAN: quantconnect.com, github.com/QuantConnect/Lean
- vectorbt: github.com/polakowo/vectorbt / arch: arch.readthedocs.io / mlfinpy: mlfinpy.readthedocs.io / statsmodels / TA-Lib / pandas-ta-classic / Riskfolio-Lib / PyPortfolioOpt / QuantStats
- 損益計算ツール: Cryptact, Gtax / シークレット管理: SOPS(getsops/sops), HashiCorp Vault, AWS/GCP Secret Manager / 監視: Prometheus, Grafana, Healthchecks.io, Uptime Kuma, Sentry
書籍・論文(検証規律・戦略・市場構造)
- Marcos López de Prado『Advances in Financial Machine Learning』(Wiley, 2018)
- Bailey & López de Prado『The Deflated Sharpe Ratio』(SSRN 2460551)、Bailey/Borwein/López de Prado/Zhu『The Probability of Backtest Overfitting』(SSRN 2326253)
- Larry Harris『Trading and Exchanges: Market Microstructure for Practitioners』
- Ernest P. Chan『Algorithmic Trading』『Quantitative Trading』、Van K. Tharp『Trade Your Way to Financial Freedom』、Ralph Vince『The Mathematics of Money Management』、Thorp et al.『The Kelly Capital Growth Investment Criterion』、Stefan Jansen『Machine Learning for Algorithmic Trading』(2nd)
- BIS Working Paper No.1087『Crypto carry』、arXiv:2209.05559(crypto DRLの過学習)、暗号資産LOB微細構造に関する論文群(Avellaneda-Stoikov、Gatev et al. ペアトレード含む)
本文中の手数料・レート制限・税率・統計値は2025-2026時点の概算であり、出典依存・諸説あり・未確定(特に2026年度税制改正大綱・金商法移管は方針段階)の項目を含む。最終判断は最新の一次情報と税理士・専門家への確認をもって行うこと。