#1 目的
CAGRの説明とCAGRを計算するコードを記載する。
#2 内容
#2-1 Returnの定義
ある株式銘柄の価格について、当日の終値を$S_{i}$と表し、前日の終値を$S_{i-1}$と表すときに
変化率$c_{i}$は下記式(1)で定義する。
c_{i} = \biggl({\frac{S_i}{S_{i-1}}} \biggl) \tag{1}
基準日からn営業日のReturn($R_{n}$と表現)を下記式(2)で定義します。
R_{n} = \prod_{i=1}^{n} (1+c_{i}) \tag{2}
#2-2 CAGRの計算式
基準日からn営業日のCAGRを下記式(3)で定義します。
CAGR(n) = R_{n}^{1/years}-1 \tag{3}
ただし、years= n/(1年間の取引日総数) となる。
#2-3 CAGRの意味は?
CAGR(年平均成長率)とは、複数年にわたる成長率から、1年あたりの幾何平均を求めたもの。
例えば、100百万円の売上高が3年間で160百万円に伸びたときの、3年間の平均成長率を考える。
この問題に対して、3年間で160÷100=1.6 すなわち60%増だから、1年あたりの平均成長率は60÷3=20で20%という考え方は誤りである。一般のビジネスの考え方では年平均成長率というとき、複利の考え方を前提にしており、100×(1+x)×(1+x)×(1+x)=160となるようなxを求めないといけない。
従って、3√1.6=1.1696・・・ すなわち17.0%が正解となる。
出典:https://mba.globis.ac.jp/about_mba/glossary/detail-11621.html
#2-4 CAGR計算するコード
#CAGR(年率成長率)を計算する
def CAGR(DF):
df = DF.copy()
df["daily_ret"] = DF["Close"].pct_change() #株価終値の前日との変化率を計算する。
df["cum_return"] = (1 + df["daily_ret"]).cumprod() #cumprod(全要素の累積積を スカラーyに返します.
n = len(df)/252
CAGR = (df["cum_return"][-1])**(1/n) - 1
return CAGR