開発ログ

前日23時特徴量スナップショットのPIT・系譜・リーケージを検証する

30秒でわかる概要

過去検証で本来その時点では知ることができなかった情報が混ざると、モデルが実際より強く見える可能性があります。

そこで今回、特徴量として使える情報を**レース前日23:00までに利用可能だったもの**へ限定し、結果・払戻や時点不明データを予測前特徴量から除外するPoint-in-Time / Lineage / Leakageゲートを実装しました。

6件の確認対象を実際に確認し、6件すべてを判定。未解決は0件でした。

何を防ぐ仕組みなのか

データベースに値が存在していても、その値が予測時点で利用可能だったとは限りません。

レース後に確定した結果や払戻、前日23:00より後に利用可能になった値を過去検証へ混ぜると、実戦では再現できない情報を使った評価になります。

今回のゲートは、値の存在ではなく**利用可能時点**を基準に判定します。

今回固定したルール

今回の正式成果では、次の条件を後続工程から同じEvidence基準で参照できるようにしました。

  • 前日23:00のカットオフを実装・テストする
  • 特徴量値には利用可能時点のLineageを要求する
  • Lineageを確認できない場合はFail Closedとする
  • 結果・払戻の領域を予測前特徴量から除外する
  • 前日23:00より後に利用可能になった値を拒否する
  • 元データは読み取り専用で扱い、変更しない

Before / After

Before

予測時点の安全条件が、後続工程から同じ根拠で参照できる正式成果物として固定されていませんでした。

After

Task Evidenceと正式成果物を根拠に、前日23:00・Lineage・Leakageの条件を後続工程から同じ基準で参照できる状態になりました。

検証

Task Substance Evidenceでは、6件を確認し6件すべてを判定、未解決0件です。

Task Substance Status、Coverage、Unresolved、Evidence Referencesも正式Gateを通過しています。

これにより、「値があるから使う」のではなく、「予測時点で利用可能だったと確認できるものだけを使う」という判断基準を固定できました。

安全境界

この工程では、Evidenceに存在しない性能・収益・精度は主張しません。

また、公開内容はTask Evidenceで確認できた範囲に限定しています。

今回保証したのは、特徴量研究の時点整合性とリーク防止の条件であり、モデル性能の向上そのものではありません。

現在の意味

今後、特徴量を追加して性能を比較するときに、その改善が未来情報の混入による見かけ上のものではないかを切り分けやすくなります。

特徴量研究の前提となる「当時見えていた世界だけで評価する」基準を、正式に後続工程へ引き渡せる状態です。

次の工程

次はFeature Storeのバージョン管理、キャッシュ、途中再開、スキーマ変更への対応へ進みます。

正しい時点情報だけを使う条件を守りながら、特徴量を継続的に作成・比較・再利用できる基盤へ進めます。

全体ロードマップを見る →

← 開発ログへ戻る

掲載内容は、その時点の開発・検証記録です。将来の利益や的中を保証するものではありません。