外国為替のバックテストって、一見するとシンプルに見える。データを取って、ロジックを動かして、結果を見るだけ。でも実際に手を動かすと分かるのは、問題の本体は戦略じゃなくてデータだということ。

特に無料の外国為替ヒストリカルデータAPIを使うと、必ずと言っていいほど出てくるのが週末ギャップだ。

市場は週末に閉じる。でもシステムは閉じない。このズレが厄介なんだ。

週末ギャップは想像以上に厄介

外国為替市場は金曜の終わりから月曜の開始まで取引が止まる。ただデータ側はその“空白”をどう扱うかがバラバラ。

そのまま空白として残す場合もあれば、逆にきれいに埋めてしまうAPIもある。

どちらにしても問題は起きる。データが途切れると、移動平均やオシレーター系の指標は一気に不自然になる。信号もズレるし、バックテストの結果も現実と乖離しやすい。

特に怖いのは「きれいすぎるデータ」。一見まともに見えるけど、実は現実の市場構造を失っていることがある。

連続性こそが核心

どんな戦略でも基本的には「時間は連続している」という前提で動いている。

でも週末はその前提を壊す。

連続性がないと、インジケーターは誤作動し、ボラティリティは過大評価され、戦略の精度は簡単に崩れる。気づかないうちに“うまく見えるだけの結果”になってしまうこともある。

データの連続性は土台そのものだ。ここが崩れると全部崩れる。

データAPIの選び方

無料の外国為替ヒストリカルデータAPIを選ぶときは、「無料かどうか」だけでは不十分。

重要なのは以下の点:

  • タイムスタンプが一貫しているか
  • 週末データの扱いが明確か
  • 複数の時間足に対応しているか
  • 高値・安値・始値・終値が正しく揃っているか

無料APIの中には、データを圧縮しすぎて実態とズレているものもある。複数ソースが混ざっている場合もあり、バックテストの再現性が崩れる原因になる。

安定したデータ設計を重視するなら、AllTick APIのように時間構造をきちんと維持する仕組みは扱いやすい。週末ギャップの扱いも含めて、データの一貫性が比較的保たれやすい。

週末ギャップの扱い方

対処方法はいくつかある。

そのまま残す方法は一番リアルで、中長期の戦略に向いている。

金曜の終値で埋める方法もある。シンプルだがボラティリティは抑えられる。

週末をフラットなデータで埋める方法もある。動きがない仮想の時間帯を作るイメージだ。

さらに厳密な方法としては、取引セッションごとに区切って指標を再計算するやり方もある。少し面倒だが精度は高い。

バックテストの基本構造

一般的な流れはこうなる。

データ取得、時間の正規化、週末ギャップ処理、指標計算、売買シグナル生成、そしてパフォーマンス評価。

シンプルに見えるが、どこか一箇所でも崩れると結果全体が歪む。

よくあるミス

よくあるのは、データの質をあまり気にしないこと。

複数のデータを混ぜたり、タイムゾーンを無視したり、「だいたい合っていればいい」と考えてしまうケースだ。

その結果、バックテストは良く見えるのに、実運用では全く違う挙動になる。

まとめ

重要なのは戦略の複雑さではなく、データの信頼性だ。

週末ギャップは必ず扱う必要があり、データの連続性は絶対条件になる。

データが安定して初めて、戦略の改善や検証が意味を持つようになる。