數據驅動的財務決策 —— 帶著Python玩金融(2

假如你是一家公司的CEO,現在有兩個項目提案擺在你面前,你該如何抉擇呢?

本文將介紹項目決策中三種常用的盈利能力分析方法,它們分別是

  • 凈現值(Net Present Value,NPV)
  • 內部回報率(Internal Rate of Return,IRR)
  • 約當年金(Equivalent Annual Annuity,EAA)

并使用Python中的函數來進行計算。

凈現值(NPV)和加權平均資本成本(WACC)

凈現值是一項投資所產生的未來現金流的折現值與項目投資成本之間的差值。
在上一篇文章《貨幣的時間價值》最后一節中,我們在評估兩個項目時就使用了凈現值的方法,不過是將通貨膨脹率作為折現率來計算的。

在實際情況下,比如你是一家新公司的CEO,該公司有未償還的債務和融資成本,這時你就必須進行調整,使用加權平均資本成本(WACC)作為折現率。

WACC在金融活動中用來衡量一個公司的資本成本。它的計算公式如下:

WACC = F_{Equity} * C_{Equity} + F_{Debt} * C_{Debt} * (1-TR)

其參數定義如下:

  • F_{Equity} 是公司通過股權融資的比例。
  • F_{Debt}是公司通過債務融資的比例。
  • C_{Equity}是股權成本。
  • C_{Debt}是債務成本。
  • TR是公司稅率。

我們來做一個估算WACC的練習,假如你為公司項目提供1百萬的貸款,這是貴公司唯一未償還債務,剩余資金來自股權的市場價值,也是1百萬。股權成本是0.18,債務成本是0.12,公司稅率是0.35。

# 設置債務的的市場價
mval_debt = 1000000
# 設置股權的的市場價
mval_equity = 1000000
# 計算總投資額
mval_total = mval_debt + mval_equity

# 計算債務融資比例
percent_debt = mval_debt / mval_total
# 計算股權融資比例
percent_equity = mval_equity / mval_total

# 設置股權成本
cost_equity = 0.18
# 設置債務成本
cost_debt = 0.12
# 設置公司稅率
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%

現在你的項目經理為每個提案預測了現金流。項目1有更高的短期回報,但項目2的遠期回報更大。兩項目預測的現金流如下(單位是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來計算凈現值,使用NumPy中的.npv()函數。

numpy.npv(rate, values)

  • rate:折現率
  • values: 現金流
import numpy as np

# 創建NumPy數組儲存項目1的現金流
cf_project_1 = np.array([-1000, 200, 250, 300, 350, 400, 450, 500, 550, 600])

# 創建NumPy數組儲存項目1的現金流
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的凈現值
npv_project1 = np.npv(rate=wacc, values=cf_project1)
print("項目1的凈現值:" + str(round(npv_project1, 2)))

# 計算項目2的凈現值
npv_project2 = np.npv(rate=wacc, values=cf_project2)
print("項目2的凈現值:" + str(round(npv_project2, 2)))
項目1的凈現值:856073.18
項目2的凈現值:904741.35

如果僅基于凈現值來做決策,項目2會是更好的選擇。

內部回報率(IRR)

如果兩個項目體量相差很大的話,凈現值并不是一個好的衡量標準。這時我們可以使用內部回報率來衡量。
內部回報率,也稱內部收益率(Internal Rate of Return,IRR),是一種投資的評估方法,也就是找出資產潛在的回報率,其原理是利用內部回報率折現,投資的凈現值恰好等于零。

IRR的手工計算比較復雜,我們可以使用NumPy中的 numpy.irr(values) 函數輕松計算,參數 values 代表的是現金流。

我們根據上一節中給出的兩項目的現金流來計算IRR:

# 計算項目1的內部回報率
irr_project1 = np.irr(cf_project1)
print("項目1的IRR: " + str(round(100*irr_project1, 2)) + "%")

# 計算項目1的內部回報率
irr_project2 = np.irr(cf_project2)
print("項目2的IRR: " + str(round(100*irr_project2, 2)) + "%")
項目1的IRR: 28.92%
項目2的IRR: 28.78%

如果只是基于內部回報率來做決策,那么項目1更有優勢。

約當年金(EAA)

假設你公司的董事會決定轉向初始投資較低的短期項目。項目經理給出了兩個新想法,預測的現金流如下:

年份 項目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

讓我們使用上兩節介紹的方法來計算這兩個新項目的內部回報率IRR和凈現值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

如果基于內部回報率決策,優選項目2;但如果基于凈現值決策,那么項目1更好。可是到底該如何抉擇呢?

經仔細觀察,我們發現這兩個項目具有不同的生命周期,那么使用約當年金(Equivalent Annual Annuity,EAA)的方法會更有效。
約當年金法是把生命周期為N年的現金流貼現到第1年年初,并用該現值等價成一個N年期的年金,從而得到的年金金額即為約當年金。

在Python中,使用 numpy.pmt() 函數計算約當年金。

numpy.pmt(rate, nper, pv, fv)

  • rate: 折現率
  • nper: 投資時間
  • pv: 現值
  • 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

如果僅基于約當年金來決策,我們會選擇項目1。

小結

本文介紹了三種評估項目盈利能力的方法,分別是凈現值(NPV)、內部回報率(IRR)和約當年金(EAA)。
它們在Python中的計算函數如下:

#計算凈現值NPV
numpy.npv(rate, values)

#計算內部回報率IRR
numpy.irr(values)

# 計算約當年金EAA
numpy.pmt(rate, nper, pv, fv)

另外還學習了加權平均資本成本(WACC)這一概念,它的計算公式如下:

WACC = F_{Equity} * C_{Equity} + F_{Debt} * C_{Debt} * (1-TR)


注:本文是DataCamp課程Intro to Financial Concepts using Python的學習筆記。
更多該課程的筆記:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容