Skip to content

feat: /fins/summary の自己資本とROEを取りこぼさないようにする - #10

Merged
getumen merged 1 commit into
mainfrom
feature/fins-summary-roe-shareholders-equity
Aug 4, 2026
Merged

getumen merged 1 commit into
mainfrom
feature/fins-summary-roe-shareholders-equity

Conversation

@getumen

@getumen getumen commented Aug 3, 2026 •

Copy link
Copy Markdown
Owner

何が起きていたか

get_fin_summary は最後に df[FIN_SUMMARY_COLUMNS_V2] で列を絞ります。この固定リストに載っていないフィールドは、API が返していても黙って捨てられます。

API が末尾に追加した4つがこれに該当していました。

フィールド 内容
ShEq 自己資本(親会社株主に帰属)
NCShEq 自己資本(個別)
ROE 自己資本利益率
NCROE 自己資本利益率(個別)

実際の応答で確認したこと

2026-05-15(本決算の多い日)の応答120行:

  • ShEq … 114行に値あり
  • ROE … 74行に値あり(0.07 のような小数)
  • NCShEq … 60行
  • NCROE … 0行

2026-07-31(四半期中心の日)では ShEq のみが埋まり、ROE は全行空欄でした。本決算で報告される項目なので、四半期の応答だけを見ていると存在に気付けません。

ShEq は Eq とは別物です

Eq は非支配株主持分を含む純資産、ShEq は親会社株主に帰属する自己資本です。ROE の分母はこの ShEq にあたるので、NP / Eq で自作した値とは一致しません。利用側が取り違えないよう、定数にコメントを添えました。

取りこぼしが他に無いことの確認

公式仕様(ja/spec/fin-summary)の111項目と、実際の応答のキーを突き合わせました。

仕様書 111   API応答 111   許可リスト(本PR適用後) 111
応答と許可リスト: 過不足なし、順序も完全一致

差異は1つだけで、仕様書側の誤記でした。ドキュメントは106番目を NxFNCNp(小文字p)と表記していますが、API が返すのは NxFNCNP(大文字)です。このリストは元から大文字なので変更不要です。(NxFNp / NxFNp2Q のほうは本当に小文字で、API が連結/非連結で表記を揺らしています。)

追加位置は応答の並び順と同じ末尾にしたので、既知の列の順序は変わりません。

テスト

test_get_fin_summary_keeps_shareholders_equity_and_roe を追加しました。定数から4つを取り除くと KeyError: 'ShEq' で落ちることを確認済みです。

uv run pytest 57 passed / ruff check / ruff format --check / mypy src/ すべて通ります。

補足

uv.lock の1行は、0.2.0 への版上げ時に更新され忘れていたぶんです(uv sync で更新されます)。

別途検討したいこと(本PRの範囲外)

今回の根本原因は「固定リストに無い列は黙って捨てる」実装で、同じ形が7エンドポイントにあります。今後 API が項目を追加するたび同じことが起きます。順序の契約を保ったまま未知の列を末尾に残す(df[cols + [c for c in df.columns if c not in cols]])という手はありますが、全エンドポイントの応答形状に影響するので分けました。

🤖 Generated with Claude Code

get_fin_summary は最後に df[FIN_SUMMARY_COLUMNS_V2] で列を絞るため、
リストに無いフィールドは黙って捨てられる。API が末尾に追加した
ShEq / NCShEq / ROE / NCROE の4つがこれに該当していた。

2026-05-15 の応答で確認したところ、ShEq は120行中114行、ROE は74行が
値を持っており、四半期中心の日 (2026-07-31) では ShEq のみ埋まっていた。
本決算で報告される項目なので、四半期しか見ないと存在に気付けない。

ShEq は Eq とは別物である点に注意。Eq は非支配株主持分を含む純資産で、
ShEq は親会社株主に帰属する自己資本。ROE の分母はこの ShEq にあたるため、
NP / Eq で自作した値とは一致しない。

公式仕様 (https://jpx-jquants.com/ja/spec/fin-summary) の111項目と
実際の応答を突き合わせ、この4つ以外に取りこぼしが無いこと、および
既知の列は順序まで一致することを確認済み。仕様書は106番目を NxFNCNp と
表記しているが応答は NxFNCNP で、こちらは仕様書側の誤記。

uv.lock は 0.2.0 への版上げ時に更新され忘れていたぶんを含む。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0186EgG5fS8z9ERLr2upyE7Z
@getumen
getumen merged commit 850c55f into main Aug 4, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant