請輸入期初投資金額,以及從第 1 年起每年的現金流量(當年收到的錢)。計算讓 NPV(淨現值)剛好等於 0 的折現率,也就是 IRR(內部報酬率)。
這個頁面可以做什麼
- 只要輸入期初投資金額和每年的現金流量(當年收到的錢),就能算出 IRR(內部報酬率,年化)
- 同時顯示投資期間、總報酬(整段期間的損益)和總報酬率
- 每年的金額都不一樣也能計算,也支援中途年份的追加投資(負的現金流量)
- 用 NPV(淨現值)的圖表,一眼看出 NPV 等於 0 的點,也就是 IRR 在哪裡
- 這個頁面還整理了公式的淺顯解說,以及可直接複製到 Excel、Google 試算表、Python 使用的公式
這個計算有什麼用?
「引進一台 400 萬元的機器,預計 3 年內可分別節省 100 萬、200 萬、300 萬元的成本。」以這個估計,IRR 約為每年 19.4%。公司做投資決策時,常見的用法是把 IRR 和最低要求的報酬率(門檻報酬率,例如借款利率或資金成本)比較,高於門檻就採用,這也是財務管理教科書一定會出現的內容。
不過將來的現金流量終究只是估計,實務上的訣竅是也用保守的數字算一次。
房地產投資的資金流向是「一開始買下房子,每年收租金,最後收到賣出的價款」,每年的金額都不一樣。能把這種高低不一的現金流量整合成一個年報酬率,正是 IRR 的強項,在房地產投資界被廣泛用來比較物件。
和毛租金投報率(租金 ÷ 房價)不同,連賣出的損益、空租導致租金減少的年份都能一起評估。
屋頂型太陽能發電是「一開始付設置費用,之後每年有電費節省或躉購賣電收入」,很適合用 IRR 計算的資金流向。例如設置花了 50 萬元,把每年的節省金額或售電收入排好後計算 IRR,就能用「這項設備相當於每年幾 % 報酬率的投資」,和定存、基金用同一把尺來比較。
躉購費率、電價的變化或設備的壽命等前提改變時,結果也會改變,建議用幾種情境試算看看。
在創投、私募股權等投資基金的世界,IRR 是表示基金績效的標準指標。因為「什麼時候收到資金、什麼時候還回去」每個基金都不一樣,只有考慮時間的 IRR 才能公平比較。
投資銀行或企業評估併購(M&A)時,也會用收購金額和將來的獲利計畫計算 IRR,來判斷是否執行。這是想從事金融工作的人最先學會的計算之一。
假設有投資 A 和 B,期初投資都是 1,000 萬元,5 年內收到的合計都是 1,500 萬元(總報酬 500 萬元、總報酬率 50%)。A 比較早拿回比較多(50 萬、200 萬、250 萬、400 萬、600 萬),B 則集中在後面(0、100 萬、300 萬、300 萬、800 萬)。
合計相同,但 IRR 是 A 每年 11.290%、B 每年 10.259%,錢比較早回來的 A 比較好。因為回來的錢可以拿去做下一筆投資。把這種「錢的時間價值」用數字呈現出來的,就是 IRR。
公式與圖表
符號與用語解說
符號
| IRR | I R R | Internal Rate of Return(內部報酬率)。讓 NPV 剛好等於 0 的折現率,表示這項投資每年的報酬率。(例如投資 400 萬元,3 年內收到 100 萬、200 萬、300 萬元,IRR 為每年 19.438%) |
| NPV | N P V | Net Present Value(淨現值)。把投資的資金進出全部換算成現在的價值後相加的金額。正的代表比折現率更划算的投資。 |
| \(CF_t\) | C F t | 第 \(t\) 年的現金流量。當年收到的錢(負的代表付出的錢)。 |
| \(CF_0\) | C F 0 | 第 0 年(=現在)的現金流量。期初投資是支出,所以是負值。在這個計算機輸入正的期初投資金額,計算時會當作負值處理。 |
| \(r\) | r | 折現率。把將來的錢換算成現在價值時所用的年利率。IRR 就是「讓 NPV 等於 0 的特別的 \(r\)」。 |
| \(t\) | t | 經過年數。以投資的時間點為第 0 年,表示是第幾年的錢。 |
| \(n\) | n | 投資期間(年)。表示最後一筆現金流量是第幾年。 |
| \(PV\) | P V | 現值(Present Value)。把將來的錢換算成現在價值的金額。 |
| \(S\) | S | 收到的錢合計。把第 1 年到第 \(n\) 年的現金流量全部相加的金額(追加投資以負數加入)。 |
| \(TR\) | T R | 總報酬(Total Return)。收到的合計減掉期初投資金額,也就是整段期間的損益。 |
| \(G\) | G | 總報酬率(Gross Return)。表示總報酬是期初投資金額的幾 %,是不考慮時間的「整段期間的合計 %」。另外,基金實務上的 gross return 也常指「扣除費用前的報酬」,意思不同。 |
用語
| 現金流量 | 資金的進出。收到的錢用正數、付出的錢用負數表示。計算 IRR 時,「什麼時候、多少錢」進出都很重要。 |
| 折現率 | 把將來的錢換算成現在價值(折現)時所用的年利率。例如「1 年後的 110 萬元,以年 10% 折現,相當於現在的 100 萬元」。 |
| 現值 | 把將來的錢換算成「相當於現在的多少錢」的金額。因為錢有時間價值,同樣是 100 萬元,越晚收到,現值就越小。 |
| 淨現值 | 英文縮寫 NPV。把投資的所有現金流量的現值加總的金額。正的代表「賺得比折現率多的投資」,是投資評估最基本的尺度。 |
| 內部報酬率 | 英文縮寫 IRR。讓 NPV 剛好等於 0 的折現率。能用一個數字表示這項投資「相當於每年幾 % 的報酬率」,所以廣泛用於事業投資和房地產投資的評估。 |
| 門檻報酬率 | 投資最低要求的報酬率(資金成本等)。實務上的用法是「IRR 高於門檻報酬率就採用」。 |
| 多重 IRR 問題 | 現金流量的正負號變換 2 次以上時,讓 NPV 等於 0 的折現率可能有 2 個以上的數學性質。這時無法只靠 IRR 判斷,要用 NPV 判斷。 |
| 數值方法 | 無法用移項求解的方程式,由電腦一點一點改變數值試算、逐步逼近答案的解法。IRR 就是用這種方法(二分法、牛頓法等)求出。 |
建議先了解的基礎知識
為了能「理解意義」地使用這個頁面的計算,這裡整理了建議先了解的基礎知識。
| 比率與百分率(國小高年級,10~12 歲) |
|
| 正負數(國中,12~15 歲) |
|
| 次方與指數(國中,12~15 歲) |
|
| 方程式的概念(國中,12~15 歲) |
|
| 複利與錢的時間價值(高中,15~18 歲) |
|
用 Excel 計算的方法
| t 年後收到的錢(元) | 110000 |
| 折現率(%) | 10 |
| 經過年數 t | 1 |
| 現值(元) | =B1/(1+B2/100)^B3 |
| 期初投資(以負數輸入) | -1000000 |
| 第 1 年的現金流量 | 550000 |
| 第 2 年的現金流量 | 605000 |
| 折現率(%) | 10 |
| NPV(元) | =NPV(B4/100,B2:B3)+B1 |
| 期初投資(以負數輸入) | -4000000 |
| 第 1 年的現金流量 | 1000000 |
| 第 2 年的現金流量 | 2000000 |
| 第 3 年的現金流量 | 3000000 |
| IRR(%) | =IRR(B1:B4)*100 |
| 期初投資金額 | 4000000 |
| 收到的錢合計 | 6000000 |
| 總報酬(元) | =B2-B1 |
| 總報酬率(%) | =(B2-B1)/B1*100 |
第 2 個表格的 NPV 函數有一個有名的陷阱。Excel 的 NPV 函數範圍只能放「第 1 年以後」的錢,期初投資(第 0 年)要在函數外面加,這才是正確的用法(例子剛好等於 0)。
第 1 個表格剛好是 100,000 元,第 4 個表格的總報酬是 2,000,000 元、總報酬率 50%。只要把 B 欄改成自己的數字就能使用。
用 Google 試算表計算的方法
| t 年後收到的錢(元) | 110000 |
| 折現率(%) | 10 |
| 經過年數 t | 1 |
| 現值(元) | =B1/(1+B2/100)^B3 |
| 期初投資(以負數輸入) | -1000000 |
| 第 1 年的現金流量 | 550000 |
| 第 2 年的現金流量 | 605000 |
| 折現率(%) | 10 |
| NPV(元) | =NPV(B4/100,B2:B3)+B1 |
| 期初投資(以負數輸入) | -4000000 |
| 第 1 年的現金流量 | 1000000 |
| 第 2 年的現金流量 | 2000000 |
| 第 3 年的現金流量 | 3000000 |
| IRR(%) | =IRR(B1:B4)*100 |
| 期初投資金額 | 4000000 |
| 收到的錢合計 | 6000000 |
| 總報酬(元) | =B2-B1 |
| 總報酬率(%) | =(B2-B1)/B1*100 |
用 Python 計算的方法
initial_investment = 4000000 # 期初投資金額(元)
cash_flows = [1000000, 2000000, 3000000] # 從第 1 年起每年的現金流量(元)
# NPV(淨現值):把每一筆現金流量換算成現在的價值後相加
def npv(rate, cfs):
return sum(cf / (1 + rate) ** t for t, cf in enumerate(cfs))
cfs = [-initial_investment] + cash_flows
# 用二分法找出讓 NPV 等於 0 的折現率(IRR)
# (適用於正負號只變換一次的一般投資的簡易版)
low, high = -0.9999, 10.0
for _ in range(200):
mid = (low + high) / 2
if npv(low, cfs) * npv(mid, cfs) <= 0:
high = mid
else:
low = mid
irr = (low + high) / 2
total_return = sum(cash_flows) - initial_investment
gross_return = total_return / initial_investment * 100
print(f"IRR:{irr * 100:.3f}%")
print(f"總報酬:{total_return} 元")
print(f"總報酬率:{gross_return:.3f}%")
用 LaTeX 等數學式語言的寫法(可直接複製)
PV = CFₜ ÷ (1 + r)ᵗ
PV = \dfrac{CF_t}{(1+r)^{t}}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>PV</mi>
<mo>=</mo>
<mfrac>
<msub><mi>CF</mi><mi>t</mi></msub>
<msup>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>r</mi><mo>)</mo></mrow>
<mi>t</mi>
</msup>
</mfrac>
</mrow>
</math>
PV = (CF_t) / ((1 + r)^t)
cf/(1 + r)^t
PV := cf/(1 + r)^t;
PV = cf/(1 + r)^t;
PV = CF_t/(1 + r)^t
NPV = CF₀ + CF₁/(1 + r)¹ + … + CFₙ/(1 + r)ⁿ
\mathrm{NPV} = \sum_{t=0}^{n} \dfrac{CF_t}{(1+r)^{t}}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>NPV</mi>
<mo>=</mo>
<munderover>
<mo>∑</mo>
<mrow><mi>t</mi><mo>=</mo><mn>0</mn></mrow>
<mi>n</mi>
</munderover>
<mfrac>
<msub><mi>CF</mi><mi>t</mi></msub>
<msup>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>r</mi><mo>)</mo></mrow>
<mi>t</mi>
</msup>
</mfrac>
</mrow>
</math>
NPV = sum_(t=0)^n (CF_t) / ((1 + r)^t)
Sum[cf[t]/(1 + r)^t, {t, 0, n}]
NPV := sum(cf(t)/(1 + r)^t, t = 0 .. n);
NPV = sum(cf ./ (1 + r).^(0:n));
NPV = ∑_(t=0)^n CF_t/(1 + r)^t
CF₀ + CF₁/(1 + IRR)¹ + … + CFₙ/(1 + IRR)ⁿ = 0
\sum_{t=0}^{n} \dfrac{CF_t}{(1+\mathrm{IRR})^{t}} = 0
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<munderover>
<mo>∑</mo>
<mrow><mi>t</mi><mo>=</mo><mn>0</mn></mrow>
<mi>n</mi>
</munderover>
<mfrac>
<msub><mi>CF</mi><mi>t</mi></msub>
<msup>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>IRR</mi><mo>)</mo></mrow>
<mi>t</mi>
</msup>
</mfrac>
<mo>=</mo>
<mn>0</mn>
</mrow>
</math>
sum_(t=0)^n (CF_t) / ((1 + IRR)^t) = 0
Solve[Sum[cf[t]/(1 + x)^t, {t, 0, n}] == 0, x]
solve(sum(cf(t)/(1 + x)^t, t = 0 .. n) = 0, x);
solve(sum(cf ./ (1 + x).^(0:n)) == 0, x)
∑_(t=0)^n CF_t/(1 + IRR)^t = 0
G = (S − C₀) ÷ C₀
G = \dfrac{S - C_0}{C_0}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>G</mi>
<mo>=</mo>
<mfrac>
<mrow><mi>S</mi><mo>−</mo><msub><mi>C</mi><mn>0</mn></msub></mrow>
<msub><mi>C</mi><mn>0</mn></msub>
</mfrac>
</mrow>
</math>
G = (S - C_0) / C_0
(s - c0)/c0
G := (s - c0)/c0;
G = (s - c0)/c0;
G = (S − C_0)/C_0
請 ChatGPT 幫忙計算的方法
你是投資計算助理。請務必實際執行 Python 程式碼來進行下列計算,並且只根據執行結果的數值回答(不要用心算或推測回答)。 我投資了新臺幣 400 萬元,第 1 年收到 100 萬元、第 2 年收到 200 萬元、第 3 年收到 300 萬元。 請分別求出下列的值: 1. IRR(內部報酬率,%,小數 3 位)= 讓 NPV(r) = -4000000 + 1000000/(1+r) + 2000000/(1+r)^2 + 3000000/(1+r)^3 等於 0 的 r 2. 總報酬(元) 3. 總報酬率(%,小數 3 位) 請列出計算時使用的公式,以及執行結果的數值。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權