⭐️ 单利还是复利
巴菲特老爷子有句名言:“人生就像滚雪球,重要的是发现很湿的雪和很长的坡。” 很湿的雪,指的就是复利。很长的坡,指的就是时间。很湿的雪和很长的坡组合起来,就能滚成巨大的雪球。
哈哈,复利是多么让人愉快啊!!!连爱因斯坦都称它为世界第八大奇迹。
这里引出一个概念:计息方式,
大家知道,计息方式有两种,单利和复利,两者的主要区别在于利息是否参与计息,在单利中,每次产生的利息不会和本金放在一起参与计息,而复利则相反。👇
单利:是指按照固定的本金计算利息
复利:是指第一期产生利息后,第二次的本金包括之前的本金和上次产生的利息,以此为本金计算利息,后面的计息周期以此类推(复利又叫利滚利)。
假如你有一项投资,你希望它是单利的,还是复利的?
⭐️ 因子
为说明因子的概念,这里需要引入一些公式,很简单的公式,我们以复利为例。
设P代表终值,r代表利率,U代表本金或初值,n代表计息期数,比如1年,1个月等等。
按照复利的定义,我没有
n可以取整数,也可以取小数,比如以年为计息周期,则n取0.5代表半年。
这里出现了复利因子和折扣因子,我们可以看出,
当前价值一块钱的资产,在计息结束后的价值就等于复利因子。
计息结束后价值一块钱的资产,其当前价值就等于折扣因子。
复利因子和折扣因子是互为倒数的关系。
单利的情况依次类推。
⭐️ QuantLib的利率类
该类用于实例化一个利率(而非利率期限结构)并提供了一些利率相关的计算
ql.InterestRate(rate, dayCount, compounding, frequency)
参数说明如下
参数 | 说明 |
---|---|
rate | 利率的值 |
dayCounter | 计日器,它可以按照某种约定判断某日是否参与计息并计算计息天数 |
compounding | 是单利还是复利计息 |
frequency | 计息频率,是半年一次还是一年一次,等等 |
它有一些重要的成员方法,如下所示
参数 | 说明 |
---|---|
rate() | 返回利率的值 |
dayCounter() | 返回计日器对象 |
discountFactor(d1, d2) | 计算从日期d1到日期d2这段时间的折扣因子,d1小于d2 |
compoundFactor(d1, d2) | 计算从日期d1到日期d2这段时间的复利因子或单利因子,d1小于d2 |
impliedRate(compound, resultDC, comp, freq, d1, d2) | 在给定某段时间内的复利因子的情况下,返回一个利率,这个利率就是隐含利率 |
equivalentRate(resultDC, comp, freq, d1, d2) | 返回一个等效利率 |
这里特别说明一下 equivalentRate 这个方法,它产生一个和当前利率等效的利率
何为等效?在这里,等效就是经过一段时间的计息,产生了相同的利息。等效利率和原利率可以有不同的日期计数规则,计息方式和计息频率等。
⭐️ 代码
本文代码调用了一些利率类的方法
import QuantLib as ql
if __name__ == "__main__":
# 当前利率的值
r = 0.05
# 输出按公式计算的因子
print("python计算的两年期复利因子: ", (1+r)**2)
print("python计算的两年期折扣因子: ", 1/(1+r)**2)
# 开始计息日
d1 = ql.Date(15,6,2020)
# 结束计息日
d2 = ql.Date(15,6,2022)
# 利率对象
rate = ql.InterestRate(r, ql.Actual360(), ql.Compounded, ql.Annual)
# 利率值
print("利率值: ", rate.rate())
# 日期计数器
print("日期计数器: ", rate.dayCounter())
# 2年以后,即2年期折扣因子
print("2年期折扣因子: ", rate.discountFactor(2))
# 从d1到d2的折扣因子
print("从d1到d2的折扣因子: ", rate.discountFactor(d1, d2))
# 从d1到d2的复利因子
print("从d1到d2的复利因子: ", rate.compoundFactor(d1, d2))
# 等效利率
print("等效利率: ", rate.equivalentRate(ql.Actual360(), ql.Compounded, ql.Semiannual, d1, d2))
# 隐含利率
factor = rate.compoundFactor(d1, d2)
print("隐含利率: ", rate.impliedRate(factor, ql.Actual360(), ql.Continuous, ql.Annual, d1, d2))
代码执行结果如下
python计算的两年期复利因子: 1.1025
python计算的两年期折扣因子: 0.9070294784580498
利率值: 0.05
日期计数器: Actual/360 day counter
2年期折扣因子: 0.9070294784580498
从d1到d2的折扣因子: 0.9058010300610555
从d1到d2的复利因子: 1.103995211765872
等效利率: 4.939015 % Actual/360 Semiannual compounding
隐含利率: 4.879016 % Actual/360 continuous compounding
笔者水平有限,若有不对的地方欢迎评论指正!