
データというものは正直なようで、意外と気まぐれだ。特にゴールドの価格チャートを見ていると、ある日だけスッと空白ができていることがある。まるでその日だけ歴史から抜け落ちたみたいに。
金価格APIを扱ったことがあるなら、一度は目にしたことがあるはずだ。順調に流れていた時系列が、祝日前後で突然途切れる現象。バグのようにも見えるし、仕様のようにも見える、あの微妙なやつ。
なぜデータの欠損が起きるのか
多くの場合、これは単なるエラーではない。
金市場は暗号資産のように24時間連続で動いているわけではなく、取引時間や基準価格の仕組みに強く依存している。市場が休場すれば、その日の「約定価格」そのものが存在しない。
つまり、取引がなければローソク足も存在しない。
一部のゴールド価格APIは非取引日をそのままスキップするため、時系列上に“穴”が生まれる。
また、日次のフィックス価格だけを扱う仕組みでは、祝日は単純にデータが生成されない。
さらに、履歴データを整形する過程で、あえて非取引日を削除してしまうケースもある。見た目は綺麗になるが、少し誤解を生みやすい。
「祝日ローソク足」という言葉の誤解
この表現はそれっぽいが、実態は少し違う。
多くの場合、それは“存在しないローソク足”を指しているだけだ。
市場が動いていない以上、価格も変動もない。にもかかわらず、システムだけが「毎日データがあるはず」と期待してしまう。
特に金のようなグローバル商品では、休場日は完全な空白になる。
データ欠損が引き起こす問題
最初は単なるチャートの隙間に見える。しかし影響は徐々に広がる。
移動平均は歪み、ボラティリティ計算も不安定になる。バックテストの結果も微妙にズレてくる。
さらに厄介なのは、他資産との比較だ。株式データは補完されているのに、金データは欠損していると、時間軸が揃わなくなる。
最初は違和感程度でも、最終的には分析全体の信頼性に影響する。
よくある対処法とその限界
一般的にはいくつかの方法が試される。
直前の価格をそのまま埋めるフォワードフィル。見た目は滑らかになるが、実際の市場とは乖離する。
ゼロ埋めはさらに極端で、価格が暴落したように見えてしまう。
また、祝日カレンダーを使って人工的にローソク足を生成する方法もあるが、これはあくまで仮定のデータだ。
どれも一時的な解決にはなるが、本質的な解決ではない。
本質的な考え方:欠損を受け入れる
重要なのは、欠損を“異常”と見なさないことだ。
それはエラーではなく、市場構造の一部である。
時間を日付ではなく「取引セッション」として扱うことで、問題はかなり整理される。
休場区間を明示する
架空データで補完しない
指標は取引単位で計算する
こうした設計の方が長期的には安定する。
データ提供元による違い
ゴールド価格APIは提供元によって設計思想がかなり異なる。
データを平滑化するものもあれば、欠損をそのまま残すものもある。その中間のようなものも存在する。
その違いだけで、同じ戦略でも結果が変わることは珍しくない。
実務の中では、AllTick APIのように履歴構造の一貫性を重視し、非取引期間を明示的に扱う設計の方が扱いやすい場面もある。
実装上の基本方針
安定したシステムではまず取引カレンダーを基準にする。
生データと分析用データを分離し、時間軸を無理に補完しない。
指標計算は自然日ではなく取引セッションベースにする。
シンプルだが、これが一番崩れにくい。
まとめに代えて
祝日によるローソク足の欠損は、問題というより市場の自然な姿だ。
データは常に連続しているわけではない。その背後には人間の制度や時間の区切りがある。
難しいのは欠損を埋めることではなく、それを前提にしても壊れない仕組みを作ることだ。


