假如你是一家公司的CEO爬立,現(xiàn)在有兩個項目提案擺在你面前钾唬,你該如何抉擇呢?
本文將介紹項目決策中三種常用的盈利能力分析方法侠驯,它們分別是
- 凈現(xiàn)值(Net Present Value抡秆,NPV)
- 內(nèi)部回報率(Internal Rate of Return,IRR)
- 約當(dāng)年金(Equivalent Annual Annuity吟策,EAA)
并使用Python中的函數(shù)來進行計算儒士。
凈現(xiàn)值(NPV)和加權(quán)平均資本成本(WACC)
凈現(xiàn)值是一項投資所產(chǎn)生的未來現(xiàn)金流的折現(xiàn)值與項目投資成本之間的差值。
在上一篇文章《貨幣的時間價值》最后一節(jié)中檩坚,我們在評估兩個項目時就使用了凈現(xiàn)值的方法着撩,不過是將通貨膨脹率作為折現(xiàn)率來計算的。
在實際情況下匾委,比如你是一家新公司的CEO拖叙,該公司有未償還的債務(wù)和融資成本,這時你就必須進行調(diào)整赂乐,使用加權(quán)平均資本成本(WACC)作為折現(xiàn)率薯鳍。
WACC在金融活動中用來衡量一個公司的資本成本。它的計算公式如下:
其參數(shù)定義如下:
- 是公司通過股權(quán)融資的比例挨措。
- 是公司通過債務(wù)融資的比例挖滤。
- 是股權(quán)成本。
- 是債務(wù)成本运嗜。
- 是公司稅率壶辜。
我們來做一個估算WACC的練習(xí),假如你為公司項目提供1百萬的貸款担租,這是貴公司唯一未償還債務(wù)砸民,剩余資金來自股權(quán)的市場價值楣导,也是1百萬松逊。股權(quán)成本是0.18,債務(wù)成本是0.12,公司稅率是0.35肉康。
# 設(shè)置債務(wù)的的市場價
mval_debt = 1000000
# 設(shè)置股權(quán)的的市場價
mval_equity = 1000000
# 計算總投資額
mval_total = mval_debt + mval_equity
# 計算債務(wù)融資比例
percent_debt = mval_debt / mval_total
# 計算股權(quán)融資比例
percent_equity = mval_equity / mval_total
# 設(shè)置股權(quán)成本
cost_equity = 0.18
# 設(shè)置債務(wù)成本
cost_debt = 0.12
# 設(shè)置公司稅率
tax_rate = 0.35
# 計算WACC
wacc = percent_equity * cost_equity \
+ percent_debt * cost_debt * (1 - tax_rate)
print("WACC: " + str(round(100*wacc, 2)) + "%")
WACC: 12.9%
現(xiàn)在你的項目經(jīng)理為每個提案預(yù)測了現(xiàn)金流。項目1有更高的短期回報憔四,但項目2的遠期回報更大伐憾。兩項目預(yù)測的現(xiàn)金流如下(單位是1000):
年份 | 項目1 | 項目2 |
---|---|---|
1 | -1,000 | -1,000 |
2 | 200 | 150 |
3 | 250 | 225 |
4 | 300 | 300 |
5 | 350 | 375 |
6 | 400 | 425 |
7 | 450 | 500 |
8 | 500 | 575 |
9 | 550 | 600 |
10 | 600 | 625 |
讓我們基于WACC來計算凈現(xiàn)值,使用NumPy中的.npv()
函數(shù)秒际。
numpy.npv(rate, values)
- rate:折現(xiàn)率
- values: 現(xiàn)金流
import numpy as np
# 創(chuàng)建NumPy數(shù)組儲存項目1的現(xiàn)金流
cf_project_1 = np.array([-1000, 200, 250, 300, 350, 400, 450, 500, 550, 600])
# 創(chuàng)建NumPy數(shù)組儲存項目1的現(xiàn)金流
cf_project_2 = np.array([-1000, 150, 225, 300, 375, 425, 500, 575, 600, 625])
# 乘上單位1000
cf_project1 = cf_project_1 * 1000
cf_project2 = cf_project_2 * 1000
# 計算項目1的凈現(xiàn)值
npv_project1 = np.npv(rate=wacc, values=cf_project1)
print("項目1的凈現(xiàn)值:" + str(round(npv_project1, 2)))
# 計算項目2的凈現(xiàn)值
npv_project2 = np.npv(rate=wacc, values=cf_project2)
print("項目2的凈現(xiàn)值:" + str(round(npv_project2, 2)))
項目1的凈現(xiàn)值:856073.18
項目2的凈現(xiàn)值:904741.35
如果僅基于凈現(xiàn)值來做決策悬赏,項目2會是更好的選擇。
內(nèi)部回報率(IRR)
如果兩個項目體量相差很大的話娄徊,凈現(xiàn)值并不是一個好的衡量標(biāo)準(zhǔn)闽颇。這時我們可以使用內(nèi)部回報率來衡量。
內(nèi)部回報率寄锐,也稱內(nèi)部收益率(Internal Rate of Return兵多,IRR),是一種投資的評估方法橄仆,也就是找出資產(chǎn)潛在的回報率剩膘,其原理是利用內(nèi)部回報率折現(xiàn),投資的凈現(xiàn)值恰好等于零盆顾。
IRR的手工計算比較復(fù)雜怠褐,我們可以使用NumPy中的 numpy.irr(values)
函數(shù)輕松計算,參數(shù) values
代表的是現(xiàn)金流椎扬。
我們根據(jù)上一節(jié)中給出的兩項目的現(xiàn)金流來計算IRR:
# 計算項目1的內(nèi)部回報率
irr_project1 = np.irr(cf_project1)
print("項目1的IRR: " + str(round(100*irr_project1, 2)) + "%")
# 計算項目1的內(nèi)部回報率
irr_project2 = np.irr(cf_project2)
print("項目2的IRR: " + str(round(100*irr_project2, 2)) + "%")
項目1的IRR: 28.92%
項目2的IRR: 28.78%
如果只是基于內(nèi)部回報率來做決策惫搏,那么項目1更有優(yōu)勢。
約當(dāng)年金(EAA)
假設(shè)你公司的董事會決定轉(zhuǎn)向初始投資較低的短期項目蚕涤。項目經(jīng)理給出了兩個新想法筐赔,預(yù)測的現(xiàn)金流如下:
年份 | 項目1 | 項目2 |
---|---|---|
1 | -700 | -400 |
2 | 100 | 50 |
3 | 150 | 100 |
4 | 200 | 150 |
5 | 250 | 200 |
6 | 300 | 250 |
7 | 350 | 300 |
8 | 400 | 無 |
讓我們使用上兩節(jié)介紹的方法來計算這兩個新項目的內(nèi)部回報率IRR和凈現(xiàn)值NPV。
cf_project_1 = np.array([-700, 100, 150, 200, 250, 300, 350, 400])
cf_project_2 = np.array([-400, 50, 100, 150, 200, 250, 300])
cf_project1 = cf_project_1 * 1000
cf_project2 = cf_project_2 * 1000
irr_project1 = np.irr(cf_project1)
print("項目1的IRR: " + str(round(100*irr_project1, 2)) + "%")
irr_project2 = np.irr(cf_project2)
print("項目2的IRR: " + str(round(100*irr_project2, 2)) + "%")
npv_project1 = np.npv(rate=wacc, values=cf_project1)
print("項目1的NPV: " + str(round(npv_project1, 2)))
npv_project2 = np.npv(rate=wacc, values=cf_project2)
print("項目2的NPV: " + str(round(npv_project2, 2)))
項目1的IRR: 22.94%
項目2的IRR: 26.89%
項目1的NPV: 302744.98
項目2的NPV: 231228.39
如果基于內(nèi)部回報率決策揖铜,優(yōu)選項目2茴丰;但如果基于凈現(xiàn)值決策,那么項目1更好天吓』呒纾可是到底該如何抉擇呢?
經(jīng)仔細觀察龄寞,我們發(fā)現(xiàn)這兩個項目具有不同的生命周期汰规,那么使用約當(dāng)年金(Equivalent Annual Annuity,EAA)的方法會更有效物邑。
約當(dāng)年金法是把生命周期為N年的現(xiàn)金流貼現(xiàn)到第1年年初溜哮,并用該現(xiàn)值等價成一個N年期的年金滔金,從而得到的年金金額即為約當(dāng)年金。
在Python中茂嗓,使用 numpy.pmt()
函數(shù)計算約當(dāng)年金餐茵。
numpy.pmt(rate, nper, pv, fv)
- rate: 折現(xiàn)率
- nper: 投資時間
- pv: 現(xiàn)值
- fv: 未來價值
# 計算項目1的EAA
eaa_project1 = np.pmt(rate=wacc, nper=8, pv=-npv_project1, fv=0)
print("項目1的EAA: " + str(round(eaa_project1, 2)))
# 計算項目2的EAA
eaa_project2 = np.pmt(rate=wacc, nper=7, pv=-npv_project2, fv=0)
print("項目2的EAA: " + str(round(eaa_project2, 2)))
項目1的EAA: 62872.2
項目2的EAA: 52120.61
如果僅基于約當(dāng)年金來決策,我們會選擇項目1述吸。
小結(jié)
本文介紹了三種評估項目盈利能力的方法忿族,分別是凈現(xiàn)值(NPV)、內(nèi)部回報率(IRR)和約當(dāng)年金(EAA)蝌矛。
它們在Python中的計算函數(shù)如下:
#計算凈現(xiàn)值NPV
numpy.npv(rate, values)
#計算內(nèi)部回報率IRR
numpy.irr(values)
# 計算約當(dāng)年金EAA
numpy.pmt(rate, nper, pv, fv)
另外還學(xué)習(xí)了加權(quán)平均資本成本(WACC)這一概念道批,它的計算公式如下:
注:本文是DataCamp課程Intro to Financial Concepts using Python的學(xué)習(xí)筆記。
更多該課程的筆記: