配当利回りと配当性向は、配当に注目した銘柄選びでよく使われる指標です。本記事では両者の計算式と読み方、「高配当利回り = 安全」と単純化できない構造的な理由を整理し、pandas での計算例を示します。
目次
- 配当利回りとは
- 配当性向とは
- 配当利回りと配当性向の役割の違い
- 「高配当 = 安全」と単純に言えない理由
- 単一銘柄を計算する
- 複数銘柄を pandas で一括計算する
- 利回りと性向の組み合わせで読む
- DOE(株主資本配当率)も併記する
- 配当データの取り扱い注意
配当利回りとは
配当利回り(Dividend Yield)は「株価に対して、年間配当が何%か」を表します。
たとえば株価 2000 円、年間配当 60 円なら、配当利回り = 3.0% です。
利回りが高いほど、保有しているだけで得られる配当の比率が高い、と解釈されます。ただし「高利回り = 良い」とは限らない構造があります(後述)。
配当性向とは
配当性向(Dividend Payout Ratio)は「純利益のうち、配当に回した割合」を表します。
または 1 株ベースで、
配当性向が 30% なら、利益の 30% を配当に回し、残り 70% を内部留保に回したという意味になります。
配当利回りと配当性向の役割の違い
両者は混同されやすいですが、見ている対象が違います。
| 指標 | 何を測るか | 主な使いどころ |
|---|---|---|
| 配当利回り | 株価に対する配当比率 | 銘柄間の比較 / 個人の現金収益率 |
| 配当性向 | 利益に対する配当比率 | 配当の 持続性 の判断 |
「配当利回り = 銘柄を買う側の視点」、「配当性向 = 払う会社側の視点」と整理できます。
「高配当 = 安全」と単純に言えない理由
配当利回りが高いことは、必ずしも会社の状態が良いことを意味しません。次のような構造があります。
1. 株価が下がっただけのケース
配当利回りは「DPS / 株価」で計算します。分母の株価が下がる と、配当が変わらなくても利回りは上がります。
業績悪化で株価が大きく下げた銘柄は、見かけの配当利回りが急に高くなることがあります。次に決算が出れば、減配 / 無配で利回りも下がる可能性が残っています。
2. 配当性向が異常に高いケース
配当性向が 80% を超える ような銘柄は、利益のほとんどを配当に回している状態です。次のいずれかが起きると、すぐに減配の引き金になります。
- 業績が少し下振れすると、配当性向が 100% を超えてしまう
- 設備投資・研究開発に必要な内部留保が確保できない
- 借入で配当を維持している場合、財務が継続的に痛む
3. 一時的な特別配当
記念配当・特別配当を含めた利回りは、翌年再現される保証がありません。次年度以降の 普通配当ベース で改めて確認します。
4. 業界が構造的衰退期にある
成熟・衰退業界では、新規投資先がないため利益を配当に回している、というケースもあります。配当は手厚くても、株価が長期的に下がる可能性があります。
これらは「高配当銘柄を一律避けるべき」という話ではなく、高利回りの背景を確認するべき という話です。
単一銘柄を計算する
サンプル値で計算する例です。
def dividend_yield(dps: float, price: float) -> float | None: """配当利回り(%)を返す。price <= 0 なら None。""" if price is None or price <= 0: return None return dps / price * 100
def payout_ratio(dps: float, eps: float) -> float | None: """配当性向(%)を返す。eps <= 0 なら None(計算不能)。""" if eps is None or eps <= 0: return None return dps / eps * 100
print(round(dividend_yield(60, 2000), 2)) # 3.0print(round(payout_ratio(60, 200), 2)) # 30.0print(payout_ratio(60, -50)) # None (赤字)EPS が負(赤字)の場合、配当性向は計算できません。配当を払えていても、それは利益の中から払っているわけではない、という状態です。
複数銘柄を pandas で一括計算する
import numpy as npimport pandas as pd
df = pd.DataFrame({ "Code": ["1301", "1302", "1303", "1304", "1305"], "CoName": ["サンプル商事001", "サンプル商事002", "サンプル商事003", "サンプル商事004", "サンプル商事005"], "C": [2900, 1500, 4500, 4200, 600], "FDivAnn": [80, 41, 145, 196, 0], # 1 株あたり年間配当 "EPS": [310, 130, 320, 140, 50],})
df["yield_pct"] = np.where( df["C"] > 0, df["FDivAnn"] / df["C"] * 100, np.nan)df["payout_pct"] = np.where( df["EPS"] > 0, df["FDivAnn"] / df["EPS"] * 100, np.nan)df = df.assign(yield_pct=df["yield_pct"].round(2), payout_pct=df["payout_pct"].round(2))
print(df[["Code", "CoName", "C", "FDivAnn", "yield_pct", "payout_pct"]])利回りと配当性向を並べて見ると、「利回りは高いが性向も高い(持続性が怪しい)」「利回りは中程度だが性向は低い(余裕がある)」といった構造的な違いが見えます。
なお、上記サンプル値は説明用の 架空の概算 です。実値は J-Quants API の財務データから取得します(#6-6「財務情報を取得する (/fins/summary)」)。
利回りと性向の組み合わせで読む
利回りと性向の 2 軸で見ると、銘柄の性質が分類しやすくなります。
| 利回り | 性向 | 解釈の例 |
|---|---|---|
| 高 | 低 | 余裕のある高配当(継続性に余地) |
| 高 | 高 | 利益のほぼ全てを配当に回している(減配リスク) |
| 低 | 低 | 内部留保重視・成長段階 |
| 低 | 高 | 利益が薄く、配当も限られる |
ただし業種・事業ステージによって適切な水準は違います。グロース業種の若い会社は、配当を出さない方針(性向 0%)が合理的なこともあります。
DOE(株主資本配当率)も併記する
近年、配当の安定性を測る指標として DOE(Dividend on Equity) が用いられることもあります。
DOE は 利益ではなく自己資本 を分母に取るため、業績変動に左右されにくく、配当の安定度を見るのに向きます。経営方針として「DOE 3% 以上を維持」のように宣言する会社もあります。
配当データの取り扱い注意
配当データを扱うときは次の点に注意します。
- 記念配当 / 特別配当を含むかどうか を区別する
- 株式分割 / 併合 があった年の DPS は調整値かどうかを確認
- 期中の 配当方針変更 で、年間 DPS が単純合算と一致しない年がある
- 予想 DPS と確定 DPS で乖離があることがある(会社予想 → アナリスト予想 → 実績)
生成AI へのプロンプト例
配当利回りと配当性向の散布図を描きたい場合の例です。
入力 DataFrame に次の列があります(銘柄識別列は J-Quants API に準拠)。- Code (str)- CoName (str)- yield_pct (float, %)- payout_pct (float, %, 計算不能は NaN)
依頼:- 配当利回りを x 軸、配当性向を y 軸として散布図を描く- payout_pct=100 の水平線を引く- yield_pct >= 4 かつ payout_pct >= 80 の銘柄に銘柄名のラベルを付ける- タイトル・軸ラベルは日本語
要件: pandas 2.2 系 + matplotlib。関数化し、docstring は日本語。まとめ
- 配当利回りは「DPS / 株価」、配当性向は「DPS / EPS」(または「配当総額 / 純利益」)
- 配当利回りが高いだけで安全とは限らない。株価下落・性向過大・特別配当に注意
- 利回り × 性向の 2 軸で読むと持続性まで踏み込める
- 配当の安定性を測るには DOE(自己資本配当率)も併用される