学习记录646@python求解有效年利率

原理

以下理论摘自CFA书籍
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码

注意代码中为了精确,使用了Decimal,另外求极限的代码也可以了解一下

import pandas as pd
import numpy as np
from decimal import Decimal

# 计算有效年利率,给定名义年利率,计息期限
def calEAR(NIR, n):
    r = Decimal(str(NIR)) / Decimal(str(n))
    EAR = (1 + r) ** Decimal(str(n)) - 1
    # 转化为%,四舍五入
    return str((EAR * 100).quantize(exp=Decimal('0.00'), rounding='ROUND_HALF_UP'))


# 名义年利率为15%,每个月计算利息
print(calEAR(0.15, 12) + '%')

#这个函数对多个期限进行计算,查看EAR的趋势图,发现随着期限增加,极限值为16.18%
def trend(NIR, list):
    y = []
    for l in list:
        y.append(calEAR(NIR, l))
    return y


trend(0.15, np.arange(1,10000,2))

import matplotlib.pyplot as plt  # 导入模块 pyplot ,并为其指定别名plt

x_values = np.arange(1,1000,2)
y_value = trend(0.15, np.arange(1,1000,2))
fig, ax = plt.subplots()
ax.scatter(x_values, y_value)  # 采用颜色映射,根据y的值设置颜色
# 设置图表标题并给坐标轴加上标签
ax.set_xlabel("计息期限", fontproperties="SimHei", fontsize=14)  # 变量fontproperties指定字体
ax.set_ylabel("有效年利率", fontproperties="SimHei", fontsize=14)

plt.show()  # 该函数打开Matplotlib查看器并显示绘制的图表



# 以下代码计算有效年利率对于计息期限的极限值,约为16.18,从上面的散点图也可以得出这个结论
import sympy
n = sympy.Symbol('n')
sympy.init_printing()

expr = (1 + Decimal('0.15') / n) ** n - 1
result = sympy.limit(expr, n, float('inf'))
# result = sympy.limit(expr, n, sympy.oo) #或者  sympy.oo无穷大
print('limit:', result) #结果为limit: -1 + exp(3/20)
import math
print(((Decimal(str(-1+math.exp(3/20)))*100).quantize(exp=Decimal('0.00'), rounding='ROUND_HALF_UP'))) #极限值为16.18%


在这里插入图片描述

PS 2022-10-02:再次查看发现有个问题连续复利极限公式中的r应该指的是名义利率,也就是一年的利率,不是一期的利率。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值