Skip to content

日付の扱い

kabukit では、API が返す DataFrame に Date カラムを追加します。Data カラムは、「その情報が株価に影響を与えうる日」を表現することを目的としています。

J-Quants API

J-Quants API で取得する株価情報には、Date が含まれます。これは、当然「その情報が株価に影響を与えうる日」を表現しています。

一方で、財務情報には、DisclosedDate と DisclosedTime が存在します。このため、15:30 を市場の取引時間後の閾値(スレッショルド)として Date を計算するロジックは比較的単純です。

  • この時刻までに開示された情報は、当日の株価に影響を与えうるとみなします。Date は DisclosedDate と同じ値に設定されます。
  • この時刻より後に開示された情報は、翌営業日の株価に影響を与えます。Date は DisclosedDate の翌営業日に設定されます。

EDINET API

EDINET API は、 submitDateTime(提出日時)しか提供していません。EDINET の仕様上、「提出」から「開示(ユーザーが閲覧可能になること)」までには未知のタイムラグが存在するため、「提出日時=開示日時」とみなすことはできません。この不確実性の中で、いかにして信頼性のある Date を決定するかが課題です。

リスク分析

Date の計算ロジックを設計する上で、考慮すべきリスクは以下の通りです。

  • 最も避けるべきリスク: 本来は翌営業日の株価に影響する情報(例: 15:30 以降に開示された情報)を、当日の情報として誤って分類してしまうこと
  • 許容されるリスク: 本来は当日の情報として扱えるもの(例: 14:00に開示された情報)を、安全側に倒して翌営業日扱いとしてしまうこと

kabukit では、「本当は翌日扱いなのに当日扱いしてしまう」リスクを最小化する、 保守的な (conservative) 方針を取ります。

解決策:安全マージンの導入

上記のリスク分析に基づき、以下のロジックで Date を決定します。

  1. 開示の最終デッドラインを 15:30 と定義する。 これは J-Quants における Date の決定ロジックと一貫性を保つためです。この時刻までに開示された情報は、当日の株価に影響を与えうるとみなします。

  2. 30分の「安全マージン」を設ける。 EDINET の「提出から開示までの未知のタイムラグ」を吸収するためのバッファとして、 30 分という安全マージンを設定します。

  3. 提出時刻の閾値を 15:00 に設定する。 上記から逆算し、提出時刻 (SubmittedTime) の閾値を「15:30 (デッドライン) - 30 分 (安全マージン) = 15:00」とします。

最終的な計算ルール

  • SubmittedTime が 15:00 より前の場合、SubmittedDate を Date とします。
  • SubmittedTime が 15:00 以降の場合、SubmittedDate の翌営業日を Date とします。

このロジックにより、不確実性を許容しつつ、最も合理的で防御可能な方法で Date カラムを導出します。