JPX 東証上場銘柄一覧 (data_j) の性質
基準日は取得日と違い、証券コードは 4 桁数字とは限らない。配布ファイルは 2026-09-03 ごろ .xls から .xlsx に変わり、古い URL は 404 になった。
調べた対象
JPX が公開する東証上場銘柄一覧。
https://www.jpx.co.jp/markets/statistics-equities/misc/tvdivq0000001vg2-att/data_j.xlsx
初回 (2026-08-16) は 2 つの版を突き合わせた。
- 2026-08-01 04:00 に取得された版。
日付列は20260630 - 2026-08-16 に取得した版。
日付列は20260731
その後 2026-09-12 に、夜間バッチのログと stock_snapshots から 3 点目を足した。
日付 列が 20260831 の版で、取り込みの初出は 2026-09-06 07:53 になる。
数え方は pandas。pd.read_excel(path, dtype=str) で読んだ。dtype=str を付けないとコードが数値になる。以下の件数はすべて 2026-07-31 版の実測値。
列は 10 個。日付 コード 銘柄名 市場・商品区分 33業種コード 33業種区分 17業種コード 17業種区分 規模コード 規模区分。
基準日は取得日と違う
日付 列がデータの基準日を表す。ファイルを取得した日ではない。
| 取得日 | 日付 列の値 |
|---|---|
| 2026-08-01 | 20260630 |
| 2026-08-16 | 20260731 |
月末時点のデータが 1 か月ほど遅れて公開される。8/1 の時点ではまだ 6 月末版だった。8 月の途中で 7 月末版に切り替わっている。
更新が毎月何日に起きるかは、この 2 点では決められない。観測を続ける必要がある。月初に取りに行くと、常に 2 か月前のデータを掴み続けることになる。
過去分は取り直せない
URL には最新版 1 本しか置かれていない。過去の基準日のファイルは JPX から取得できない。取り逃した月は永久に欠ける。
6 月末版が手元に残っていたのは、以前のバッチが保存した 1 本が生きていたからである。そのバッチは同じファイル名で毎回上書きしていたため、5 月以前は失われている。
生ファイルを基準日ごとに残す運用が要る。ここが理由。
市場・商品区分の内訳
全 4444 行の内訳。
| 区分 | 件数 |
|---|---|
| スタンダード(内国株式) | 1559 |
| プライム(内国株式) | 1558 |
| グロース(内国株式) | 596 |
| ETF・ETN | 476 |
| PRO Market | 185 |
| REIT・ベンチャーファンド・カントリーファンド・インフラファンド | 63 |
| スタンダード(外国株式) | 2 |
| グロース(外国株式) | 2 |
| 出資証券 | 2 |
| プライム(外国株式) | 1 |
内国株 3 市場の合計は 3713 件。投資判断の対象はここになる。区分の文字列には全角括弧が入る。半角で書くと一致しない。
外国株は 5 件しかない。PRO Market は 185 件あり、一般の投資家は買えない。
証券コードは 4 桁数字とは限らない
内国株 3 市場 3713 件のうち、数字だけで構成されないコードが 171 件ある。130A のように末尾が英字になる。2024 年から英文字を含むコードの割り当てが始まったため。
桁数も 4 桁固定ではない。5 桁が 7 件ある。優先株と社債型種類株。
| コード | 銘柄名 |
|---|---|
| 25935 | 伊藤園第1種優先株式 |
| 50765 | インフロニア・ホールディングス第1回社債型種類株式 |
| 75505 | ゼンショーホールディングス第1回社債型種類株式 |
| 92015 | 日本航空株式会社第1回社債型種類株式 |
| 92025 | ANAホールディングス第1回社債型種類株式 |
| 94345 | ソフトバンク第1回社債型種類株式 |
| 94346 | ソフトバンク第2回社債型種類株式 |
5 桁は普通株の 4 桁コードに枝番を付けた形になっている。伊藤園の普通株は 2593。ただし普通株との対応関係は JPX の一覧には入っていない。
「証券コードは 4 桁の数字」を前提にすると壊れる。
業種コードは先頭の 0 が落ちる
33 業種コードは本来 4 桁。1050 のような値が入る。しかし 3713 件のうち 12 件が 2 桁になっている。水産・農林業の 0050 が 50 として読める。
17 業種コードも同様。本来 2 桁のところ 1431 件が 1 桁になる。食品の 01 が 1 になる。
原因は Excel 側。数値セルとして保持しているため、先頭の 0 が保存されない。読み込み後に 0 埋めして揃える必要がある。33 業種は 4 桁、17 業種は 2 桁。
dtype=str を付けても解決しない。文字列化する前に 0 が失われている。
規模区分は過半が対象外
規模コード と 規模区分 は、内国株 3 市場 3713 件のうち 2076 件が - になる。TOPIX の規模区分に採用されていない銘柄。
値は 5 種類。
| コード | 区分 |
|---|---|
| 1 | TOPIX Core30 |
| 2 | TOPIX Large70 |
| 4 | TOPIX Mid400 |
| 6 | TOPIX Small 1 |
| 7 | TOPIX Small 2 |
コード 3 と 5 は現れない。欠番なのか、この版にたまたま無いだけかは未確認。
- は「該当なし」を表す文字列であって、値ではない。そのまま保存すると後で数えるときに事故る。
その他の実測
銘柄名の最大長は 32 文字。全角。長い名前は社債型種類株が占める。
配布ファイルが .xls から .xlsx に変わった
2026-09-03 ごろ、JPX が拡張子を変えた。古い URL は 404 を返すようになった。
旧 .../tvdivq0000001vg2-att/data_j.xls
新 .../tvdivq0000001vg2-att/data_j.xlsx
夜間バッチのログ (journalctl -t kabu) で日が取れる。
| 日時 | 結果 |
|---|---|
| 2026-09-03 01:00 | 成功。基準日 2026-07-31 |
| 2026-09-04 01:00 | 失敗。3 秒で終了 |
| 2026-09-05 01:00 | 失敗 |
| 2026-09-06 01:00 | 失敗 |
| 2026-09-06 07:53 | 成功。基準日 2026-08-31。取得先を .xlsx に直した後 |
| 2026-09-07 01:00 | 成功。以降は毎晩 |
3 晩続けて落ちていた。 他の処理は走り続けるので、全体は「1 件失敗」で終わる。取得元が 黙って変わると、こういう落ち方をする。
ファイルの更新時刻は判断材料にならない。同じ基準日のあいだ毎晩上書きするため、
data_j_20260831.xlsx の mtime は最後に落とした日になる。初出を知りたいときは
stock_snapshots の min(created_at) を見る。
未確定
- JPX が毎月何日に更新するか。観測は 3 点に増えた。6 月末版が 2026-08-01 時点、7 月末版が 2026-08-16 時点、8 月末版が 2026-09-06 時点で見えている。ただし 8 月末版の初出は拡張子の 変更と重なっており、9 月 3 日から 6 日のどこで公開されたかを切り分けられない。取得が 毎晩通るようになったので、9 月末版で日が決まる
- 規模コードの 3 と 5 が欠番かどうか
- 5 桁コードと普通株コードの対応を JPX が別途公開しているか