はじめに
『誰も知らない超優良企業』(渡部清二)を読んだことをきっかけに、バリュー株に興味を持つようになりました。
バリュー株とは、企業の本来の価値や資産、利益に対して株価が割安であり、今後、業績の改善や市場評価の見直しによって株価の上昇が期待できる銘柄のことです。
私も、そうしたバリュー株を見つけて実際に投資してみたいと思うようになりました。
やりたかったこと
オンライン版の四季報を見ていると、多くの銘柄が今年1月から3月にかけて上昇していた一方で、4月に入ってから下落していることに気づきました。ただ、その下落によって全体的に株価が底に近づいているようにも見え、足元では4月を境に徐々に持ち直し始めている印象を持ちました。背景には、米国とイランをめぐる情勢の影響があるのではないかと推測しています。
私は数か月前にNISAを始めたこともあり、これを機に本格的に株式投資に取り組んでみようと考えました。ちょうど現在通っているMBAでファイナンスを学んでいるため、その復習も兼ねて、PBRやPER、ROE、ROAといった指標を確認しながら銘柄を選ぶことにしました。特に、PBRが1倍を下回る銘柄には割安感がありますが、PERなど他の指標もあわせて見ることで、より立体的に企業の状態を判断できると考えています。
一方で、個別銘柄を一つひとつ調べていくのは非常に手間がかかります。そのため、国内株についてこれらの指標をまとめて一覧化し、すぐに比較・判断できる仕組みを作りたいと思うようになりました。実際にさまざまなサイトを探してみたものの、自分が求めているような形で必要な情報をまとめて確認できるものは、なかなか見つかりませんでした。
システム構成・プログラム
上記がシステム構成の模式図です。
事前にJPXから「東証上場銘柄一覧」ファイルをダウンロードします。
また、IR BANKからは「決済・財務データファイル一覧」をダウンロードします。
株価などの情報はj-QuantsのAPIを基に取得をします。APIを利用する際には予めユーザ登録をして、APIキーを発行する必要があります。APIキー取得方法は別のサイトなどでご確認ください。
今回は無料版を利用することにしたのですが、そうすると3か月前の株式情報しか得ることができないようです。一旦はこの制約を受け入れることにしました。3か月前と現在の株式情報の差異については、オンライン四季報で確認するようにします。
本プログラムは2つあり、prices_file.pyを実行して「prices.csv」という中間ファイルを生成した後に、build_pbr_table.pyを実行し、「pbr_table.xlsx」を生成するようにしました。
プログラムを全て記述することは致しませんが、GitHUBにソースコードを置いたので、こちらを確認してください。
以下を実行すると、dataフォルダに「prices.csv」が生成されます。
python prices_file.py
各インプットファイルをdataフォルダに置いたうえで、以下を実行すると、「pbr_table.xlsx」が生成されます。
python build_pbr_table.py
アウトプットファイルの各カラムの説明は、最後の章にまとめて記載します。
株の選定
最後に、オンライン版の四季報を使って、3か月前と現在のPBRを見比べました。
PBRは、「会社の持っている資産に対して、今の株価が高いのか安いのか」を見るための数字です。これを比較することで、その会社が以前より割安になっているのか、それとも評価が変わってきているのかを確認しました。
さらに、ChatGPTにもその会社の今後の見通しや注目点を聞きました。
数字だけで決めるのではなく、会社の事業内容や今後の材料も含めて、最終的に判断することにしました。
その結果、今回選んだのは 共栄タンカー でした。
以下、株購入画面です。

以下、オンライン版四季報です。「値上がり」が「5」になっています!

こちらが、プログラムで出力した結果です。
今回は、この結果をもとに比較したところ、共栄タンカーが有力な候補として上位に出てきました。
「プログラムで銘柄候補を絞り込み、その後に自分で内容を確認して判断する」という流れは、初心者にとってもかなり使いやすい方法だと感じました。
今後も定期的にデータを更新しながら候補を出していけば、効率よく銘柄を調べられそうです。
ただし、もちろんプログラムの結果がそのまま将来の値上がりを保証するわけではありません。 あくまで、判断の材料のひとつとして使うことが大切だと思います。
ここで、今回参考にした代表的な指標を簡単に説明します。
・PBR
会社の純資産に対して株価がどのくらいの水準かを見る指標です。
一般的には、PBRが1倍を下回っていると「割安かもしれない」と考えられることがあります。
・PER
その会社が出している利益に対して、株価が何倍まで買われているかを見る指標です。
こちらも一般的には、数字が低いほど割安と見られやすいです。
このように、会社の価値や利益に比べて株価が安いと考えられる銘柄は、バリュー株と呼ばれます。
将来、業績が改善したり、市場からの評価が見直されたりすると、株価が上がる可能性があるためです。
もちろん、PBRやPERが低いだけで必ず良い株とは限りませんが、株を選ぶうえでの大事なヒントになります。
私がこうしたバリュー株に興味を持ったきっかけは、『誰も知らない超優良企業』(渡部清二)という本でした。
世の中にはあまり目立たなくても、しっかり利益を出し、堅実に経営している会社があることを知り、「有名かどうか」ではなく、会社の中身を見て判断することが大切なのだと感じました。
今回の投資は、その考え方を自分なりに実践してみたものです。
購入方法については、今回は単元未満株ではなく、通常の現物買いを選びました。
単元未満株は1株から買えるので始めやすい反面、売るときに少し不便な場合があります。
そのため今回は、100株をまとめて購入することにしました。
共栄タンカーの株価は 1株1,749円 だったので、購入金額は 17万4,900円 になりました。
私にとっては、決して小さくない金額でした。
ただ、実際にやってみて感じたのは、株を買うというのは、ただお金を出して売買するだけではないということです。
数字を確認し、会社の内容を調べ、自分で納得したうえで決める。
その過程には、思っていた以上に学びがありました。
もちろん、株価は必ず上がるわけではありませんし、調べた通りに動かないこともあります。
だからこそ、勢いで買うのではなく、自分なりに調べて、納得してから判断することが大切だと思います。
もし株に少しでも興味があるなら、まずは一社だけでもじっくり調べてみると、見え方が大きく変わるかもしれません。
ちなみに、ChatGPTにこの会社について聞いたところ、特に「カタリスト」について次のような説明がありました。
カタリストとは、今後株価が上がるきっかけになりそうな材料のことです。
あなたの表では PBR 約0.345、概算PER 約1.69、ROE 20.4% と、
数字だけ見るとかなり強いです。
しかもこれは単なる低評価放置株ではなく、株価材料が比較的はっきりしている
海運バリュー株 です。
会社は長期貸船契約主体で安定収益を確保しつつ、LPG船やVLCCの新造計画を進めています。
さらに、2027年3月期には ばら積船売却による約18億円の特別利益計上予定 があり、
来期の利益押し上げ要因が見えています。
要するに、共栄タンカーには今後の業績を後押しする材料がいくつかある、ということです。
たとえば、新しい船の計画が進んでいることや、将来の利益を押し上げる可能性があることは、前向きな要素として見られます。
ただし、こうした材料があるからといって、必ず株価が上がるとは限りません。
大切なのは、割安さだけでなく、「これから見直される理由があるか」まで考えることだと感じました。
おわりに
今後は、今回買った株がこれからどのように動いていくのかを、少しずつ見守っていきたいと思います。
現在はホルムズ海峡をめぐる情勢の影響もあって、海運業界の株は全体的に弱い動きになっているのかもしれません。
アウトプットファイルの各カラムの説明
年度・株価系
code
証券コードです。
4桁コードの通常銘柄だけでなく、Aコードも正規化して扱います。たとえば 130A0 は 130A として揃える実装です。
name
銘柄名です。JPX の上場銘柄一覧から取得しています。
market
市場・商品区分です。
例:プライム、スタンダード、グロースなどの内国株式区分です。
industry33
33業種区分です。
東証の33業種分類ベースの業種名です。
industry17
17業種区分です。
33業種より大きい括りの業種分類です。
年度・株価系
fiscal_year
採用した財務データの年度です。
各社ごとに、BS 側の最新年度を1件選んでいます。
date
株価の基準日です。
prices.csv に入っている最新株価の日付です。
close
終値です。
PBR や PER の計算に使う基準株価です。J-Quants 日足の Close を使っています。
adj_close
調整後終値です。
株式分割などを反映した終値です。長期比較向きですが、このスクリプトでは PBR/PER 計算の主値は close を使っています。
volume
出来高です。
売買株数を表します。流動性の参考になります。
turnover_value
売買代金です。
出来高だけでなく、実際にいくら売買されたかを見る指標です。
純資産・株価評価系
bps
1株純資産です。
会社の純資産を1株あたりに直したものです。PBR の分母になります。
pbr
株価純資産倍率です。
PBR = 株価 ÷ BPS です。
一般に 1倍割れは「解散価値に対して割安」と見られることがありますが、低すぎる理由の確認は必要です。コードでは close / bps で計算しています。
per
株価収益率です。
PER = 株価 ÷ EPS です。
利益に対して株価が何倍まで買われているかを見る指標です。コードでは EPS が正のときだけ計算しています。
eps
1株当たり利益です。
企業の利益を1株あたりに直したものです。PER の分母です。
収益性系
roe
自己資本利益率です。
自己資本に対してどれだけ利益を生んだかを見る指標です。
低PBRでも ROE が低いと、いわゆるバリュートラップの可能性があります。
roa
総資産利益率です。
総資産に対する利益効率です。ROE が高くても ROA が低いと、借入依存で ROE が押し上がっているケースがあります。
sales
売上高です。
企業規模や利益率計算の分母として使います。
operating_profit
営業利益です。
本業でどれだけ稼いだかを見る利益です。
ordinary_profit
経常利益です。
営業外損益も含めた、会社全体としての通常収益力を見る利益です。
net_profit
当期純利益です。
最終利益です。純利益率の計算に使います。なお CSV 側に該当列が無い場合、このスクリプトでは NaN 列を補完するため空欄になります。
operating_margin
営業利益率です。
営業利益 ÷ 売上高 × 100 で計算しています。
本業の採算性を見る指標です。
net_margin
純利益率です。
当期純利益 ÷ 売上高 × 100 です。
最終的にどれくらい利益が残るかを見ます。net_profit が無ければ空欄になります。
財務安全性系
equity
純資産・自己資本・株主資本のいずれかに対応する列です。
元CSVの列名揺れに応じて拾っています。厳密な会計定義はファイル次第ですが、スクリプト上は「資本の厚み」を表す値として扱っています。
total_assets
総資産です。
自己資本比率の計算に使います。
equity_ratio
自己資本比率です。
equity ÷ total_assets × 100 です。
財務の安定性を見る基本指標です。一般に高いほど安全性が高いと見られます。
キャッシュフロー系
operating_cf
営業キャッシュフローです。
本業で現金を稼げているかを示します。
investing_cf
投資キャッシュフローです。
設備投資や投資有価証券など、将来の成長や資産取得に使った現金の流れです。
financing_cf
財務キャッシュフローです。
借入や返済、配当、増資など資金調達まわりの現金の流れです。
fcf
フリーキャッシュフローです。
このコードでは FCF = operating_cf + investing_cf で計算しています。
一般的にも FCF は、企業が自由に使えるキャッシュの目安として使われます。
cf_margin
キャッシュフローマージンです。
operating_cf ÷ sales × 100 です。
会計上の利益ではなく、売上に対してどれだけ現金が残るかを見る指標です。
判定・補助列
value_score
バリュー候補スコアです。
下記の条件を何個満たしたかを単純加点したものです。
- PBR 1倍以下
- PER 15倍以下
- ROE 8%以上
- ROA 5%以上
- EPS プラス
- 自己資本比率 30%以上
- 営業CF プラス
- FCF プラス
最大 8 点です。高いほど「条件を多く満たす」銘柄です。
value_candidate
総合候補フラグです。
このコードでは以下を全部満たすと YES になります。
0 < pbr <= 1.0roe >= 8roa >= 5eps > 0
それ以外は NO です。
price_missing_reason
株価が空欄の理由メモです。
今のコードでは主に次の2種類です。
Aコード価格未取得価格データ欠損
つまり、PBR が空欄の理由の切り分け用です。
スコア内訳フラグ列
以下は value_score の構成要素です。
1 なら条件達成、0 なら未達です。
pbr_1x
0 < pbr <= 1.0 を満たすか
per_15x
per <= 15 を満たすか
roe_8p
roe >= 8 を満たすか
roa_5p
roa >= 5 を満たすか
eps_positive
eps > 0 を満たすか
equity_ratio_30p
equity_ratio >= 30 を満たすか
operating_cf_positive
operating_cf > 0 を満たすか
fcf_positive
fcf > 0 を満たすか




