同じルールなのに結果が割れるのはなぜか
同じ売買ルールを同じ期間で検証しても、使うソフトとデータが違えば損益曲線は別物になります。原因の大半は手法ではなく、データの基準時刻・気配の種類・スプレッドの扱い・足内の値動き順序という四つの仕様差です。つまり最初にやるべきは指標の追加ではなく、手元のデータが何をどう記録したものかを言語化することです。
この記事では、検証用のチャートソフトと過去データを選ぶときに確認する項目を整理し、差が出た場合の切り分け手順と、データを整えても検証できない領域まで書きます。特定の製品や業者を勧めるものではなく、どのツールを使う場合でも共通する確認手順として読んでください。
過去データのどこを確認する?——7項目
データ提供元のドキュメントや、ソフトのデータ管理画面で確認できる範囲で、次の7項目を先に埋めます。埋まらない項目がある時点で、その検証結果は「条件不明」として扱うのが安全です。
| 項目 | 確認すること | 放置した場合に歪むもの |
|---|---|---|
| 1. 出所 | どの業者・どの取引所の価格か。FXの店頭取引は相対取引で、レートは業者ごとに異なる | 高値安値の数ピップス差、ブレイク判定 |
| 2. 気配の種類 | ビッド基準か、アスク基準か、中値か | 買いと売りで非対称な損益 |
| 3. 基準時刻 | サーバー時刻のGMTオフセット、夏時間の切替有無 | 日足の区切り、セッション別集計 |
| 4. 粒度 | ティックか、1分足か、日足か。ティックなら全ティックか間引きか | 足内シミュレーションの精度 |
| 5. 欠損と異常値 | 祝日・障害時の穴、ロールオーバー前後の飛び値 | ギャップ関連の統計 |
| 6. 出来高の定義 | 実出来高か、ティック更新回数か | 出来高フィルターの意味 |
| 7. 期間 | 遡れる年数と、粒度ごとの保持期間 | 相場局面の偏り |
特に3番は見落としやすい項目です。基準時刻が2時間ずれるだけで日足の形が変わり、「日足の終値がこの水準を超えたら」という条件の成否が入れ替わります。時間帯別の集計をしているなら影響はさらに直接的で、セッション別の「性格差」は信じる前に自分のデータで測り直すで触れた区切りの問題と同じ落とし穴になります。
6番も誤解が多い点です。MetaTrader系のプラットフォームが表示するFXのボリュームは、仕様上ティック更新回数(ティックボリューム)であり、取引所の出来高とは別物です。出来高を条件に組み込むなら、この違いを前提にしてください。
足の中の順序が分からない問題をどう扱う?
OHLC(始値・高値・安値・終値)の4本値だけでは、高値と安値のどちらが先に付いたかが分かりません。これは地味に見えて、検証結果を最も大きく動かす要因のひとつです。
たとえば次のような場面です。ある1時間足で、始値から見て上に利確ライン、下に損切りラインがあり、その足の高値は利確水準に、安値は損切り水準に届いていたとします。4本値ベースの検証エンジンは、どちらを先に約定扱いにするかを内部ルールで決めています。楽観側(利確優先)に倒れていれば勝率は実態より高く出ます。
対処は三つあります。
- ティックデータまたは下位足で埋める。1時間足の検証を1分足で再現すれば、順序の曖昧さは大幅に減ります
- 悲観側に固定する。同一足で両方に触れた場合は必ず損切り優先と決め、結果を下限として読む
- 該当トレードを数える。全トレードのうち何件が「同一足で両方タッチ」だったかを出し、その比率が小さければ影響は限定的と判断する
三つ目を先にやると、精度向上にどれだけコストをかけるべきかが決まります。該当が全体の数パーセントなら4本値のままでも結論は動きませんが、スキャルピング寄りのルールでは無視できない比率になりがちです。
スプレッドと執行コストはデータに写らない
過去データの多くはビッド側のOHLCだけを持っており、その瞬間のスプレッドは記録されていません。検証ソフトは「固定スプレッド◯pips」という設定で代用しますが、実際のスプレッドは時間帯とイベントで大きく変わります。アジア時間の早朝や経済指標の発表直後に広がる挙動を、平常時の値で均してしまうと、コストを一律に過小評価します。
現実的な手順は次の通りです。
- 自分のエントリーが集中する時間帯を、まず記録から特定する
- その時間帯のスプレッドを一定期間、自分の口座で実測して分布を取る
- 検証では中央値ではなく、悪い側(上位の値)を入れて回す
- 良い側と悪い側の両方で回し、結論が反転するかを見る
スプレッドだけでなく、スリッページ、約定拒否、取引手数料、スワップポイントも損益に効きます。この「表示値と実際の負担の差」については口座はスプレッドでなく実効コストで選ぶで扱った考え方をそのまま検証設定に持ち込めます。流動性が薄い日の扱いは薄商いの日は値幅でなく執行コストを見るも合わせて読んでください。
株式・先物を検証するときの追加項目
株式や先物では、FXにない調整が入ります。
- 株式分割・配当の調整:調整済み株価と未調整株価では、過去のブレイク水準そのものが変わる
- 先物の限月つなぎ:期近を連結する方法(単純連結、差額調整、比率調整)によって過去の価格帯が変わり、水平線ベースのルールは成績が別物になる
- サバイバーシップバイアス:上場廃止された銘柄が除かれたデータで検証すると、生き残った銘柄だけを対象にした成績になる
データを整えても検証できないことは何か
ここまでやっても、過去データには写っていないものがあります。この線引きを持たないと、検証結果を過信します。
- 約定の可否:その価格が表示されたことと、自分の注文がその価格で通ることは別です。指標直後や週明けの窓では特に乖離します
- 自分の注文の影響:小口なら無視できますが、板の薄い銘柄では自分の発注が価格を動かします
- 規制や制度の変更:レバレッジ規制、取引時間の変更、呼値の刻みの変更は、過去の値動きの前提を変えます。金融商品取引法や各取引所の規則の改定が該当しますが、どの時点で何が変わったかは一次資料で確認してください
- 自分の行動:検証では機械的に執行されますが、実運用では見送りや早い手仕舞いが混ざります
また、データの質を上げても意味が薄い場面があります。保有期間が数日以上のスイング型で、利幅が平均スプレッドの数十倍あるルールなら、ティック精度や1pipsの差は結論を変えません。逆に、保有時間が数分で利幅が数pipsのルールは、データ仕様の差だけで黒字と赤字がひっくり返ります。かけるべき精度は、自分のルールの利幅とコストの比率で決まります。
差が出たときの切り分け手順
検証環境を二つ以上持つ価値は、ここにあります。
- 同一期間・同一ルール・同一パラメータを、別ソースのデータで回す
- 総損益ではなく、トレード件数を先に比べる。件数が違えばエントリー判定が違っており、原因は時刻か気配か欠損
- 件数が同じで損益だけ違うなら、原因はコスト設定か約定ルール
- どちらのソースでも結論(採用するかどうか)が同じなら先へ進む。片方だけで成立するなら、その優位性はデータ仕様の揺らぎに埋もれる水準だと判断する
この「定義を先に決めてから数える」という姿勢は、「窓埋め率」は定義で変わる — 数える前に決めておく6つの前提と同じ構造です。集計対象の定義が曖昧なまま出した数字は、他人どころか半年後の自分とも共有できません。
まとめ
チャートソフトの選定で比較すべきは、描画機能の多さより次の点です。使うデータの仕様(出所・気配・基準時刻・粒度)を自分で確認できるか、スプレッドやスリッページを可変で設定できるか、足内の約定順序の扱いを明示しているか、検証条件と結果をエクスポートして保存できるか。これらが開示されていないツールは、結果の再現も他環境との突き合わせもできません。
そして、データを完璧に整えても、約定可否・制度変更・自分の裁量は検証に写りません。過去データで確認できるのは「このルールが過去のこの価格系列に対してどう振る舞ったか」までで、将来の損益を保証するものではありません。検証はリスクを消す道具ではなく、どこで壊れるかを事前に知る道具として使ってください。最終的な売買判断と損失は自分で負うことになります。
この記事は、AI で下書きを作り、益山康秀(運営者)が内容を確認して公開しています
この記事は情報の提供を目的としたもので、特定の金融商品の売買をすすめるものではありません。売買の判断は、ご自身の責任で行ってください。(運営者情報)