株価から「織り込まれた成長率」をPythonで逆算する
理論株価を計算するとき、いちばん悩むのが「成長率を何%に置くか」です。ここで答えがコロコロ変わるので、決め打ちしづらい。
そこで発想を逆にして、「今の株価が成り立つには、何%成長が必要か?」をPythonで逆算してみます。株価が織り込んでいる“期待値”が数字で見えるようになります。
考え方:理論株価の式を成長率について解く
配当割引モデル(DDM)の基本式:
理論株価 P = 配当D ÷ (期待利回り r − 成長率 g)
これを g について解くと、
織り込まれた成長率 g = r − (D ÷ P)
つまり「今の株価・配当・期待利回り」から、市場が前提にしている永続成長率が求められます。
実装:implied growth(DDMベース)
def implied_growth_ddm(price, dividend, required_return):
"""株価が織り込む永続成長率 g = r - D/P"""
if price <= 0:
return None
return required_return - dividend / price
# 例:株価2,500円・配当100円・期待利回り6%
g = implied_growth_ddm(2500, 100, 0.06)
print(f"織り込まれた成長率: {g:.1%}") # → 2.0%
「年2%成長が前提」なら、その会社に2%成長が現実的かを問えます。
逆算値が高すぎる(例:年12%)なら、その株価は強気な期待を織り込んでいる=割高寄り、と読めます。
PERベースでも逆算できる
利益ベースで「この株価を正当化するのに必要な利益成長」を概算するなら、配当性向を使ったゴードンモデルの変形が使えます。
def implied_growth_per(price, eps, payout, required_return):
"""P = EPS*payout*(1+g)/(r-g) を g について解く"""
d1 = eps * payout # 来期配当の近似
# P*(r-g) = d1*(1+g) → g = (P*r - d1) / (P + d1)
return (price * required_return - d1) / (price + d1)
g2 = implied_growth_per(3000, 200, 0.4, 0.07)
print(f"PERベースの織り込み成長率: {g2:.1%}")
※前提(期待利回り・配当性向)で結果は動きます。1点で信じず、レンジで見るのが安全です。
「期待は現実的か?」を判定に使う
逆算した g を、実績の成長率と比べると判断材料になります。
def judge(implied_g, historical_g):
gap = implied_g - historical_g
if gap > 0.05:
return "割高寄り(実績より高い成長を織り込み)"
if gap < -0.02:
return "割安寄り(控えめな期待)"
return "妥当な範囲"
print(judge(0.10, 0.03)) # → 割高寄り
「逆算したら年10%成長が前提。でも過去実績は年3%」なら、その期待のハードルは高い、と冷静に評価できます。
注意点
- 逆算は前提(r・payout・配当)で変わる“対話の道具”。絶対値ではない。
- 無配企業はDDMベースが使えない → PER/FCFベースを使う。
- r(期待利回り)はCAPM等で出してもよいが、まずは6〜8%程度の固定値で感度を見るだけでも十分実用的。
まとめ
- 理論株価の式を逆に解くと、株価が織り込む成長率が出る
-
g = r − D/P(DDM)や、配当性向を使ったPERベースで実装できる - 逆算値 vs 実績成長率の差で「期待が現実的か」を判定できる
以上です。高PER株を「高いから」で切らず、「織り込まれた期待が妥当か」で見られるようになります。参考になれば幸いです。
※また、コードで自由にやるのも楽しいけど、毎回は面倒。GUIで完結させたい人は、よければ作ったツールも触ってみてください!
▶ Ha-Co-Va 株価分析ツール
https://hacova-store.com