挑大梁

春节假期结束两天后,上海和长春终于恢复了低风险。去年一整年疫情的乌云压在心头,也就基本没请假出去,剩下的假刚好就放二月末消化了。

从周一中午落地长春到周五上午起飞返程,四天多的时间安排地非常紧凑饱满,环环相扣:

周一,中午到家吃了点东西,等姥爷醒了,请了个安,下午就看家具去了。经过一两个月的思考和实地考察,我妈对需要哪些大件心里已经有数,但距离最后定稿还是有很多功课要做的。图省事,初步方针是,无论定制还是成品就都在曲美选了。在店里和导购商量了一下,由于时间紧迫,本来一个礼拜周期的设计流程希望改成设周二下午就能量尺寸,周三就出图。既然周二要去新房子,就又和管家约了周二下午一点过来换个指纹密码锁,方便以后快递送货。约好以后,周一晚饭前赶回来和姥爷一起吃了饭,姥爷提起来剪头发的事儿,由于冰还没化,春节期间他一直没出门。我刚好回家前也有小木屋温泉的想法,遂琢磨周二下午一家人去小木屋温泉一下顺便可以剪头发,就在大众点评上尝试订个房间(比携程便宜很多,就是确认的非常慢,好在睡前房间已经确认成功)。晚上还在网上买了花洒和风暖打算把家里差强人意的装备换掉。

周二,接到设计师电话,本来下午一点过来,现在说上午十点多就能来,本着不想夜长梦多的初衷,吃完早饭就带上姥爷的午餐和小木屋温泉的衣服出发去新房子了。路上怕设计师到的太早又和管家联系,以便万一设计师到的早了,就麻烦她去开门。兵马未动,粮草先行,车上点了面条外卖先送过去。一到地方就开始和设计师交代我们的想法,切磋几轮后外卖也到了,就把姥爷的午饭拿出来给他吃上,我们也开始吃面。十二点多,设计师已经量好所有尺寸别过了。期间又约了个周三的开荒保洁,让他十点过来输密码自己进来打扫,这样我们小木屋之旅结束以后可以中途过来看打扫的进度。一点钟,物业的人来给换门锁了,一个小时换好,后来使用中我发现门锁有BUG,又叫他回来磨合尺寸,一直到快四点才磨好,忙忙活活地出发去小木屋了。到了国信南山温泉以后,办了入住,本打算先剪头发再吃饭,遗憾地发现理发师今天回老家了。晚饭后回房间泡澡,由于记忆偏差,水温多少有点定低了,才39,按说42比较合适。不过为了不白住,泡了也快两个小时。保洁这时电弧联系,发现他们第二天是不带梯子的,这样吊棚很难清理,于是泡差不多,等姥爷睡了,我妈和我就又开车回家拿梯子送到新房子去。

周三,早晨起来开车到前楼吃早饭,让他们给房间换水(但是后来回来才发现并没换)。吃完发现一个轮胎憋了,而放在车里的小米充气泵也因为天冷电池无法工作,就拿到房间充电。充满以后,我和我妈轮流用手捂着充气泵(防冷)给轮胎打气,另一个人进车里取暖。差不多十分钟,轮胎恢复2.5kpa胎压。然带上姥爷就直奔新房子,上楼和保洁交接了一下工作,又径直回家了。中午等姥爷睡了,又驱车去曲美。和设计师讨论了很久具体的定制方案,又转了几圈,选择颜色和材料。这个过程中我反复和我妈确认她的想法,一方面不能过度建议,另一方面又得防止她被设计师的话术引导。总算在五点多敲定了所有细节开始签合同,同时让已经到了的外卖员把东西放到楼下大门里。期间我的手机又一次落地,正面屏幕骨折了。六点多终于签好合同,确定了三床、鞋柜、衣柜橱、床头柜、电视柜、沙发,就匆匆回家吃饭了。晚上又在网上逛了逛,琢磨了一下以后茶几,冰箱洗衣机的可选项。今天的某个时间还约了周四的风暖安装师傅和厕所除味的师傅。

周四,上午给姥爷准备好午饭,我们就出发了,跑了两家灯饰城,看了看飞利浦松下新特丽的吸顶灯。下午回来,发现姥爷自己竟然跑出去剪头发去了,还好平安归来。之后,约好的风暖师傅和厕所除臭的师傅也到了。两个人一直到差不多四五点钟才完活。

周五,撤了,估计在家接着待还能琢磨出活儿来整,比如换了家里的洗衣机。

期间姥爷和大姨都提到了挑大梁一词,形容我这几天的行动。但褒奖之余,自我反思得还是有很多问题的。时间紧任务重,平时的想法浓缩到一个很短的时间完成,会导致经常越过和家人讨论的步骤做决定,难免有些伤情感。其次,自己内心紧锣密鼓也会间接让身边人无法放松,所以小木屋的过程估计对他们来讲也不是那么惬意。另外,打扫卫生的环节事后发现清理的很偷工减料,比上海这边差很多,监督还是得有,特别是收工检查部分。

等额本息的战争

安全界老大哥@yuange1975最近揭露微博借钱的套路贷导致微博账号被删。套路贷问题本身还是很有意思的,很像是那种偷换概念的陷阱趣味题。

问题来了,如果借了20000块钱,一年还完,每个月要求还款2266.67,那么究竟这笔贷款的年利率该怎么算呢。

一个错误的示范是,年利率P = (2266.67 * 12 – 20000)/20000 = 0.36。也就是说一年才36%而已,好像很符合国家规定的上限。

很久不实际推算点什么东西了,这里的陷阱还真一下没反应过来。题干简单的背后,是故意模糊的概念。首先什么是年利率,一般来说它是一个等价概念,粗略说就是一笔钱过一年后增加的数目/初始钱数。如果一年到期后,一次性还2266.67 * 12 = 27200的话,那年利率计算结果就是36%。

但现在提前还了钱,先不论每个月的钱里有多少是本金,多少是利息,显然对于借钱的你是要亏一些的,而对于债主来说,它能提前拿到钱是很赚的,最次最次他拿到钱以后存到余额宝也有利息啊。所以直观感受是,这种还款年利率应该是比一年以后一起要高的,但究竟怎么量化这种感觉呢。

在此期间我看到有公众号也在讨论这个问题,其解决方法是经济学里的IRR公式。本来应该主动去分析的问题,现在都成了被动的朋友圈推送文章,久而久之现在处理问题好像更加被动了。另外公众号的文章从来都是短小精干(浅尝辄止)。即便后来找到了IRR公式“原理”,依然不甚过瘾。记得大学时候替学生会的一个部长喊到,上过一节经济学原理的课程,依稀记得课上的一道题目我是用等比数列极限求解,而老师给出的是经验公式,且没有推导过程。所以至今我仍冒昧且莽撞的认为经济学里的很多理论,由于很多人不去深究其背后数学根基,讲出来的话也就特别缺少逻辑的严谨性,仅用于计算倒是没有问题。不过这样的分析文字总让人坐立不安,一个享受证明题那种逐层推倒过程的人特别不能接受。

所以这个利率问题,感觉一定要用自己知识范式里的逻辑推导出结果才能真正“过瘾”。我们不去造什么现钱未来升值的概念,也不去假设每个月还的钱里面到底本金是不是相等。现在只是求一个等效的月利率q出来,然后用它刻画我们的直观感受。下面试试在q不变的情况下,是否能求解这个问题。

对于拿到20000块钱后第一个月末,要还2266.67,这时欠人家的本金一直是20000,而这2266.67中包含还掉的本金部分用a表示。于是有:

20000 * q + a = 2266.67

即这个月还款的2266.67是还掉的一部分本金和利息的和。由于欠的本金一直是20000,所以利息就是20000 * q,而a是还掉的本金。

现在来到了第二个月末,仍然还款2266.67,其中还掉的本金用b表示。第二个月开始,我们欠人家的钱已经不是20000,而是20000 – a了,所以这个月的利息应该是(20000 – a) * q,这样就有:

(20000 – a) * q + b = 2266.67

对于第三个月来说,还掉的本金用c表示,依据之前的推导应该有:

(20000 – a – b) * q + c = 2266.67

依次类推,到第十二个月初,我们已经还了十一笔款,每次还的本金依次是a, b, c, d, e, f, g, h, i, j, k,所以现在欠的本金应该是(20000 – a – b – c – d – e – f – g – h – i – j – k),那对于最后一个月来说有

(20000 – a – b – c – d – e – f – g – h – i – j – k) * q + l = 2266.67

最后第十三个等式是,a + b + c + d + e + f + g + h + i + j + k + l = 20000,就是每个月还掉的本金和为最初的欠的20000。

现在一共有十三个方程,十三个未知数,我们只要求出来方程里的q a b c d e f g h i j k l的正实数解即可。这个方程应该可以手动化简,不过偷懒的方法是用现成的工具,如Matlab或者 Wolfram。以Matlab为例,以下命令可以解开方程:

syms q a b c d e f g h i j k l
[q_, a_, b_, c_, d_, e_, f_, g_, h_, i_, j_, k_, l_] =  vpasolve((20000)*q + a == 2266.67,(20000 - a)*q + b == 2266.67,(20000 - a - b)*q + c == 2266.67,(20000 - a - b - c)*q + d == 2266.67,(20000 - a - b - c - d)*q + e == 2266.67,(20000 - a - b - c - d - e)*q + f == 2266.67,(20000 - a - b - c - d - e - f)*q + g == 2266.67,(20000 - a - b - c - d - e - f - g)*q + h == 2266.67,(20000 - a - b - c - d - e - f - g - h)*q + i == 2266.67,(20000 - a - b - c - d - e - f - g - h - i)*q + j == 2266.67,(20000 - a - b - c - d - e - f - g - h - i - j)*q + k == 2266.67,(20000 - a - b - c - d - e - f - g - h - i - j - k)*q + l == 2266.67,a + b + c + d + e + f + g + h + i + j + k + l == 20000,q,a,b,c,d,e,f,g,h,i,j,k,l)

解出来的正实数解为:

q_ = 0.050797584803673053315458232134993
a_ = 1250.7183039265390064504114991344 
b_ = 1314.2517730357534996140256951894 
c_ = 1381.0125889299148582748617671113 
d_ = 1451.1646930310222824133176198543 
e_ = 1524.880354589361811121911194386
f_ = 1602.3405937170699537423596414655 
g_ = 1683.7356259107806443553650286218 
h_ = 1769.2653291549490520943120595088  
i_ = 1859.139734752896094790930379943 
j_ = 1953.5795430908845605782957674657
k_ = 2052.8166656017646249690438355595
l_ = 2157.0947942590636115951655117603

所以这里抽象出来的等效月利率q = 0.050797,则年利率P = 12 * q 或者(1+q)^12 – 1。之所以P是这两种情况,是因为很多金融机构对年利率的定义不同,通常的P = 12 * q 给出的年利率数值会小一些,在贷款时使用更具有迷惑性,让借钱的人直观上觉得划算。但实际计算时用的P应该是(1+q)^12 -1,这是考虑了复利,相当于每个月末把本金取出来,又一起存进去。我认为关于这个q和P的关系比较容易理解,所以就不赘述了。

这样其实等效的P应该是(1+q)^12 – 1 = 0.81,即年利率为81%,比一开始的36%要高很多。这里的81%也是一个概念值,给你这个数值并没有办法直接用于计算比如到底还了多少钱之类的问题。它只是量化了我们最开始的直觉,即每个月还钱比到期一起还时的情况,其利率要更高,而且高很多。

推导到这里,基本上算是完事了。但是这个问题与实际世界是如何建立联系的呢。直到这时,我才了解,其实上述每个月还固定钱的问题就是所谓的等额本息还款。另一种偿还贷款的方法叫等额本金。等额本息看起来舒服,因为每个月数额整装,可背后原理复杂;等额本金看起来数额零散,不过背后计算简单。

既然对应到了现实世界的问题,那就有现实的工具可用。比如同样是这个问题,我们可以打开招商银行的计算工具,在等额本息工具下,输入本金20000,分12个月,年利率部分输入P = 12 * q,即60.96%,点击计算,你就发现其计算结果是每个月还款2266.67。这里银行用的P并没有填写我们刚刚的(1+q) ^ 12 – 1,原因就是银行贷款为了让你心里预期低一些,选择P = 12 * q。其实这两种P如前所述都没法直接用于计算,只是给你一种直观感受。真正计算用到的是q。

关于这个问题至此已经可以说讨论完整了。

最后想从纯数学的角度再看一下刚刚的方程,我们唯一的假设是q它作为一个月等效利率是不变的。如果月利率q可变,而假设每个月还款中本金是固定的呢,即用a b c d e f g h i j k l表示每个月的利率,而还的本金是q,仍然用Matlab解开这个方程就变成了:

syms q a b c d e f g h i j k l
[q_, a_, b_, c_, d_, e_, f_, g_, h_, i_, j_, k_, l_] =  vpasolve((20000 - 0 * q)*a + q == 2266.67,(20000 - 1 * q)*b + q == 2266.67,(20000 - 2 * q)*c + q == 2266.67,(20000 - 3 * q)*d + q == 2266.67,(20000 - 4 * q)*e + q == 2266.67,(20000 - 5 * q)*f + q == 2266.67,(20000 - 6 * q)*g + q == 2266.67,(20000 - 7 * q)*h + q == 2266.67,(20000 - 8 * q)*i + q == 2266.67,(20000 - 9 * q)*j + q == 2266.67,(20000 - 10 * q)*k + q == 2266.67,(20000 - 11 * q)*l + q == 2266.67,12 * q == 20000,q,a,b,c,d,e,f,g,h,i,j,k,l)

结果为

q_ = 1666.6666666666666666666666666667
a_ = 0.03000016666666667030464547375838
b_ = 0.032727454545454549423249607736414
c_ = 0.036000200000000004365574568510056
d_ = 0.040000222222222227072860631677839
e_ = 0.045000250000000005456968210637569
f_ = 0.051428857142857149093677955014365
g_ = 0.060000333333333340609290947516759
h_ = 0.072000400000000008731149137020111
i_ = 0.090000500000000010913936421275139
j_ = 0.12000066666666668121858189503352
k_ = 0.18000100000000002182787284255028
l_ = 0.36000200000000004365574568510056

注意,这里的q已经是每个月要还的本金了,而变化的a到l是每个月的月利率。但现在不过是纯粹的数学计算了,我们并不是在解等额本金问题。通过a到l没办法抽象出一个所谓的等价月利率或者年利率。

题目为什么叫战争呢,因为我和媳妇周末讨论怎么计算时,尽管两个人都一知半解但却几次三番激烈异常,时不时面红耳赤,更有甚者唇枪舌剑。当然,问题最后还是在健康平静恩爱的气氛中解诀了。

2019大计

专业方面

[-] 完成两个内核利用的编写 (wz)

[-] 完成一到两个浏览器利用的编写 (1793)

[-] 跟进已有研究的进展,形成一到两次会议议题 (infiltrate, mosec)

[-] 每周看至少两次微博或者twitter,关注业内的最新进展

[-] 阅读10篇左右学术论文,跟进学术界的研究进展 (arm nail gun)

[-] 阅读至少一本专业书籍 (TEE)

[-] 每个月至少进行一次书面总结


生活方面

[-] 阅读5本书,《地球往事》,《局外人》, 《沙丘》

[-] 出游三次 《迈阿密/密西根,bannf&jasper&Ottawa,Munich,花鸟岛》

[-] 每周去健身房两到三次

[-] 跆拳道30次以上

[-] 每个月至少一篇博客

[-] 每个月至少一部电影

[-] 不再消磨于游戏视频

[-] 每个月至少冥想一次

[-] 高考题两次,考研数学题一次

[-] 每周弹琴两次以上