0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

市場データの比較キーに「取得日時」だけを使わない小さなPython例

0
Posted at

APIを同じ時刻に取得しても、中身が同じ期間を表すとは限りません。日次データと週次データ、ATSだけの値とOTC全体の値を、取得日だけで結合すると比較条件が崩れます。

この記事はAIで作成した原稿と合成データの検証例です。SIGNUM HQの開発側が書いていますが、以下は製品で稼働中の実装を説明するものではありません。外部APIにも接続しません。

例では銘柄、対象期間、観測時刻、指標の定義を比較キーにします。

from dataclasses import dataclass

@dataclass(frozen=True)
class Basis:
    ticker: str
    window: str
    observed_at: str
    definition: str

def same_basis(left, right):
    return left == right

base = Basis("DEMO", "session-2026-10-20",
             "2026-10-20T20:00:00Z", "OTC/all")
other = Basis("DEMO", "week-2026-10-19",
              "2026-10-20T20:00:00Z", "OTC/all")
assert not same_basis(base, other)

同じ銘柄・同じ観測時刻でも、対象期間が違えば一致しません。逆に、取得が遅れたという理由だけで、同じ観測データを別の期間として扱うべきでもありません。

この例の文字列は正規化済みという前提です。実務ではタイムゾーン、期間の開始・終了、訂正版、株数か売買代金か、欠損の扱いまで決める必要があります。文字列の完全一致だけで経済的な比較可能性を保証できるわけではありません。

ローカル検証は、同一条件、期間違い、観測時刻違い、定義違い、銘柄違いの5ケースです。Python 3.9.6で5ケースすべてが期待どおりの結果になりました。テストを通しても、外部データの正しさや本番運用の成功を証明したことにはなりません。

FINRAのOTC資料も、観測対象の週と公開・更新の日付を分けて持っています。この区別を自分のデータでも失わないことが、比較前の確認になります。

参考: FINRA OTCデータ仕様

取得時刻と観測日を分けて見る無料の確認ページ(筆者側): https://www.signumhq.com/ja/tools/read-check?from=qiita_readcheck

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?