Python利用最優化演算法求解投資內部收益率IRR【一】
一、 內部收益率和凈現值
內部收益率(Internal Rate of Return, IRR)其實要和凈現值(Net Present Value, NPV)結合起來講。凈現值指的是某個投資項目給公司或企業帶來的價值增值,可以簡單地用以下公式去計算。
1.凈現值:
NPV = CF0 + CF1/(1+r1) + … + CFt/(1+rt)^t
其中,CF0是初始投資額,是一個負值,代表現金的流出;t表示時間,指第t期;後面的CF1,CF2,…,CFt這些是每期的回報金額,為正值,表示投資所得的收益。r1,r2,…、rt是指每期的折現率。
舉個比較通俗的例子,我們花100萬元投資了一個一年期理財產品,預期收益率為10%,一年期國債利率為5%,投資是否合算?
這裡涉及到折現率的相關知識,簡單介紹一下:我們都知道銀行存款是有利率的,我們把10000塊錢存到銀行,一年後,連本帶息就會超過10000元。如果我們不把錢存銀行,一年後還是10000元錢,不存錢相當於虧掉了那麼多利息的錢。也就是說,在存入銀行後,一年後的10000元的拿到現在來看,實際是不到10000元的,我可能存9500,一年後就能拿到10000。這就是一個折現的概念,用時間來換利息。
我們再看這個問題,
1年後,預期的現金流就是:
100×(1+10%)=110(萬元),
然後,我們按照國債的利率5%來對其折現(假設該產品與國債信用風險相當),即:一年後的110萬元,如果我們按信用等級較高的國債去投資,現在價值多少?
答案是:110/(1+5%)。
計算凈現值:
NPV = -100 + 110/(1+5%)= 4.7619(萬元)
凈現值是正的,說明這筆投資合算。當然,這裡其實只看年利率就可以做出簡單的判斷,實際情況下,不論是理財產品還是國債利率都是浮動的。
2.內部收益率
前面我們取的折現率是國債的利率,是一個與投資決策之外的值,也可以理解是外部的收益率。這裡內部收益率,指的是使凈現值等於0時的折現率,就稱為內部收益率(IRR)。我們用一個固定的折現率r去計算,令NPV=0,則
0 = CF0 + CF1/(1+r) + … + CFt/(1+r)^t
那麼,此時的r在數值上與IRR相等。因此,我們只要知道每年的現金流量情況,就能計算出該筆投資的IRR,將IRR與r相比,若IRR>r,則該項目值得投資;若IRR<r,則該項目不值得投資,不如去買同期的穩定國債之類的產品。
3.內部收益率的簡單計算
如下表所示,第0年也就是現在,產生了-500萬的現金流量,即用500萬元去做一個投資,1年、2年、3年後的現金流量均為正的100萬元、200萬元和300萬元。假設還是以5%的國債利率去做折現,這筆投資是否值得?
| 年份 | 現金流 (萬元) |
|---|---|
| 0 | -500 |
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
計算內部收益率,將其與國債利率比較,
-500 + 100/(1+IRR) + 200/(1+IRR)^2 + 300/(1+IRR)^3 vs 5%
計算得到
IRR約為8% >5%,該筆投資值得。
從另一個角度看,這筆投資3年後累計現金流為+100萬元,如果買3年期利率為5%的國債,則累計現金流為
500×(1+5%)^3-500=78.8125(萬元) < 100(萬元)


