January 2012 Archives

再见,山景城

| 3 Comments | No TrackBacks

来美国快5年了,这5年中一直住在旧金山湾区的 Mountain View (中文通常译为山景城)。今天终于到了离开的时候,虽然以后还是会经常来这里,不过不会再有那么多的机会了吧。

Mountain View 是湾区的一个新兴城市,由于距离 旧金山国际机场 (SFO) 和 圣何塞国际机场 (SJC) 距离都比较适中,同时拥有连接穿过东湾的州际 I-880 高速公路的州 CA-237 高速公路,以及连接 Cupertino - San Jose 的西硅谷高速公路 CA-85,并且连接美国西海岸的 US-101 也穿过这里,因此硅谷的许多高科技企业都在这里设立分公司或总部。其中比较著名的有 Google、 Microsoft、 Symantec、Intuit 等。此外,这里也是 Intel、Netscape、SGI 等许多重要的硅谷企业的诞生地。

Mountain View 的地标性建筑是位于 Moffet Field 的 NASA Ames 研究中心,以及在 Google 附近的 Shoreline 露天剧场。此外, Mountain View 也是附近治安较好的城市之一。

问题:如果银行要求购买贷款保险,并且已知贷款保险在本金+首付达到22%时会自动撤销,但已经支付或预付的部分不会退还,已知贷款总金额、固定利率、年限,计算采用不同还款方案(按PMT计划,比PMT多还定额等)中一次性支付,以及每月支付的金额变化,以及若 cash out 时的收益差异。

(本质上这个问题是个动态规划问题,不过具体的计算过程比较有实用价值,本文以 Google Docs 的 Spreadsheet 来举例,其他电子表格软件如 OpenOffice 的 Calc,以及 Excel 大同小异)。

假定总共的还款期数为 360 期(30年),可以创建一个有362行的表格(第一行是表头)。A列填入月份的序号,0 .. 360,B列填入还款日期(这个可以用公式做,也可以直接填充,这些日期并不参与计算,因此不太重要)。C列全部填0(计划多还)。

首先要算出贷款的 PMT 值,这个很容易,假设年名义利率为 RATE,贷款金额为 PV,贷款期数为 NPER(按月算),则公式为 =PMT(RATE/12,NPER,PV) 。把这个数字(由于 Google Docs 的限制,最好直接复制这个数字然后填充,如果是公式,则会因为填充时会自动根据单元格位置来调整导致数字不对)填入所有360行的 E 列,标记为"原计划还款"。

由于需要考虑提前还款的情况,我们不能用 PPMT 和 IPMT 来直接计算本利的偿还情况。但是,如果知道上一月份的本金余额,当月偿还的利息是容易计算的(相当于以同样利率、上月本金余额,按360-当月序号的长度来重新贷款)。在 L 列填入当月本金余额:在第0个月,很明显这个金额就是总价 - 首付。因此,在L2这一行填写这个数值。接下来就可以知道每个月所偿还的利息了,我们用 J 列来表示所付利息,在 J3 填写 =IPMT(RATE/12,1,360-A3+1,L2),然后将其填充至 J4..J362。此时,J4..J362还无法算出(因为我们并不知道 L3..L361 的数值)。

为了方便观察提前 payoff 的效果,我们还应算出每个月累计偿还的总利息。在 K 列填入利息偿还累计,K2填0, K3 公式为 K2+J3,填充至 K4..K362。

想要知道当月的本金余额,就必须知道当月偿还的本金金额。这个金额是当月支付的还款额减去当月应该支付的利息,即 E列 + C列 - J列。对于固定利率的贷款,如果提前还款的话,由于本金减少但每月还款额并不减少,因此会导致之后每个月偿还的本金增加(这也是为什么提前还款可以减少很多利息)。所以为了直观起见,在 I3 填入公式 =PPMT(RATE/12,1,360-A3+1,L2),并填充到 I4..I362。这样,当月额外偿还的本金就可以用 C 列 + (E列 - I列 - J列) 算出。我们将这个公式填充到 D 列(额外偿还本金),并在 L3 填入公式 =IF(L3+I4+D4>0,L3+I4+D4,0),填充至 L4..L362。

F列是实际支付的贷款金额。F3公式为 =IF(L2>-E3-C3,E3+C3,-L2+J3),即如果当月可还清,则为还清金额,否则为原计划还款+额外还款金额。

G列填入当月需要缴纳的贷款保险金额。设贷款标的总价为 TOTAL,每月需要支付的贷款保险金额为 INS,则公式 G3 为 =-IF(L2>TOTAL*0.78,INS,0),其中 0.78,填充至 G4..G362。

H列填入实际支付给银行的金额,F+G。

这样就可以很容易的得出汇总值:

正常还款时,支付的总利息为 =CUMIPMT(RATE/12,360,PV,1,360,0)。

实际支付的利息总额为 =SUM(J:J)。

实际还款期数为 =COUNTIF(F:F,"<0")

实际支付的贷款保险费用为 预先支付的金额 + SUM(G:G)

在对应月份的 C 列填入计划多还的金额即可看到计算结果(注意,上述公式假定此列数值应为负值)。

上述方法仅供参考。

之前一直对市场如何决定一件东西的价值有疑问,现在记录一下其中一种方法。注意,这是个人对于这个问题的认识,而非科学论述,文责不负。对于读者自己遇到的具体问题,请咨询有关专业人士。

以房屋价值为例,房屋的价格是不太容易确定的,因为每一个房子都不一样,决定房屋价值的因素又很多,例如它的位置、朝向、内外部装修的情况、保养的情况、内部电器的摊销价值,甚至买家卖家的心情,等等。在买卖双方没有必须成交的压力(例如法院拍卖,或因为人口增加必须购买房子)的情况下,往往会有一个讨价还价的过程,最终双方会共同认可一个交易价格,这个价格通常也会成为最终的交易价格。

但是,对普通人而言,因为房屋是一种金额巨大的投资,往往在交易时会涉及贷款。这样就牵扯进来了一个新的利益攸关方----银行。从银行的角度来看,它既不太关心房子是否能够卖掉或者买进房子,而是需要关注风险(借贷人是否有偿还能力、房屋价格是否与价值相符,或者说贷款金额小于房屋合理价格的某个比例)和投资回报。因此,银行在提供贷款时就必须首先对房屋的价值进行评估。

于是估价师就出现了。估价师不隶属于上面任何一个利益攸关方,最符合估价师利益的是尽量给出一个合理的评估,拿到相关报酬走人。那么,如何做出合理的评估呢?

首先是收集数据。第一个来源,是郡政府公开的、用于征收地产税的房屋估值数据。在美国,对房屋的价值估算包括两部分,第一部分是土地价值("land"),另一部分是土地上面的建筑等的价值("improvement")。在加利福尼亚州,依据1978年通过的第13号州宪公投,用于收税的房产估值每年可根据通胀情况上调最多2%。房产用于收税的估值,可根据其土地 APN 在对应郡的政府查询,但由于前面所述的13号公投,除非房屋在最近发生过交易,或发生了类似房产泡沫破裂这样的情况令纳税人主动要求调低估值,这个估值往往会比实际的市场价值低很多。

另一个来源,也是比较可信的数据,是周围房屋在近期的交易价格。在进行房地产交易时,会在对应的政府部门进行登记;此外,由 MLS 维护的公开的数据中也会包含房屋从开始放到市场上,到最终完成交易的每一次价格变动记录。估价师会查找附近情况类似(面积、建筑年限、地皮尺寸等)的房屋在最近一段时间的成交价格和具体情况,并根据每一栋房屋的具体情况对交易价格进行一致化,所谓一致化就是消除房屋之间差异所导致的价格差异,例如,如果房屋位于较为安静的小路,通常在这个地区的交易价格会比位于较忙的路边的房屋高一万美元,则应在评估时使用的一致化价格中减去。

有了足够多的市场价格,并根据具体情况分别进行一致化之后,估价师会得出一组一致化价格,并取其中位数来得到市场所认可的价格。

有些估价师还会用其他估价方式给出另外的估值。例如,将土地价格加上按房屋年限摊销后的现时新建造价,再加上新增改建/家电设施的价格得到房屋的价格;或者,计算房屋按租赁价格和可以"经济地"租赁出去的时间来计算房屋的租赁价值,等等。

delphijfork 9.0

| 3 Comments | No TrackBacks

可以在 这里 下载。

和过去一样,风险自担 USE AT YOUR OWN RISK!

和 FreeBSD 9.0-RELEASE 相比的改动:

  • 修正了一组 tmpfs 的 bug;
  • 针对 nullfs、 devfs 的可靠性改进;
  • "skeljail";
  • top(1) 默认显示每个CPU的占用比例;
  • 针对 powerd 的多处理器支持;
  • 对 IPv4 流量分 IP 进行统计【注意,由于上锁开销,此改动会略微降低IPv4性能】;
  • 重启时设置 watchdog;
  • 改善 csh 可用性配置;
  • 预设将共享内存绑在主存内;
  • Winbond watchdog 驱动;
  • 对虚拟化环境默认不测试内存;
  • 修正 NEW_PCIB 导致某些硬件问题的bug;
  • 一系列 ZFS 相关改进;
  • 减少 AHCI 上下文切换开销,高负载状态可达 3.8%;
  • 一组 VM 性能改进,提高了异步操作以及 msync 情形的性能;
  • 改善了 NFS 服务器预取的顺序读性能;
  • 等等。

我国在最晚不晚于宋代发明了水密隔舱。所谓水密隔舱,是指将船体分成若干个互不相通的舱区,这样当一个或几个舱区进水时,整个船体仍然可以有足够的浮力而不致沉没。这是一项相当重要的发明,类似的设计思路在其他领域也有应用。

在计算系统中,往往也会采取类似的设计思想。例如,操作系统会对进程地址空间的访问提供隔离,这样当一个进程吐核的时候不会影响其他进程的运行。又比如,在设计安全方案时,采用分层、相互隔离的信任状实体,分隔特权服务和非特权服务,把绝大多数的输入处理放在非特权服务中运行。再比如,在设计大容量计算系统时,可以将高优先级的任务单独设计一个队列,并限制所有worker能够容纳的任务总数,在运营时以逐步提高上限的方式来避免出现超载导致大家都无法使用的情况。

总之,我不认为中国人在宋代就已经想出来的方法,到了21世纪还可以被中国人认为是「非常特别的系统」「应用的场合很少」「中国目前研究这种系统的人不多」的高精尖。这么想的人,是的,你也就配做个末学。

Monthly Archives

Pages

OpenID accepted here Learn more about OpenID
Powered by Movable Type 5.2.3