做时间的朋友,必须知道收益咋算
来源:Python 技术「ID: pythonall」
新年好,我们度过了艰难的 2020,迈进了 2021 的征程,在新年伊始,我们一起学习一个新技能,使我们能拥有看到未来的眼睛
比起对时间、精力的投资,对金钱的投资更容易理解和显现
那么面对纷繁复杂的投资种类,哪个才是对我们有利的呢?当然要看收益率高呀
那如何计算收益率呢?
年化复合回报 15% 意味着什么
如果有一个投资标的,年化复合收益率是 15%,那么 100 年后(虽然我们可能活不了这么久),能获得少倍的收入?
虽然我们可以写成计算公式,但我们的大脑并不适合计算小数的幂运算,
对于这个问题,计算公式是:
这样用 Python 一行代码就搞定:
(1+0.15)**100
# 1174313.4507002793
对,你没看错,是 117 万倍!,也就是投入一块钱,最终收益竟然是 117 万
这个并非假设的例子,2019 年的时候,可⼝可 乐公司上市⼀百周年。⼈们算了⼀下,在这⼀百年间,可⼝可乐公司竟然为股东创造了 15% 的年化复合回报率!
果然,收益率是很大程度上反映了投资标的的好坏
定投的收益
定投就是,定期定额,持续对某个标的的投资,可以参见《定投到底好不好 —— python 告诉你答案》
对于一个具有某个平稳收益率的标的,使用定投策略,在一段时间后,能获得多少收益呢?
通过设定收益率、定投周期、定投额度,就可以算出来,不过手工计算比较麻烦,可以直接使用 Numpy 提供的 FV 函数很方便的计算
FV 函数参数是:
rate, 收益率 nper:投资期数 pmt:每期定投金额 pv:期初已有金额,即现值 when:表示各期计算收益的时间点,期初为 0,期末为 1,默默为期末
假设,按月定投,每月定投 1000,月收益率为 10%,定投 12 个月,即一年的最终金额是多少:
import numpy_financial as npf
npf.fv(0.1, 12, -1000, 0)
# 21384.28376721003
注意:numpy 将在 1.2 及以后版本,会将经济类公式去除,而专门用模块 numpy_financial 做经济类公式库,为了升级方便,建议使用 numpy_financial numpy_financial 通过 pip install numpy-financial
安装numpy 中 负数表示投入,正数表示获取,因此 -1000 表示投入 1000
如果在同样的条件下,想要在某个时间点,收获一定的金额,每期应该投入多少呢?比如一年后要得到 5万元,计算每月的投入
import numpy_financial as npf
npf.pmt(0.1, 12, 0, 50000)
# -2338.165755014362
可以得出,每月至少投入 2338.17 元
pmt 与 fv 的区别只是后面的两个参数含义不同
分别是,期初金额和终值金额
定期不定额的收益率
定投虽好,不过实际操作中难免有各种异常情况,漏投,或多投在所难免,甚至将一部分提现
这种情况下如何计算自己的收益率呢?
我们可以利用 irr
这个函数,其全称为(Internal Rate of Return),即内部报酬率,不过名称还是不太明显,我们看看如何应用吧
假设有一个定投项目,下面是每期定投的金额和支出:
期数 | 投入 | 提现 | 实际投入 |
---|---|---|---|
1 | -1000 | 0 | -1000 |
2 | 0 | 100 | 100 |
3 | -1500 | 200 | -1300 |
4 | -2000 | 0 | -2000 |
5 | -800 | 6000 | 5200 |
注意,金额都是相对于投资者来说的,负数为支出,正数为收入
我们做如下计算
import numpy_financial as npf
pmts = [-1000, 100, -1300, -2000, 5200]
npf.irr(pmts)
# 0.10969579295711918
pmts
为每期投入金额,因为是可变的,所有存入数组里
最终得到的结果是,不定额投资 5 期, 最终收益率为 10.96%
有了这个函数赶紧算算那些保险方案,看看承诺的收益率是否与实际相符
不定期不定额的收益率
直接在看问题,一般都会被难到,不知如何下手
但实际上这种投资操作更为实际,有钱就投,没钱不投,钱多多投,钱少少投,才是我们平常人的投资风格
如何计算收益率呢?
xirr
闪亮登场
xirr 源自于 Excel 中的计算公式
看起来问题很复杂,而 xirr
函数却很简单,即 收益率=xirr(资金流, 日期流)
不过遗憾的是 numpy-financial
模块中并未提供 xirr
函数,需要引入另外的算法
GitHub 找到了一个简单的库 https://github.com/Tacombel/XIRR.py
下载其中的 XIRR.py 放在根目录下,引用即可
假设有这样的投资记录
日期 | 现金 |
---|---|
2019-02-04 | -300.3 |
2019-06-17 | -500.5 |
2019-11-18 | 741.153 |
2020-04-27 | -600.6 |
2020-10-19 | 1420.328547 |
来计算看看
from XIRR import xirr
import datetime
dates = [datetime.date(2019, 2,4),
datetime.date(2019, 6, 17),
datetime.date(2019,11, 18),
datetime.date(2020,4, 27),
datetime.date(2020,10, 19)]
values = [-300.3,-500.5,741.153,-600.6,1420.328547]
xirr(values, dates)
# 输出为: 0.779790640991537
实际的收益率为 77.98%
有了 irr
和 xirr
两个函数,投资世界是否变得清晰多了
总结
如果有什么方法让流失的时光留住,那就对时间做定投,正如在 2020 总结篇 中说的:做时间的朋友,成为长期主义者
我们知道长期主义者与非长期主义者的最大区别在于,对待积累的方式
只有让流走的时间、精力、金钱积攒起来,发挥价值,才能使我们走的更远更宽
期望今天的分享能让你从另外的角度上看待投资,让我们以更快的速度成长,比心~
参考
https://github.com/Tacombel/XIRR.py https://github.com/xiaolai/spreadsheets-for-investors