2013年6月11日 星期二

用 PHP 計算複利與年金終值

複利的威力連愛因斯坦都認為比原子彈還大, 說實在的, 我認為整個數學裡面就只有這個對人生最有用了 (以前學了一大堆高等微積分, 線性代數, 複變函數, 有鳥用?). 單純的複利是本金放進去後, 所得利息不領出來滾入本金繼續生息, 這就是複利的滾雪球效應. 但還有一個比複利的滾雪球效應還大的, 就是年金+複利, 也就是說不但不領息, 反而每年添柴火, 以後每年還另外再投入本金, 使得原始本金年年倍增, 產生的複利效應更大, 好比是滾雪球時, 每滾一圈又加入另一顆雪球, 滾到山腳下的時候, 會是怎樣? 很像原子彈的連鎖反應, 原子核被中子轟擊後, 釋放出更多中子, 這些中子又繼續轟擊其他原子核, ... 這就是為什麼愛因斯坦把複利拿來跟原子彈相提並論的緣故了. 為了對複利與年金有一個清楚的, 具體的數字概念, 我在網路上找到關於計算複利與年金的參考文章如下 :
  1. 年金終值表 &複利終值表 
  2. 什麼是年金 
  3. 1元的複利終值
我根據第三篇 "一元的複利終值" 計算式, 以 PHP 寫了一個可以產生終值表程式如下  :

複利與年金http://mybidrobot.allalla.com/jquerytest/compound_annuity.php [看原始碼]

我把這兩張表的一部分抓出來做個比較如下, 有沒有很驚訝, 如果現在 20 歲, 只要傻傻地利用年金法, 每年投資一萬元到殖利率 6% 的投資工具 (每個月 833 元), 40 年後退休時你就擁有 154 萬的退休金了, 總投入金額 40 萬元. 但如果投資標的殖利率提升到 15%, 那就非常不一樣了, 是將近 1800 萬! 也就是說, 殖利率增加為 2.5 倍 (15/6=2.5), 終值增加為 11.5 倍 (1779/154), 很恐怖吧!  可見年金法要發威的關鍵是在殖利率 (因為從公式可知, 終值是利率的指數啊), 殖利率越高, 要達到預定投資目標所需的時間就可以大幅縮短, 例如 15% 的殖利率, 投資 20 年為 102 萬, 就遠超過 6% 投資 30 年的 79 萬了. 更恐怖的是, 如果是 30% 以年金法每年 1 萬投資 40 年, 終值超過 12 億! 不過, 要每年穩定收益 30% 確實不容易啊!
另一方面, 增加本金也有不錯的滾雪球效果 (呈倍數增長, 不像殖利率是呈指數增長), 以保守的 6% 收益率來說, 以年金法每個月投資 1 萬元 (比每月 833 元增為 12 倍), 每年投資 12 萬,  40 年後退休時的終值是 12*154=1848 萬 (總投入成本 480 萬), 假定退休後還可活 20 年, 這樣的退休準備是每個月 7.7 萬的月退俸啊! (1848/240=7.7). 當然, 以現今的薪水倒退慘況, 每月投資 1 萬元可能不容易, 打對折吧, 每個月投資 5000 元, 每年為 6 萬元, 這樣 40 年後的終值也有 924 萬啊 (相當於 20 年月退俸 3.85 萬)! 請問哪一家公司可能給你 924 萬退休金? 同胞們, 醒醒吧, 要靠自己啊! 但是要特別注意喔, 雪球要滾得大有兩個要件, 第一是滾的方法要對, 也就是上面說的年金+殖利率, 第二是要找一個夠長的山坡, 說白點, 就是要趁早啦! 如果是像我 40 多歲, 滾 40 年, 難不成要 80 多歲退休? 所以 20 歲出頭就要開始囉!

一元複利終值
 年/利率6% 10%  15%30% 
 101.791 2.594 4.046 13.786 
 20 3.207 6.72716.367  190.05
ˇ30 5.743  17.449 66.212 2619.996
 4010.286  45.259 267.86436118.865 

一元年金終值
 年/利率6% 10%  15%30% 
 10 13.18115.937 20.304  42.619
 2036.786  57.275102.444 630.165 
 30 79.058 164.494434.745 8729.985 
 40154.762  442.593 1779.09120392.883

以收現金寡佔市場的電信三雄為例, 其過去十年來都能穩定配出平均 6% 以上的現金股息殖利率, 加上財務穩健, 所以我認為是不錯的投資標的 :


現金殖利率 %
公司  200320042005 2006 2007  20082009 2010 2011 2012 平均% 
 中華電 7.7 7.45.8  6.16.5 6.1 5.7 5.9 5.7 6.49 
台灣大  7.3 7.98.4 6.8  4.88.8  5.35.3 5.2 6.78 
遠傳 4.3 7.7  8.37.9 7.1 7.7 6.9  5.34.5 4.9 6.46 

最後說明複利年金表產生程式, 此程式的核心是用兩層迴圈來產生終值表, 複利表與年金表程式結構完全一樣, 只有計算式不同而已, 最後會將終值表陣列組合成字串, 用來灌進 jQuery Datatables 外掛的 aaData 選項中呈現 :


//製作複利表
$r=Array(); //列陣列
$c=Array(); //行陣列
$title=Array();
for ($i=1; $i<=50; $i++) { //列=年
     $c[]=$i;
     for ($j=1; $j<=20; $j++) { //行=利息
          if ($i==1) {$title[]='{"sTitle":"'.$j.'%"}';} //製作標題
          $c[]=round(pow(1 + $j/100,$i),3); 
          } //end of for
     $r[]="[".join(",",$c)."]";
     $c=null; //歸零以免串接
     } //end of for
$sTitle=join(",",$title);
$compound="[".join(",",$r)."]";
//製作年金表
$r=Array(); //列陣列
$c=Array(); //行陣列
$title=Array();
for ($i=1; $i<=50; $i++) { //列=年
     $c[]=$i;
     for ($j=1; $j<=20; $j++) { //行=利息
          if ($i==1) {$title[]='{"sTitle":"'.$j.'%"}';} //製作標題
          $c[]=round((pow(1 + $j/100,$i)-1)/($j/100),3); 
          } //end of for
     $r[]="[".join(",",$c)."]";
     $c=null; //歸零以免串接
     } //end of for
$sTitle=join(",",$title);
$annuity="[".join(",",$r)."]";


沒有留言 :