データというものは正直なようで、意外と気まぐれだ。特にゴールドの価格チャートを見ていると、ある日だけスッと空白ができていることがある。まるでその日だけ歴史から抜け落ちたみたいに。

金価格APIを扱ったことがあるなら、一度は目にしたことがあるはずだ。順調に流れていた時系列が、祝日前後で突然途切れる現象。バグのようにも見えるし、仕様のようにも見える、あの微妙なやつ。

なぜデータの欠損が起きるのか

多くの場合、これは単なるエラーではない。

金市場は暗号資産のように24時間連続で動いているわけではなく、取引時間や基準価格の仕組みに強く依存している。市場が休場すれば、その日の「約定価格」そのものが存在しない。

つまり、取引がなければローソク足も存在しない。

一部のゴールド価格APIは非取引日をそのままスキップするため、時系列上に“穴”が生まれる。

また、日次のフィックス価格だけを扱う仕組みでは、祝日は単純にデータが生成されない。

さらに、履歴データを整形する過程で、あえて非取引日を削除してしまうケースもある。見た目は綺麗になるが、少し誤解を生みやすい。

「祝日ローソク足」という言葉の誤解

この表現はそれっぽいが、実態は少し違う。

多くの場合、それは“存在しないローソク足”を指しているだけだ。

市場が動いていない以上、価格も変動もない。にもかかわらず、システムだけが「毎日データがあるはず」と期待してしまう。

特に金のようなグローバル商品では、休場日は完全な空白になる。

データ欠損が引き起こす問題

最初は単なるチャートの隙間に見える。しかし影響は徐々に広がる。

移動平均は歪み、ボラティリティ計算も不安定になる。バックテストの結果も微妙にズレてくる。

さらに厄介なのは、他資産との比較だ。株式データは補完されているのに、金データは欠損していると、時間軸が揃わなくなる。

最初は違和感程度でも、最終的には分析全体の信頼性に影響する。

よくある対処法とその限界

一般的にはいくつかの方法が試される。

直前の価格をそのまま埋めるフォワードフィル。見た目は滑らかになるが、実際の市場とは乖離する。

ゼロ埋めはさらに極端で、価格が暴落したように見えてしまう。

また、祝日カレンダーを使って人工的にローソク足を生成する方法もあるが、これはあくまで仮定のデータだ。

どれも一時的な解決にはなるが、本質的な解決ではない。

本質的な考え方:欠損を受け入れる

重要なのは、欠損を“異常”と見なさないことだ。

それはエラーではなく、市場構造の一部である。

時間を日付ではなく「取引セッション」として扱うことで、問題はかなり整理される。

休場区間を明示する
架空データで補完しない
指標は取引単位で計算する

こうした設計の方が長期的には安定する。

データ提供元による違い

ゴールド価格APIは提供元によって設計思想がかなり異なる。

データを平滑化するものもあれば、欠損をそのまま残すものもある。その中間のようなものも存在する。

その違いだけで、同じ戦略でも結果が変わることは珍しくない。

実務の中では、AllTick APIのように履歴構造の一貫性を重視し、非取引期間を明示的に扱う設計の方が扱いやすい場面もある。

実装上の基本方針

安定したシステムではまず取引カレンダーを基準にする。

生データと分析用データを分離し、時間軸を無理に補完しない。

指標計算は自然日ではなく取引セッションベースにする。

シンプルだが、これが一番崩れにくい。

まとめに代えて

祝日によるローソク足の欠損は、問題というより市場の自然な姿だ。

データは常に連続しているわけではない。その背後には人間の制度や時間の区切りがある。

難しいのは欠損を埋めることではなく、それを前提にしても壊れない仕組みを作ることだ。