TradingView Backtest & Robustness Lab

バックテストにスプレッド・手数料・スリッページを反映する方法|コスト感度とストレステスト

バックテストに手数料・スリッページを反映する方法 | SG Group

Backtest Learning ・ BT09

バックテストにスプレッド・手数料・スリッページを反映する方法|コスト感度とストレステスト

理想約定のグロス成績は、実際の手数料・スプレッド・スリッページ・保有コストを差し引くと大きく目減りします。取引回数が多い戦略ほどこの摩擦は累積します。本記事では、コストを一貫した単位で反映してネット成績を出し、感度分析とストレスグリッドで結論の頑健さを確かめる手順を解説します。

  • 最低限入れるべき手数料・スプレッド・スリッページの分類と単位
  • 片道と往復、1約定と1取引を取り違えず二重計上を防ぐ考え方
  • グロスとネットのエクイティ曲線の差と、コストドラッグの累積
  • コスト感度分析と2次元ストレスグリッドで頑健さを確かめる方法
読了目安 約13分 更新日 2026年7月13日 短期売買・FX/CFD・先物・暗号資産向け

この記事の要点

  • 戦略はグロス損益ではなく、少なくとも手数料・スプレッド・スリッページを一貫した単位で差し引いたネット損益で比較する。
  • コストは片道と往復、1約定と1取引を区別して入れ、二重計上や過小計上を避ける。
  • 取引回数が増えるほどコストドラッグは累積し、グロスとネットのエクイティ曲線の差は広がる。
  • 基準・1.25倍・1.5倍・2倍のコスト感度分析で、どこで損益分岐を割るかを確認する。
  • スリッページ×手数料などの2次元ストレスグリッドで、結論が一点の前提に依存していないかを見る。
目次

この記事では、TradingViewなどで得たストラテジーの理想約定成績を、手数料・スプレッド・スリッページ・保有コストを反映した現実的なネット成績へ近づける手順を解説します。まず結論を述べ、続いてコストの分類、片道と往復の区別、TradingViewの設定の考え方、スプレッドのモデル化、グロスとネットの比較、感度分析、ストレスグリッド、そして手元の数字を試せる概算ツールの順に進みます。バックテスト全体の流れから確認したい場合は、まずTradingViewバックテストの全体像を押さえておくと、本記事の位置づけが分かりやすくなります。

30秒でわかる結論

結論はシンプルです。戦略はグロス(理想約定)損益ではなく、ネット(コスト差引後)損益で比較すること。最低限、手数料・bid/askスプレッド・スリッページの3つを、すべて同じ単位でひとつずつ差し引きます。取引回数が多い戦略では、1取引あたりの小さなコストが積み重なり、期待値を静かに押し下げます。グロスでは魅力的に見えた曲線が、ネットでは平坦、あるいは右肩下がりに変わることも珍しくありません。

本記事では一貫して、1取引あたりグロス平均損益が5.0コスト単位、往復の想定コスト合計が3.0コスト単位という架空の教育用データを使います。ここでの「コスト単位」は口座通貨換算の相対値で、実際の金額・pips・%のいずれでもかまいませんが、入力全体で単位をそろえることが前提です。この例では1取引のネット期待値は5.0−3.0=2.0単位。取引回数が増えるほど、この差引後の値が効いてきます。期待値やプロフィットファクターの読み方はバックテスト結果の見方で詳しく扱っています。

用語メモ:グロスは手数料などを差し引く前の理想的な損益、ネットはそれらを差し引いた後の損益です。本記事の数値はすべて説明用の架空の教育用データであり、実在の成績や推奨値ではありません。

取引コストの分類:何を差し引くか

コストは性質ごとに分けて管理すると、二重計上や漏れを防げます。分析目的によって、どこまで含めるかを決めます。

  • 手数料(コミッション):ブローカーへ支払う明示的な費用。1約定あたり、取引金額の比率、1枚あたりなど単位が分かれます。
  • bid/askスプレッド:売値と買値の差。成行で入るたびに構造的に発生する既知のコストで、銘柄と時間帯で変動します。
  • スリッページ:想定価格と実際の約定価格のずれ。板の薄さ・急変・約定サイズで拡大する不確実なコストです。
  • スワップ/資金調達:ポジションを持ち越すと発生するコスト。FX・CFDのスワップ、先物のロール、暗号資産の資金調達率などが該当します。
  • 借株料:空売り時に株を借りる費用。銘柄の需給で変動します。
  • :制度と個人の状況に依存します。本記事は税務助言を行わないため、別枠で管理してください。

下の表は、この分類を発生タイミングと見積もりやすさで整理したものです。最低限の3つ(手数料・スプレッド・スリッページ)はほぼ毎回発生するため、まずこれらを反映します。

表1:取引コストの分類(架空の教育用データに基づく概念整理)
コスト種別発生タイミング見積もりやすさ最低限に含めるか
手数料約定ごと高い(仕様が明示)含める
スプレッド約定ごと中〜高含める
スリッページ約定ごと低い(分布で扱う)含める
スワップ/資金調達保有中保有型は含める
借株料空売り保有中該当時のみ
実現時など制度依存別枠管理
1取引あたりのコスト構成ウォーターフォール グロス平均損益5.0コスト単位から、往復手数料0.8、スプレッド1.2、スリッページ0.6、スワップ0.4を順に差し引き、ネット2.0コスト単位に到達する構成。数値は架空の教育用データ。 1取引あたりのコスト構成(架空の教育用データ・コスト単位) 5 3 0 グロス 平均 5.0 −手数料 0.8 −スプレッド 1.2 −スリッページ 0.6 −スワップ 0.4 ネット 2.0
図1:1取引あたりのコスト構成ウォーターフォール。グロス平均5.0単位から往復手数料0.8・スプレッド1.2・スリッページ0.6・スワップ0.4を順に差し引き、ネット2.0単位に到達します。色に加えて各段の数値ラベルで内訳を示しています。数値はすべて架空の教育用データです。

片道と往復、単位の取り違えを防ぐ

コスト反映で最も事故が多いのが単位の取り違えです。1回の取引は新規約定と決済約定の2回に分かれるため、コストも原則往復(ラウンドトリップ)で考えます。片道の値を往復として使えば過小計上、往復の値を各約定にも重ねれば二重計上になります。

  • 片道/往復:手数料が1約定あたりなら、1取引では2回分(往復)が乗る。本記事の例では片道手数料0.4×2=往復0.8単位。
  • 1注文/1約定/1枚:1注文が複数約定に分割されると、約定ごとに課金される費用は回数分だけ増える。枚数(数量)比例の費用はサイズに連動する。
  • 取引金額の%:比率型の手数料はポジション金額に比例する。固定額型と混ぜず、どちらの単位かを明示する。

スプレッドも同様です。往復で1.2単位という見積もりを、入口と出口の両方に0.6単位ずつ割り当てるのは一貫していますが、往復1.2をさらに各約定に1.2ずつ乗せると二重計上です。決済のタイミングやエントリー効率と合わせて確認したい場合は、MFE・MAEと決済効率の可視化も参考になります。

片道コストと往復コストのフロー エントリー約定と決済約定でそれぞれ片道の手数料・スプレッド・スリッページが発生し、合算して往復コストになる流れ。数値は架空の教育用データ。 片道×2=往復コスト(架空の教育用データ・コスト単位) エントリー約定(片道) 手数料 0.4 スプレッド 0.6 スリッページ 0.3 小計 1.3 決済約定(片道) 手数料 0.4 スプレッド 0.6 スリッページ 0.3 小計 1.3 往復コスト 手数料 0.8 スプレッド 1.2 スリッページ 0.6 合計 2.6 ※スワップ0.4は保有中に別途発生し、往復2.6と合わせて1取引3.0単位
図2:片道コストのフロー。エントリーと決済でそれぞれ片道1.3単位が発生し、往復で手数料0.8・スプレッド1.2・スリッページ0.6の合計2.6単位になります。保有中のスワップ0.4を加えると1取引3.0単位です。数値は架空の教育用データで、実際の手数料はブローカー仕様を確認してください。

TradingViewのcommissionとslippage

TradingViewでコストを反映する場所は主に2つです。1つはストラテジーのプロパティ画面にあるコミッションとスリッページの設定、もう1つはPine Scriptのstrategy()関数の引数です。プロパティ画面で入力した値は、その場でバックテスト結果に反映されます。スクリプト側で指定すると、公開・共有した際も前提が固定されます。

コミッション(手数料)の単位

コミッションは、金額・比率・1約定あたりといった単位から選ぶのが一般的です。ここで重要なのは、選んだ単位が片道か往復かを理解することです。多くの場合、設定値は約定単位で課金されるため、1取引では新規と決済の2回分が乗ります。前掲の往復0.8単位という数字は、片道0.4を約定ごとに課した結果です。

スリッページの単位

スリッページはティック単位で加えるのが一般的です。成行の想定約定価格を、設定したティック数だけ不利な方向へずらして計算します。実際のスリッページは局面で変わるため、単一の固定値だけでなく、後述の感度分析で幅を持たせて確認します。

再確認のお願い:TradingViewの設定画面の名称、選べる単位、既定値は変更される場合があります。設定前にStrategy Properties(公式)Pine Scriptの宣言文(公式)で最新の項目名と単位を確認してください。当社はTradingViewとの提携・公認関係を主張するものではありません。

スプレッドのモデル化

スプレッドは既知のコストですが、常に一定ではありません。どこまで精緻にモデル化するかは戦略の性質で決めます。万能な単一設定は存在しないため、複数モデルで結論が揺れないかを見ます。

  • 固定スプレッド:全期間で一定値を使う最も単純な近似。流動性が高く取引時間が限定的なら扱いやすい一方、急変時や薄い時間帯を含むと実態と乖離します。
  • 時間帯別スプレッド:セッション(東京・ロンドン・ニューヨークなど)や寄り引けでスプレッドを変える。時間帯をまたぐ戦略で精度が上がります。
  • ボラティリティ連動:ボラティリティ指標に応じてスプレッドを広げる。指標発表時や急変局面を含む戦略で、コストの過小評価を防ぎます。

実務では、まず固定スプレッドでネット成績の当たりを付け、結果が薄利なら時間帯別やボラティリティ連動へ精緻化して、結論が変わらないかを確かめます。相場局面ごとの挙動を外部視点で把握したい場合は、マクロリサーチワークベンチのような環境認識のツールも補助になります。

グロスとネットのエクイティ曲線

コストの影響は、1取引あたりでは小さく見えても、取引回数だけ積み上がると無視できません。ここでは前掲の設定(グロス平均5.0/往復・保有合計コスト3.0単位)で400取引を行った架空の教育用データを使い、グロスとネットのエクイティ曲線を比べます。

グロスの累積損益は400×5.0=2000単位、往復・保有コストの累積は400×3.0=1200単位、ネットは差し引き800単位です。指数化すると、グロスは開始100から180へ、ネットは100から132へ。両者の差は取引を重ねるほど開いていきます。これがコストドラッグで、取引回数が多い高頻度の戦略ほど傾きの差が効いてきます。

グロスとネットのエクイティ曲線比較 400取引にわたるエクイティ指数。グロスは開始100から180へ、ネットは100から132へ上昇し、取引を重ねるほど差が広がる。数値は架空の教育用データ。 グロス対ネットのエクイティ(架空の教育用データ・指数100基準) 180 130 100 0 200取引 400取引 コスト差 180 132 グロス(理想約定) ネット(コスト差引後)
図3:グロスとネットのエクイティ曲線。実線のグロスは指数180へ、破線のネットは132へ到達し、右端の赤い縦線がコストによる差を示します。線種とラベルで両者を区別しています。数値は架空の教育用データで、将来の成績を示すものではありません。

差引後の傾きが平坦に近い戦略は、コストのわずかな上振れで期待値が沈みます。ドローダウンの深さや回復期間への影響もあわせて見るなら、最大ドローダウンの見方を参照してください。

コスト感度分析:基準から2倍まで

実際のコストは日々変動し、平均だけでは捉えきれません。そこで、基準コストを置き、段階的に引き上げてどこでネット成績が崩れるかを観察します。段数に普遍的な正解はありませんが、基準・1.25倍・1.5倍・2倍のように刻むと、損益分岐を割る境目が見えやすくなります。

下表は、グロス総利益5000/グロス総損失3000(グロスPF=1.67)の架空の教育用データに、往復・保有コスト(基準3.0単位×400取引=1200単位)を倍率別に上乗せした例です。コストは損失側に加算する簡易な扱いにしています。

表2:コスト感度シナリオ(架空の教育用データ・400取引・グロス純益2000単位)
シナリオコスト倍率1取引コスト累積コストネット純益ネット期待値/取引ネットPF状態
基準1.00×3.012008002.01.19余裕あり
やや悪化1.25×3.7515005001.251.11余裕あり
悪化1.50×4.518002000.51.04分岐点近い
大幅悪化2.00×6.02400-400-1.00.93分岐点割れ

この例では、コストが基準の2倍になるとネット純益が−400単位、ネットPFが0.93へ沈み、期待値が負に転じます。1.5倍の時点で純益は200単位まで細り、分岐点が近いことが分かります。基準だけを見て「余裕あり」と判断せず、現実的に起こり得る倍率まで引き上げて確認することが重要です。倍率や刻みは、対象銘柄の実測とブローカー仕様から決めます。

多次元ストレスグリッド

コストは1軸だけ動くとは限りません。スリッページと手数料が同時に悪化する、スプレッド拡大と約定悪化が重なる、といった複合的なストレスを見るには、2軸のグリッドが有効です。下は、手数料倍率(横)とスリッページ倍率(縦)を組み合わせ、ネット純益(単位)を色と数値で示した架空の教育用データのヒートマップです。スプレッド1.2とスワップ0.4は固定しています。

図4:スリッページ×手数料の2次元ストレスグリッド。セルは400取引のネット純益(単位)で、色(緑=高い/青=中間/琥珀=低い)に加えて数値も併記しています。左上(各1.0倍)の800から右下(手数料1.5倍・スリッページ2.0倍)の400まで、複合悪化で純益が段階的に細ります。数値は架空の教育用データです。

このグリッドの範囲ではネット純益はいずれも正のままですが、手数料2.0倍のような、より強いストレスまで広げると表2のとおり分岐点を割ります。グリッドは「どの組み合わせで、どの程度細るか」を面で捉えるための道具で、単一の楽観シナリオに結論が依存していないかを確認できます。ウォークフォワードで局面ごとの劣化を見る手法と組み合わせると、時間軸とコスト軸の両面から頑健さを検証できます。設計はウォークフォワード分析とOOS検証を参照してください。複数戦略を束ねた場合のコスト影響は複数戦略ポートフォリオのバックテストで扱います。

このヒートマップはブラウザ内の静的な例示です。ラボのProではコスト仮定の感度やコスト分解、Premiumでは複数軸を同時に振るストレスグリッドや一括レポートといった、より広い検証のユースケースを扱います。機能と範囲はプランページでご確認ください。

コスト概算ツールで試す

取引回数・1取引あたりグロス平均損益・片道手数料・往復スプレッド相当・スリッページ相当を入れると、総コスト・ネット期待値・損益分岐コストを概算します。入力値はブラウザ内だけで計算し、外部へ送信しません。すべて同じ単位(金額、pips相当、%のいずれか)でそろえて入力してください。JavaScriptが無効な場合は、直下の静的な計算例をご覧ください。

静的な計算例(JavaScript無効時):取引回数400・グロス平均5.0・片道手数料0.4・往復スプレッド相当1.2・スリッページ相当0.6のとき、往復手数料は0.4×2=0.8、1取引あたりの総コスト(手数料+スプレッド+スリッページ)は0.8+1.2+0.6=2.6単位。総コストは400×2.6=1040単位、ネット期待値は5.0−2.6=2.4単位/取引、ネット総損益は400×2.4=960単位です。損益分岐コスト(ネットが0になる1取引コスト)はグロス平均に等しい5.0単位で、現状の2.6単位はその約52%。保有型ならスワップ0.4を別途加えます。

取引コスト概算ツール

評価期間の総取引数
コスト差引前の平均(単位を統一)
1約定あたり。往復は自動で×2
1取引(往復)分のスプレッド
1取引分の想定ずれ

上の値で「概算する」を押すと、総コスト・ネット期待値・損益分岐コストが表示されます。

この概算は考え方のイメージ用で、成績や利益を保証するものではありません。単位を混在させると結果が意味を失うため、金額・pips相当・%のいずれかに統一してください。スワップ・借株・税は目的に応じて別途加えます。

実務チェックリスト

  • グロスではなくネット損益で戦略を比較しているか。手数料・スプレッド・スリッページの3つを最低限入れたか。
  • 片道と往復、1約定と1取引、金額と比率の単位を取り違えず、二重計上・過小計上を避けたか。
  • TradingViewのコミッションとスリッページの単位が片道か往復かを、公式ドキュメントで確認したか。
  • スプレッドを固定だけでなく、時間帯別やボラティリティ連動でも試し、結論が揺れないか確かめたか。
  • 保有型の戦略でスワップ・資金調達・借株を含めたか。税は別枠で管理しているか。
  • 基準・1.25倍・1.5倍・2倍のコスト感度で、どの倍率で損益分岐を割るかを把握したか。
  • スリッページ×手数料などの2次元グリッドで、複合悪化への頑健さを面で確認したか。
  • 比較する戦略どうしで、含めたコストと単位の前提をそろえたか。

よくある質問

バックテストに最低限入れるコストは何ですか?
最低限は、手数料・bid/askスプレッド・スリッページの3つです。この3つはほぼすべての約定で発生し、取引回数が多い戦略ほどグロス損益を大きく削ります。まずこの3つを一貫した単位で差し引いてネット損益を出し、必要に応じてスワップ・資金調達・借株・税を分析目的に合わせて追加します。どれを含めたかは記録し、比較する戦略どうしで前提をそろえます。
スプレッドとスリッページは同じですか?
同じではありません。スプレッドはbid(売値)とask(買値)の差で、成行で入るたびに構造的に発生する既知のコストです。スリッページは、想定した価格と実際の約定価格のずれで、板の薄さ・ニュース・急変時に大きくなる不確実なコストです。スプレッドは相対的に見積もりやすく、スリッページは分布として幅を持たせて扱うのが実務的です。
TradingViewで手数料はどこに設定しますか?
ストラテジーのプロパティ画面にあるコミッションとスリッページの設定、またはPine Scriptのstrategy()関数の引数で指定します。コミッションは金額・比率・1約定あたりなどの単位から選び、スリッページはティック単位で加えるのが一般的です。UIの名称や指定できる単位は変更される場合があるため、設定前にTradingViewの公式ドキュメントで最新の項目を確認してください。
手数料は片道と往復のどちらで入れますか?
1回の取引は新規約定と決済約定の2回発生するため、往復(ラウンドトリップ)で考えます。ツールが1約定あたりで手数料を課す場合、1取引では自動的に2回分が乗ります。ここで片道の値をそのまま往復コストとして扱うと二重計上や過小計上が起きるため、入力単位が片道か往復か、1約定か1取引かを毎回そろえて確認します。
固定スプレッドで十分ですか?
戦略と対象銘柄によります。流動性が高く取引時間が限定的なら固定スプレッドの近似でも大きく外れにくい一方、指標発表時や薄い時間帯、ボラティリティが高い局面を含む戦略では固定値が実態と乖離します。固定・時間帯別・ボラティリティ連動の複数モデルで結果が揺れないかを確認し、単一の万能設定として扱わないことが大切です。
スワップや資金調達コストも含めますか?
保有時間が長い戦略では含めるべきです。FX・CFDのスワップ、先物のロールオーバー、暗号資産の資金調達率、信用の借株料は、ポジションを持ち越すほど積み上がります。日をまたがないデイトレードでは影響が小さい一方、スイングやキャリー型では無視できません。税は制度依存で本記事は税務助言を行わないため、別枠で管理してください。
コスト感度分析は何段階で行いますか?
普遍的な正解の段数はありません。まず基準コストを置き、1.25倍・1.5倍・2倍のように段階的に引き上げて、ネット成績がどこで崩れるかを観察するのが分かりやすい方法です。段数より重要なのは、実際に起こり得る範囲をカバーし、どの倍率で損益分岐を割るかを把握することです。倍率や刻みはブローカー仕様と対象銘柄の実測から決めます。
コストを入れると利益がなくなる戦略は使えませんか?
一概には言えませんが、現実的なコストで期待値がゼロ付近や負に落ちる戦略は、実運用で維持しにくいと考えるのが妥当です。改善の方向は、取引回数を減らして1取引あたりの優位を厚くする、コストの小さい時間帯や銘柄へ寄せる、決済効率を上げるなどです。判断は本記事のコスト概算ツールやラボの実データで確かめ、単一の数値だけで結論づけないでください。
免責事項:本記事および当ツールは、読み込んだバックテストデータの記述的な集計・診断・可視化を提供する教育・情報コンテンツであり、投資助言、売買シグナル、将来の価格予測、利益の保証ではありません。掲載した数値・図表はすべて架空の教育用データであり、実在の成績や推奨パラメータ、推奨コスト設定を示すものではありません。バックテストの結果は将来の成績を保証せず、前提・データ・コスト・相場局面によって変化します。手数料・スプレッド・スリッページ・スワップの実値はブローカーや取引所の仕様を、税は各制度をご確認ください。最終的な判断はご自身の責任で行ってください。TradingViewのUI名称や仕様は変更される可能性があるため、公式ページで最新情報をご確認ください。当社はTradingViewとの提携・公認関係を主張するものではありません。