学ぶ
先読みしないデータ(point-in-time)の作り方
event実例の数値は 2026 年 10 月 23 日 時点の API の応答から取っています。財務・配当のデータは毎日 16:30(TDnet)と 19:00(EDINET)を基準に更新します(日本時間)。
このページで分かること
- check_circlemarket-cap-history と valuation-history は、各決算を開示日から使います。開示日より前の日には、前の決算のままです。
- check_circleどの決算を使ったかは、応答の
epsPeriod・bpsPeriod・dividendPeriod・sharesPeriodで確かめられます。 - check_circle守っているのは「いつから使えたか」です。値は後の有報や訂正を反映した最新の値で、公表当時の版は保存していません。
先読みバイアスとは
先読みバイアスは、過去のある日の判断に、その日より後に分かった情報を使ってしまう誤りです。
たとえば 3 月期の決算は、3 月 31 日の時点ではまだ公表されていません。決算期末の日付で決算をつなぐと、5 月の発表までの約 1〜2 か月、未来の数字で銘柄を選ぶことになります。
PER や PBR のように、株価と決算を掛け合わせる指標で特に起きやすい誤りです。
ZENITH Code はこう扱う: 決算は開示日から
時価総額とバリュエーションの時系列では、日ごとに「その日までに開示済みで、期末が最も新しい決算」を使います。
- 開示日: 決算の出典情報に記録された公表日時のうち、期末以降で最も早い日です。通常は決算短信の日です。
- 開示日が分からない決算: 期末から 45 日後(決算短信の開示の目安)から使います。
- 株価の日付が開示日より前: 前の決算のままです。開示日になって初めて新しい決算に切り替わります。
- 分割調整: 株価・1 株当たりの値・株数は、すべて今の株数の基準にそろえます。分割の日に指標が飛びません。
01
決算期末
この時点では、まだ前の決算を使う
02
開示日(最初の公表)
この日から新しい決算の EPS・BPS・株数を使う
03
開示日が分からない場合
期末から 45 日後から使う
04
次の決算の開示日
その日に次の決算へ切り替わる
計算の定義
各指標は、その日の分割調整後の終値と、その日に使える決算から計算します。
| 指標 | ZENITH Code の計算 | null・例外 |
|---|---|---|
| 時価総額 | 分割調整後の終値 × 株数(自己株式を除く) | 株数が取れない決算は発行済株式数で代用(sharesBasis が issued) |
| PER | 分割調整後の終値 ÷ EPS | EPS が 0 以下(赤字)や未開示は null |
| PBR | 分割調整後の終値 ÷ BPS | BPS が 0 以下や未開示は null |
| 配当利回り | 1 株配当 ÷ 分割調整後の終値(0〜1 の小数) | 無配は 0 |
basis=fy(既定) | 通期の EPS・BPS・配当を使う | PER はスクリーナーと同じ(最新の通期 EPS)。PBR は通期の BPS(スクリーナーは最新の四半期の BPS) |
basis=ttm | 直近 12 か月の EPS と最新四半期の BPS を使う | 配当は通期のまま。四半期ごとに切り替わる |
株価は 2010 年 1 月からです。1 回のリクエストは最大 10 年です。
実例: トヨタ自動車(7203)の株数の切り替わり
トヨタ自動車の時価総額の時系列(週ごと)では、株数の出典(sharesPeriod)が 2026 年 8 月 7 日の行で切り替わります。2027 年 3 月期 第 1 四半期の短信(2026 年 8 月 4 日公表)が出たあとの最初の週末だからです。
それまでは 2026 年 3 月期の通期の株数(130 億 3,338 万株)を使い、切り替え後は第 1 四半期末の株数(118 億 4,183 万株)を使っています。
同じ期間の PER(basis=fy)は、通期の決算だけを使うため、epsPeriod は 2026-03/FY のままです。四半期ごとに切り替えたいときは basis=ttm を使います。
| 日付(週の最終営業日) | 株数の出典 `sharesPeriod` | 株数(株) | PER の EPS の出典 `epsPeriod` |
|---|---|---|---|
| 2026-07-24 | 2026-03/FY | 13,033,384,474 | 2026-03/FY |
| 2026-07-31 | 2026-03/FY | 13,033,384,474 | 2026-03/FY |
| 2026-08-07 | 2026-06/Q1 | 11,841,833,660 | 2026-03/FY |
株数は自己株式を除いた数です。出典: /stable/market-cap-history と /stable/valuation-history(symbol=7203、interval=weekly、2026 年 10 月 23 日 時点)。株価に関する値は載せていません。
API での使い方
日付の範囲と間引き(interval = daily・weekly・monthly)を指定して取ります。バックテストでは、売買を判断する日付に対して「その日以前で最も新しい行」を結び付けます。
curl -sG "https://api.zenithcode.net/stable/valuation-history" \ --data-urlencode "symbol=7203" \ --data-urlencode "from=2025-01-01" \ --data-urlencode "to=2025-12-31" \ --data-urlencode "interval=monthly" \ --data-urlencode "basis=ttm" \ -H "x-api-key: YOUR_API_KEY"
Python: 月末の判断日に、その日までの値だけを結び付ける
import requests
import pandas as pd
BASE = "https://api.zenithcode.net/stable"
HEADERS = {"x-api-key": "YOUR_API_KEY"}
def get(path, **params):
r = requests.get(f"{BASE}{path}", params=params, headers=HEADERS, timeout=30)
r.raise_for_status()
return r.json()
# Daily PER / PBR built only from results disclosed on or before each date
val = pd.DataFrame(get("/valuation-history", symbol="7203", basis="ttm",
**{"from": "2021-01-01", "to": "2025-12-31"}))
val["date"] = pd.to_datetime(val["date"])
# Your decision dates (e.g. month-end rebalancing)
signals = pd.DataFrame({"date": pd.date_range("2021-01-31", "2025-12-31", freq="ME")})
# merge_asof attaches the latest row on or before each date: no look-ahead
panel = pd.merge_asof(signals, val.sort_values("date"), on="date", direction="backward")
print(panel[["date", "per", "pbr", "epsPeriod", "bpsPeriod"]].tail())できないこと(限界)
ZENITH Code が守っているのは「どの決算を、いつから使うか」です。次の点は、利用者の側で考慮してください。
- 値の版は保存していません。 有報や訂正で値が置き換わると、過去の日付にも置き換わった値が使われます。公表当時に見えていた数字そのものではありません。
- 開示日は最初の公表日です。 短信の日から有報で確定した値を使うため、短信と有報で数字が違う会社では、短信の公表から有報の提出までの期間に差が出ます。
- 財務のエンドポイントは最新の値を返します。 income-statement などを自分でつなぐ場合、
provenance.announcedAt以降に使うと保守的(遅め)になります。announcedAtは今の出典の公表日時なので、有報に置き換わった期は有報の日付です。 - 株価は 2010 年 1 月からです。 それより前の時価総額・PER の時系列は作れません。
よくある質問
投資家・開発者向け
- 決算発表の前日の PER は、どの決算で計算されていますか?
- 前の決算です。新しい決算は開示日から使うので、発表の前日までは 1 つ前の決算の EPS で計算されます。応答の
epsPeriodで確かめられます。 - 赤字の期の PER はどうなりますか?
nullです。その日に使える決算の EPS が 0 以下のときは、PER を計算しません。- 自社株買いは時価総額に反映されますか?
- はい。株数は開示済みの直近の決算の自己株式を除いた株数なので、次の決算が開示された日から反映されます。
AI・研究者向け
- これは厳密な point-in-time データですか?
- 「いつから使うか」は開示日基準で守っていますが、値は最新の版です。公表当時の数字の版(ヴィンテージ)は保存していないため、後の訂正や有報での置き換えは過去の日付にも反映されます。
- どの決算が使われたかを機械的に確かめられますか?
- はい。valuation-history の各行に
epsPeriod・bpsPeriod・dividendPeriod、market-cap-history にsharesPeriodが2026-03/FYの形で入ります。 - 開示日の記録が無い決算はどう扱われますか?
- 期末から 45 日後から使います。決算短信の開示の目安に合わせた、保守的な置き方です。
関連記事
免責事項
この記事は、データの仕組みと API の使い方を説明するものです。特定の銘柄の売買を勧めるものではなく、投資助言ではありません。実例の数値は記事の作成時点の応答で、その後の開示や訂正で変わることがあります。投資の判断はご自身の責任で行ってください。

