最終更新:2026年5月。本記事で説明する指標はすべてfomoedサンドボックスエンジンの実フィールドです。バックテスト結果は教育目的であり、過去のパフォーマンスは将来のリターンを保証しません。
「自分の戦略は機能している気がする」と「機能していると分かっている」の差は、たった1つの数字に集約されます——その戦略が、自分がトレードしていなかった相場局面も含めた過去数年分の実チャートに対してどう振る舞ったか。それがバックテストです。誠実に行えば、裁量トレーダーが自動化前にやれる最も有用な作業。雑にやれば、自分宛に書いたセールストークになります——曲線が美しく見えるまでパラメータを弄り倒し、本番マネーが「モデル化し忘れていた何か」を発見する羽目に。
従来のバックテストへの道のりはこうでした:Pythonを書き、取引所APIからOHLCVのヒストリカルを取得し、インジケーターを自前で計算し、スリッページをシミュレートし、手数料を考慮し、部分約定を処理し、分析ロジックを書き、エクイティカーブを描画する。多くのトレーダーはステップ1で挫折します。ステップ7まで到達できる少数派も、最終的に運用に乗せる本番プラットフォームとは微妙に挙動の異なるバックテストエンジンを抱える羽目になり——その差分が本番運用で利益を削っていきます。
fomoedのサンドボックスは、このスタックをまるごと取り除きます。ペアを選び、戦略テンプレートを選び、期間を選び、Runを押す。対応ペアすべてに3年分のヒストリカル、取引所ごとの実手数料を反映、ライブ運用と同じエンジンコードパス、結果は1分以内。Pythonも、APIキーも、Jupyterも、スプレッドシートも不要。本記事ではワークフローをエンドツーエンドで解説し——さらに重要なこととして——「美しいバックテスト」を本番の損失に変える5つの落とし穴を取り上げます。
サンドボックスでバックテストできるもの
サンドボックスエンジンは現時点で4つの戦略クラスをサポートし、それぞれに独自の設定面があります:
インジケーターベースのカスタム戦略
RSI平均回帰、EMAクロスオーバー、MACDコンフルエンス、ボリンジャーバンドスクイーズ、VWAPフェード、複合インジケーターセットアップなど。12種類のインジケーター(RSI、EMA、SMA、MACD、ATR、ROC、Bollinger、VWAP、Williams %R、Stochastic、OBV、ADX)が利用可能で、任意の組み合わせをエントリートリガーまたはフィルターとして使えます。エンジンは動的パラメータ——バンド幅の比較、ルックバック期間、「上抜け/下抜け」条件——を処理してくれるので、自前で数式を書く必要はありません。
DCAおよびグリッドボット
ドルコスト平均法に、オプションのセーフティオーダー段組み、ポジション合算でのテイクプロフィット、設定可能なトリガー条件を組み合わせ可能。グリッドボットは定義したレンジ内で買いと売りを段組みで配置し、セルごとのTPを持ちます。両者とも本番版と同じエンジン内で動作し——サンドボックスは別のコードパスではなく、ヒストリカルキャンドルを食わせた同じ`trader.execute()`ループです。
Smart Money Concepts (SMC)
CHoCH(change of character)、BoS(break of structure)、オーダーブロック、フェアバリューギャップ、フィボナッチリトレースメント(0.618-0.79のOTEゾーン含む)、リクイディティスイープ。7つのプリミティブをすべてアルゴリズムで検出——サンドボックスは、本番エンジンがリアルタイムで実際にフラグを立てた正確なピボットを表示します。数式の詳細はSMCのピラーガイドを参照してください。
AIトレーディングエージェントによる戦略
戦略を平易な英語で2〜4文で表現できるなら、fomoedのAIトレーディングエージェントが同じサンドボックス内で動作するPythonスクリプトを生成します。スクリプトはインジケーターやSMCのプリミティブと組み合わせ可能ですが、独自のものを発明することはできません。「RSI<30 かつ price>200EMA で買い、+3% または RSI>70 でエグジット」のようなケースに有用——一度入力すれば、AIが配線を処理します。アーキテクチャの詳細はAIトレーディングエージェントのピラー記事を参照してください。
60秒でバックテストを実行する方法
エンドツーエンドのフローは6クリックで、うち2つは任意です。括弧内の数字は初回利用者の現実的な実時間(秒)です。
- サンドボックスを開く(5秒)。未登録なら無料で登録——メールまたはウォレット、KYC・カード不要。ダッシュボードのサイドバーからSandboxをクリック。
- マーケットを選択(10秒)。取引所(Hyperliquid / Binance / Bybit / OKX / Decibel / AsterDex / GRVT / Extended / StandX)、シンボル(例:BTC/USDC:USDC)、タイムフレーム(1m / 5m / 15m / 30m / 1h / 4h)。
- 期間を選択(5秒)。デフォルトは直近30日。日付ピッカーをクリックして延長可能——対応ペアごとに最大3年分のヒストリカルをカバーします。
- 戦略を設定(20秒)。プリセット(RSI / Custom / DCA / Grid / SMC / AIトレーディングエージェント)を選ぶか、インジケーターパラメータを手動で設定。サンドボックスUIは本番ボットのウィザードと完全にミラーされており——本番ボットを設定できればバックテストも設定できます。
- Runをクリック(15〜90秒)。ほとんどのバックテストは10〜30秒で完了。長期間の5分足ランは初回最大90秒(以降の実行はキャッシュされます)。
- 結果を読む(次の10分——後述)。
結果を誠実に読み解く方法
重要な指標は6つ。最初の3つは見せかけ、次の3つが現実。6つすべてを見てください——1つだけで判断してはいけません。
勝率(Win rate)
プロフィットファクター(Profit factor)
最大ドローダウン(Max drawdown)
シャープレシオ(Sharpe ratio)
エクイティカーブ
トレードログ
バックテストの5大落とし穴(とサンドボックスの対処法)
1. 単一局面へのオーバーフィット
RSIの下限を35→32→28と調整し、エクイティカーブが見栄えするまで弄る。おめでとう——あなたは「その特定の価格履歴で機能したパラメータ値」を発見しました。別のレンジで再実行すれば、利益は霧散します。対処法:同じパラメータを必ず重複しない2つ以上のレンジ(例:2023〜2024年と2024〜2025年)でテストする。サンドボックスならこれが超簡単——設定を複製し、期間だけ変更して比較するだけ。指標が崩壊するならオーバーフィット確定です。
2. 手数料の存在を無視する
1日30回、約定ごとに0.1%を払うスキャルピング戦略は、手数料だけで1日6%を溶かします。サンドボックスは取引所ごとの実テイカーレート(Hyperliquid 0.045%、Binance 0.05%、Bybit 0.055%など)を全約定に適用。高頻度戦略をテストしているのに結果が手数料を反映していないなら、目の前の数字はフィクションです。サンドボックスのプロフィットファクターと純PnLは手数料控除後。確認方法:トレードログを見て、各エントリー/エグジットに手数料が小さく差し引かれているか確認。
3. 即時約定を前提にする
本番では、注文は希望価格ちょうどでは約定しません——スリッページが発生し、サイズが大きいほど、ペアが薄いほど顕著です。素朴なバックテストは次バーの始値で約定させますが、これは楽観的すぎる。サンドボックスは保守的な約定モデルを採用:成行注文はバー始値+設定可能なスリッページ許容値(デフォルト0.05%)で約定、テイクプロフィットはバーの高値がTPに触れた時点(または終値、「touch vs close」トグル次第)で約定、ストップロスはイントラバーでトリガーされた時点でSL価格で約定。確認方法:スリッページ許容値を厳しくして再実行——結果が崩壊するなら、その戦略は完璧な約定に依存しています。
4. 先読みバイアス(Look-ahead bias)
これは厄介です。同じバーにエントリーするかを判定するのに現在バーの終値を使ったら——それはチート。リアルタイムでは、判断時点でそのバーはまだ閉じていません。サンドボックスは因果律を強制:バーNではエンジンはバー0〜N-1のOHLCVのみを参照します。バーNの始値で使われるインジケーター値は、前のN-1本のバーから計算されます。「現在バー終値」を読みたい戦略を記述した場合、サンドボックスは前バー終値を代替値として使います。確認方法:「このバーで価格がEMAを回復」と書いた戦略は、「前バーでEMAを回復」に書き換えるべきです。
5. 局面変化への盲目
仮想通貨のトレンドは局面ごとに表情が違います——蓄積、マークアップ、分配、マークダウン。マークアップ期で印刷機のように稼ぐ戦略が、分配期では出血します。デフォルトの3年サンドボックス窓は、意味のあるドローダウンを含む少なくとも1サイクル全体をカバーしますが、レンジを明示的に区切って各サブ期間を確認すべきです。確認方法:同じ設定を2023年、2024年、2025年で3回ずつ実行し、各年の指標を独立して確認。2024年が全体の結果を担っているなら、それは「2024年の再来」に賭けていることになります。
fomoedのサンドボックスはどう「誠実」を保つか
サンドボックスエンジンは本番ボットとまったく同じPythonコードを実行します——並行実装ではありません。インジケーター演算、シグナル評価、ポジションサイジング、手数料控除、TP/SL約定ルール、トレーリングストップの追跡:すべてシングルソースオブトゥルース。バックテスト済み戦略を本番ボットに昇格させるとき、変わるのはエンジンが読むキャンドルストリームだけ——ヒストリカルparquetかライブ取引所のWSか——それ以外のロジックは1バイトも違いません。
これが重要な理由は、市販のバックテストツールの多くが、最終的に運用に乗せるライブ実行プラットフォームとは別のコードパスだからです。「ほぼ同じ」ロジックを微妙に異なる前提でシミュレートし——本番約定が入った瞬間、その差分が静かにエッジを食いつぶします。サンドボックスはこのギャップを構造的に排除しています。
またエンジンは結果スキーマをオープンに公開:指標(勝率、プロフィットファクター、最大DD、シャープ、グロス/ネットPnL、平均勝ち/負け、平均保有時間)、エグジット理由付きの全トレードログ、時系列としてのエクイティカーブ。すべてを「見栄え最適化」した単一スコアに集約する隠しフィールドは一切なし——すべての指標はトレードログから独立検証可能です。
よくある質問
バックテストにはどれくらい時間がかかりますか?
1年未満のレンジなら、ほとんどのバックテストは10〜30秒で完了。複数年レンジの5分足長期バックテストは初回最大90秒——その後はOHLCVキャッシュがヒットし、再実行は5〜10倍高速になります。
ヒストリカルデータはどれくらいありますか?
対応ペアごとに3年分のOHLCV、6つのタイムフレーム(1m、5m、15m、30m、1h、4h)で提供。キャッシュはcronで毎晩リフレッシュ。新規上場ペアや履歴の薄いペアをバックテストする場合、初回実行時にCCXTライブからギャップを埋め、以降のために自動キャッシュします。
結果は決定論的ですか?
はい——同じ設定+同じ期間=同じ結果。エンジンに隠れたランダム性はなく、スリッページもキャンドルのOHLCに対して決定論的に適用されます。つまり、2つの設定を同じレンジで実行すれば、リンゴ対リンゴで比較可能です。
トレードログをエクスポートできますか?
はい——すべてのバックテスト結果に、個別トレード(エントリー/エグジット時刻と価格、ポジションサイズ、手数料、損益、エグジット理由)を含むダウンロード可能なCSVが付属します。スプレッドシートやpandasノートブックで独自分析したい場合に有用。
バックテストは資金調達率(ファンディングレート)をモデル化しますか?
無期限契約については、はい——エンジンは、ポジション保有中の各ファンディング窓で実現8時間ファンディングレートを適用します。ファンディングレートは可能な限り取引所のヒストリカルデータから取得;取得できないまれなケースでは、保守的にゼロファンディングを仮定します。
テイクプロフィットの「touch」と「close」の違いは?
Touchは、バーの高値がイントラバーでTP価格に達した瞬間にTPが約定。Closeは、バーがTPの価格以上で終値をつけた場合にのみ約定します。Touchはより楽観的(速い動きでの成行注文の挙動に対応)、Closeはより保守的(指値注文の挙動、またはイントラバーの流動性が薄い場合に対応)。サンドボックスではTPごとに選択可能です。
勝率90%のバックテストは信用していい?
ダメ。勝率単体は、最大化すべき指標であることはまずありません——プロフィットファクター、最大DD、エクイティカーブとセットで判断してください。勝率90%でプロフィットファクター0.7なら「小さく勝って大きく負ける」状態——ゆっくり破産します。勝率45%でプロフィットファクター2.5なら「負けより大きく勝つ」状態——通常こちらが優れた戦略です。


