計算根拠を公開
CAGRの計算方法と前提
別のCAGR計算機と結果が合わないとき、私は小数点の丸めより先に、期間の数え方と日付規約を確認します。このページでは、このサイトが実際に使う計算ルールをまとめています。
標準CAGR
開始値BV、終了値EV、経過年数nから、一定の複利年率を求めます。終了値が開始値より小さければマイナスCAGRも有効です。
CAGR = (EV ÷ BV)^(1 ÷ n) − 1
逆算
同じ関係式を変形し、将来価値、開始値、必要期間を求めます。私は実装のテストでも、CAGRを出した後に逆算して元の値へ戻るかを確認します。
FV = PV × (1 + CAGR)^n / PV = FV ÷ (1 + CAGR)^n / n = ln(FV ÷ PV) ÷ ln(1 + CAGR)
年・月・日を手入力した場合
通常入力では年に、月÷12と日÷365を加えます。月数と日数を同時に入力した場合も同じルールです。
経過年数 = 年 + 月 ÷ 12 + 日 ÷ 365
実日付はACT/365 Fixed
実日付モードでは開始日と終了日の実際の経過日数をUTCベースで数え、365で割ります。夏時間による時差で日数がずれないように日付として扱います。
ACT/365 Fixedはこのサイトの明示的な選択です。別のツールがActual/Actualなどを使えば、小数年が少し変わり、CAGRにも差が出ます。
精度と表示
計算途中では表示桁に丸めず、JavaScriptの倍精度浮動小数点で処理します。画面では割合を主に4桁程度、通常の大きな値を2桁程度へ丸めて見せます。表示の丸めは内部の成長チャート計算を変更しません。
入力チェック
開始値を分母に使う標準CAGRでは開始値を0より大きくします。経過期間も0より大きい必要があります。実日付では終了日が開始日より後でなければなりません。
- 標準CAGRの開始値 > 0
- 経過期間 > 0
- 終了日は開始日より後
- 定義できない逆算はInfinityなどを返さずエラーにする
- 過度に長い成長系列はブラウザ負荷を抑える
CAGRが測らないもの
CAGRは二つのエンドポイントを平滑化した年率です。ボラティリティ、最大下落、税金、手数料、インフレ、途中入出金のタイミングは測りません。私は途中の資金移動が重要ならIRR/XIRRを検討します。