自己資本比率は、企業の 財務健全性 を見るための入り口となる指標です。本記事では自己資本比率・流動比率・有利子負債依存度などの定義と読み方を整理し、pandas で組み合わせて使うコード例を示します。

目次

  1. 自己資本比率とは
  2. 業種で水準が違う
  3. 流動比率と当座比率
  4. 有利子負債依存度
  5. 単一銘柄を計算する
  6. 複数銘柄を pandas で一括計算する
  7. 指標の組み合わせで見る
  8. 業種中央値と比較する
  9. 倒産リスクの簡易チェック
  10. 時系列で悪化を追う

自己資本比率とは

自己資本比率(Equity Ratio)は「総資産のうち、何%が自己資本(返済不要の資金)で賄われているか」を表します。

自己資本比率=自己資本総資産×100(%)\text{自己資本比率} = \frac{\text{自己資本}}{\text{総資産}} \times 100\,(\%)

たとえば総資産 1,000 億円、自己資本 400 億円なら、自己資本比率 = 40%。残り 60% は負債で賄っているという意味です。

自己資本比率が高いほど、借入への依存度が低く、業績悪化や金利上昇に対する 耐久力 が強いと解釈されます。

業種で水準が違う

自己資本比率の 適切な水準 は業種で大きく違います。

業種自己資本比率の傾向
銀行5〜10% 前後(預金が負債に分類されるため)
製造業30〜60% 程度が多い
不動産20〜40% 程度(借入を使った投資が多い)
IT・サービス50〜70% 以上もある

「30% 以上が安全」と一律の基準で語ると、銀行や不動産の業態を見誤ります。業種を揃えた比較 が前提になります。

流動比率と当座比率

短期の支払い能力を見る指標として、流動比率と当座比率があります。

流動比率

流動比率=流動資産流動負債×100(%)\text{流動比率} = \frac{\text{流動資産}}{\text{流動負債}} \times 100\,(\%)

1 年以内に現金化できる資産が、1 年以内に支払う負債の何倍あるかを示します。一般に 150% 以上 が一つの目安とされますが、業種・事業モデルで変わります。

当座比率

当座比率=当座資産流動負債×100(%)\text{当座比率} = \frac{\text{当座資産}}{\text{流動負債}} \times 100\,(\%)

当座資産は流動資産から 棚卸資産(在庫) を除いたもの。在庫を除外することで、より厳しめの支払い能力を測れます。100% 以上 が目安とされます。

有利子負債依存度

借入金・社債など、利息が発生する負債 の比率を見る指標です。

有利子負債依存度=有利子負債総資産×100(%)\text{有利子負債依存度} = \frac{\text{有利子負債}}{\text{総資産}} \times 100\,(\%)

または D/E レシオ(Debt to Equity) として、

D/E=有利子負債自己資本\text{D/E} = \frac{\text{有利子負債}}{\text{自己資本}}

の形で見ることも多くあります。D/E が 1 を超えると、自己資本より有利子負債のほうが大きい状態です。金利上昇局面で耐久力が落ちます。

単一銘柄を計算する

サンプル値で計算する例です。

def equity_ratio(equity: float, assets: float) -> float | None:
"""自己資本比率(%)を返す。"""
if assets is None or assets <= 0:
return None
return equity / assets * 100
def current_ratio(current_assets: float, current_liab: float) -> float | None:
"""流動比率(%)を返す。"""
if current_liab is None or current_liab <= 0:
return None
return current_assets / current_liab * 100
def de_ratio(debt: float, equity: float) -> float | None:
"""D/E(倍)を返す。"""
if equity is None or equity <= 0:
return None
return debt / equity
print(round(equity_ratio(400, 1000), 2)) # 40.0
print(round(current_ratio(600, 400), 2)) # 150.0
print(round(de_ratio(500, 400), 3)) # 1.25

自己資本がマイナス(債務超過)の場合、D/E は計算不能扱いにしておくのが安全です。

複数銘柄を pandas で一括計算する

import numpy as np
import pandas as pd
df = pd.DataFrame({
"Code": ["1301", "1302", "1303", "1304", "1305"],
"TA": [1000, 1500, 2000, 500, 1200],
"Eq": [ 600, 400, 150, 300, -50], # 1305 は債務超過
"current_assets": [ 400, 500, 800, 200, 500],
"current_liab": [ 200, 600, 900, 100, 600],
"interest_debt": [ 200, 500, 1200, 100, 800],
})
df["equity_ratio"] = np.where(df["TA"] > 0,
df["Eq"] / df["TA"] * 100, np.nan)
df["current_ratio"] = np.where(df["current_liab"] > 0,
df["current_assets"] / df["current_liab"] * 100, np.nan)
df["de_ratio"] = np.where(df["Eq"] > 0,
df["interest_debt"] / df["Eq"], np.nan)
df["debt_dep"] = np.where(df["TA"] > 0,
df["interest_debt"] / df["TA"] * 100, np.nan)
cols = ["Code", "equity_ratio", "current_ratio", "de_ratio", "debt_dep"]
print(df[cols].round(2))

債務超過の銘柄(1305)は、equity_ratio が負・de_ratioNaN になり、後段の集計で扱いやすくなります。なお、上記サンプル値は説明用の 架空の概算 です。実値は J-Quants API の財務データから取得します(#6-6「財務情報を取得する (/fins/summary)」)。

指標の組み合わせで見る

財務健全性は単独の指標で判断せず、複数を組み合わせて見ます。

自己資本比率流動比率D/E解釈の例
余裕のある財務
在庫過多 / 売掛回収遅延などキャッシュ循環の懸念
借入で投資中。事業モデルが許容するか要確認
短期支払いと長期借入の両面で警戒水準

「全部高ければ良い」「低ければ危ない」と単純化するのではなく、事業モデルに対して妥当な水準か を考えます。例えば不動産事業では D/E が高いのが標準で、低い方が逆に資金効率の悪さを意味することもあります。

業種中央値と比較する

業種ごとの中央値と並べて、相対的な位置を見ます。

df["S33Nm"] = ["製造業", "製造業", "不動産", "IT", "製造業"]
sector_med = (
df.dropna(subset=["equity_ratio"])
.groupby("S33Nm")["equity_ratio"]
.median()
)
df["sector_median_eq_ratio"] = df["S33Nm"].map(sector_med).round(2)
df["eq_ratio_vs_sector"] = (df["equity_ratio"] - df["sector_median_eq_ratio"]).round(2)
print(df[["Code", "S33Nm", "equity_ratio", "sector_median_eq_ratio", "eq_ratio_vs_sector"]])

eq_ratio_vs_sector がマイナスなら、業種平均より自己資本比率が低い銘柄、ということが分かります。

倒産リスクの簡易チェック

財務健全性の観点から、最低限のスクリーニング条件を例示します。

mask_safe = (
(df["equity_ratio"] >= 30) &
(df["current_ratio"] >= 100) &
(df["de_ratio"].fillna(np.inf) <= 1.0) &
(df["Eq"] > 0) # 債務超過を除外
)
print(df[mask_safe][["Code", "S33Nm"]])

これは 教育目的の簡易フィルタ で、これに通れば倒産しないという保証ではありません。実務では営業キャッシュフロー・利息カバレッジ・社債格付けなど、別の指標も併用します。

時系列で悪化を追う

財務健全性は トレンド で見ると変化が分かりやすくなります。3〜5 年分の自己資本比率・D/E を時系列で並べることで、悪化が継続的かを判断できます。

# サンプル: 銘柄 A の 5 年分の自己資本比率
yearly = pd.DataFrame({
"year": [2020, 2021, 2022, 2023, 2024],
"equity_ratio": [55, 50, 45, 40, 35],
})
print(yearly)
# 単年の水準より、徐々に下がっていることのほうが本質的なシグナル

「水準が低い」より「年々下がっている」のほうが、本質的な悪化のシグナルになることがあります。

生成AI へのプロンプト例

自己資本比率・流動比率・D/E を 1 ページにまとめるダッシュボード関数を依頼する例です。

入力 DataFrame に次の列があります(銘柄識別列は J-Quants API に準拠)。
- Code (str)
- CoName (str)
- S33Nm (str)
- equity_ratio (float, %)
- current_ratio (float, %)
- de_ratio (float, 倍)
依頼: 健全性スコアを 0〜100 で算出する関数 fin_health_score(df) を書いてください。
スコアの構成(均等重み):
- equity_ratio: 業種中央値以上で +33 点、未満で按分
- current_ratio: 150 以上で +33 点、未満で按分
- de_ratio: 0.5 以下で +34 点、超過分は按分減点(2.0 で 0 点)
要件:
- pandas 2.2 系
- 戻り値は元の列にスコア列を加えた DataFrame
- 教育目的のサンプル指標である旨をコメントで明記
- docstring は日本語

まとめ

  • 自己資本比率は「自己資本 / 総資産」。業種で水準が違うため業種を揃えて比較する
  • 流動比率・D/E などと組み合わせて見ると解像度が上がる
  • 自己資本がマイナス(債務超過)は計算不能扱いで除外する
  • 単年の水準より、3〜5 年のトレンドが本質的なシグナルになる
  • 簡易スクリーニング条件は教育目的。倒産しない保証ではない