
外国為替のバックテストって、一見するとシンプルに見える。データを取って、ロジックを動かして、結果を見るだけ。でも実際に手を動かすと分かるのは、問題の本体は戦略じゃなくてデータだということ。
特に無料の外国為替ヒストリカルデータAPIを使うと、必ずと言っていいほど出てくるのが週末ギャップだ。
市場は週末に閉じる。でもシステムは閉じない。このズレが厄介なんだ。
週末ギャップは想像以上に厄介
外国為替市場は金曜の終わりから月曜の開始まで取引が止まる。ただデータ側はその“空白”をどう扱うかがバラバラ。
そのまま空白として残す場合もあれば、逆にきれいに埋めてしまうAPIもある。
どちらにしても問題は起きる。データが途切れると、移動平均やオシレーター系の指標は一気に不自然になる。信号もズレるし、バックテストの結果も現実と乖離しやすい。
特に怖いのは「きれいすぎるデータ」。一見まともに見えるけど、実は現実の市場構造を失っていることがある。
連続性こそが核心
どんな戦略でも基本的には「時間は連続している」という前提で動いている。
でも週末はその前提を壊す。
連続性がないと、インジケーターは誤作動し、ボラティリティは過大評価され、戦略の精度は簡単に崩れる。気づかないうちに“うまく見えるだけの結果”になってしまうこともある。
データの連続性は土台そのものだ。ここが崩れると全部崩れる。
データAPIの選び方
無料の外国為替ヒストリカルデータAPIを選ぶときは、「無料かどうか」だけでは不十分。
重要なのは以下の点:
- タイムスタンプが一貫しているか
- 週末データの扱いが明確か
- 複数の時間足に対応しているか
- 高値・安値・始値・終値が正しく揃っているか
無料APIの中には、データを圧縮しすぎて実態とズレているものもある。複数ソースが混ざっている場合もあり、バックテストの再現性が崩れる原因になる。
安定したデータ設計を重視するなら、AllTick APIのように時間構造をきちんと維持する仕組みは扱いやすい。週末ギャップの扱いも含めて、データの一貫性が比較的保たれやすい。
週末ギャップの扱い方
対処方法はいくつかある。
そのまま残す方法は一番リアルで、中長期の戦略に向いている。
金曜の終値で埋める方法もある。シンプルだがボラティリティは抑えられる。
週末をフラットなデータで埋める方法もある。動きがない仮想の時間帯を作るイメージだ。
さらに厳密な方法としては、取引セッションごとに区切って指標を再計算するやり方もある。少し面倒だが精度は高い。
バックテストの基本構造
一般的な流れはこうなる。
データ取得、時間の正規化、週末ギャップ処理、指標計算、売買シグナル生成、そしてパフォーマンス評価。
シンプルに見えるが、どこか一箇所でも崩れると結果全体が歪む。
よくあるミス
よくあるのは、データの質をあまり気にしないこと。
複数のデータを混ぜたり、タイムゾーンを無視したり、「だいたい合っていればいい」と考えてしまうケースだ。
その結果、バックテストは良く見えるのに、実運用では全く違う挙動になる。
まとめ
重要なのは戦略の複雑さではなく、データの信頼性だ。
週末ギャップは必ず扱う必要があり、データの連続性は絶対条件になる。
データが安定して初めて、戦略の改善や検証が意味を持つようになる。


