Shareholders
Japanese disclosure splits shareholder information across several filings, and jfinance exposes each one separately rather than merging them.
| Method | Source |
|---|---|
major_holders | Annual report, ownership breakdown |
major_shareholders | Annual report, major shareholders |
institutional_holders | Large shareholding reports, special filing rule |
insider_roster_holders | Annual report, officers |
large_holders, large_holder_transactions, large_holder_activity, large_holding_reports | Large shareholding reports |
From the annual report
get_major_holders
Ticker.major_holders -> pandas.DataFrame
Ticker.get_major_holders(as_dict=False) -> pandas.DataFrame | dictOwnership percentages by holder type, from the ownership breakdown in the annual report. Available from fiscal 2019 annual reports.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
as_dict | bool | False | Return a dict instead of a DataFrame |
Returns — pandas.DataFrame with one column, Value, indexed by the keys below.
| Index | Type | Description |
|---|---|---|
institutionsPercentHeld | float | Financial institutions + securities firms + foreign corporations |
institutionsCount | float | Number of such holders |
insidersPercentHeld | float | Officers’ holdings |
financialInstitutionsPercentHeld | float | Financial institutions |
financialServiceProvidersPercentHeld | float | Securities firms |
otherCorporationsPercentHeld | float | Other corporations |
foreignCorporationsPercentHeld | float | Foreign corporations |
foreignIndividualsPercentHeld | float | Foreign individuals |
individualsAndOthersPercentHeld | float | Individuals and others |
asOfDate | int | Record date, Unix seconds |
sourceDocumentId | str | EDINET document ID |
Percentages are decimals, so 0.8669 is 86.69%. Where the unit of an officer’s shareholding
cannot be read from the filing, insidersPercentHeld is omitted — jfinance does not fill a
value by guessing.
get_major_shareholders
Ticker.major_shareholders -> pandas.DataFrame
Ticker.get_major_shareholders(as_dict=False, year=None) -> pandas.DataFrame | dictThe top ten shareholders named in the annual report. Registered holders, so trust bank accounts appear at the top; this is not a beneficial ownership list.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
as_dict | bool | False | Return a dict instead of a DataFrame |
year | int | None | Fiscal year of the annual report. Latest when omitted. Available years are in .attrs["years"] |
Returns — pandas.DataFrame, one row per shareholder.
| Column | Type | Description |
|---|---|---|
Date Reported | datetime64 | Record date |
Holder | str | Holder name as filed |
Address | str | Address as filed |
pctHeld | float | Holding ratio, as a decimal |
Shares | int | Shares held |
Rank | int | Rank, 1 to 10 |
Document ID | str | EDINET document ID |
get_insider_roster_holders
Ticker.insider_roster_holders -> pandas.DataFrame
Ticker.get_insider_roster_holders(as_dict=False) -> pandas.DataFrame | dictOfficers and the shares they hold, from the annual report, under yfinance’s column names.
Returns — pandas.DataFrame
| Column | Type | Description |
|---|---|---|
Name | str | Name as filed |
Position | str | Title |
Shares Owned Directly | int | Shares held |
Position Direct Date | datetime64 | Record date |
URL, Most Recent Transaction, Latest Transaction Date | — | Present for yfinance compatibility and always empty; EDINET discloses no insider transactions |
From large shareholding reports
Large shareholding reports are filed under the 5% rule. They are filed by the holder, not by the company, and cover companies and individuals as well as institutions.
get_institutional_holders
Ticker.institutional_holders -> pandas.DataFrame
Ticker.get_institutional_holders(as_dict=False) -> pandas.DataFrame | dictInstitutions holding over 5%, from large shareholding reports filed under the special rule available to institutional investors. Column names follow yfinance.
Returns — pandas.DataFrame
| Column | Type | Description |
|---|---|---|
Date Reported | datetime64 | Record date |
Holder | str | Holder name |
pctHeld | float | Holding ratio, as a decimal |
Shares | int | Shares held |
pctChange | float | Change from the previous report |
holderEdinetCode | str | EDINET code of the holder |
sourceDocumentId | str | EDINET document ID |
Value | — | Present for yfinance compatibility and always empty; valuing the holding needs a share price |
get_large_holders
Ticker.large_holders -> pandas.DataFrame
Ticker.get_large_holders(as_dict=False) -> pandas.DataFrame | dictEvery filer of a large shareholding report, including companies and individuals, one row per holder showing their most recent report.
Returns — pandas.DataFrame
| Column | Type | Description |
|---|---|---|
Date Reported | datetime64 | Record date |
Holder | str | Holder name |
pctHeld | float | Holding ratio, as a decimal |
Shares | float | Shares held |
pctChange | float | Change from the previous report |
Date Filed | datetime64 | Filing date |
Holder EDINET Code | str | EDINET code of the holder |
Document ID | str | EDINET document ID |
get_large_holder_transactions
Ticker.large_holder_transactions -> pandas.DataFrame
Ticker.get_large_holder_transactions(as_dict=False) -> pandas.DataFrame | dictAcquisitions and disposals in the preceding 60 days, as disclosed in large shareholding reports. The 100 most recent, with identical trades merged into one row.
Returns — pandas.DataFrame
| Column | Type | Description |
|---|---|---|
Date | datetime64 | Trade date |
Holder | str | Holder name |
Action | str | acquire or dispose |
Action Text | str | Wording used in the filing |
Shares | float | Shares traded |
Unit Price | float | Price per share |
Value | float | Consideration |
Security Type | str | Type of security |
Market | str | Venue |
Holder EDINET Code | str | EDINET code of the holder |
Document ID | str | EDINET document ID |
get_large_holder_activity
Ticker.large_holder_activity -> pandas.DataFrame
Ticker.get_large_holder_activity(as_dict=False) -> pandas.DataFrame | dictThe above summarised over six months, counted back from the most recent filing date in the
data. Ordinary shares and investment units only. The shape matches yfinance’s
insider_purchases: seven rows, with Shares and Trans columns.
get_large_holding_reports
Ticker.large_holding_reports -> pandas.DataFrame
Ticker.get_large_holding_reports(limit=100, offset=0) -> pandas.DataFrameEvery large shareholding report filed for the security, newest first, one row per joint
holder. The total number of reports is in .attrs["total"].
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
limit | int | 100 | Rows to return |
offset | int | 0 | Rows to skip |
Returns — pandas.DataFrame
| Column | Type | Description |
|---|---|---|
Date Filed, Base Date | datetime64 | Filing date and record date |
Title | str | Title of the filing |
Holder, Holder Type, Is Joint | str, str, bool | Holder, its classification, and whether it is a joint holder |
pctHeld, Previous pctHeld | float | Holding ratio now and in the previous report |
Shares, Total Outstanding | float | Shares held and shares outstanding |
Purpose, Important Proposal, Reason | str | Purpose of holding, whether an important proposal is intended, and the reason for filing |
Holder EDINET Code, Document ID | str | EDINET codes |