常见网站建设工具有哪些,怎么做网站关键词推广,手机版传奇发布网站,河北邢台重大新闻⭐️ 前言
QuantLib很强大#xff0c;它实现了很多金融工具及其价值估算方法#xff0c;从最简单的折现模型#xff0c;到利用BSM模型对期权进行定价#xff0c;覆盖面相当齐全。本文以一个简单的净现值估算案例#xff0c;开启笔者金融工具估值的旅程。 开上豪车#…⭐️ 前言
QuantLib很强大它实现了很多金融工具及其价值估算方法从最简单的折现模型到利用BSM模型对期权进行定价覆盖面相当齐全。本文以一个简单的净现值估算案例开启笔者金融工具估值的旅程。 开上豪车出发
⭐️ 一些概念
这里介绍一些金融投资上的概念以便我们顺利进行接下来的实验。
名称解释Portfolio投资组合其中包含多个相同或不同的金融工具例如可以包含一个期权和一个现金存款也可以包含一个固定利率现金流和一个浮动利率现金流Leg投资组合中的每一种金融工具例如上面的期权或者现金存款或者现金流Cashflow现金流即一次现金的流入流出主要属性包括日期及现金金额Coupon票息即债券持有人每次获得的利息他也是一种现金流
他们的关系如下图 ⭐️ 实验债券
债券的概念这里就不细说了点进来的小伙伴们应该都很熟悉了我们讨论这样一种附息债券债券持有人会在债券到期前每隔一段时间获得一次票息债券到期时会获得最后一次利息和票面金额具体来说票面金额为100元每次票息为5元每隔一年支付一次票息有效期4年。
⭐️ NPV
NPV就是净现值它是将未来的现金流按折现率或利率折合成现在的值然后将折合后的所有现值相加得到的。本文也会给出折现率和NPV的关系。
本文的实验就是计算上面描述的债券的NPV。
⭐️ 观察者模式
观察者模式是程序设计当中常用的设计模式当被观察者发生改变时会将这种改变通知所有观察者观察者们会根据具体的情况执行相应的操作。
在QuantLib中Quote可以将数值包装成被观察者其他对象例如Term Structures可以注册为该Quote的观察者当Quote包装的对象改变时Term Structures会得到通知重新进行一些计算任务。
⭐️ 代码
import QuantLib as ql
import matplotlib.pyplot as pltif __name__ __main__:# 参考日期ref_date ql.Date(1,11,2023)# 利率Quoterate ql.SimpleQuote(0.01)rate_handleql.QuoteHandle(rate)# 平直的利率曲线curve ql.FlatForward(ref_date, rate_handle, ql.Actual365Fixed(), ql.Compounded)# 利率结构yts ql.YieldTermStructureHandle(curve) # 构造现金流及legcf1 ql.SimpleCashFlow(5, ref_date 365)cf2 ql.SimpleCashFlow(5, ref_date 365*2)cf3 ql.SimpleCashFlow(5, ref_date 365*3)cf4 ql.SimpleCashFlow(105, ref_date 365*4)leg ql.Leg([cf1, cf2, cf3, cf4])# 面值f 100# 票息a 5# 绘图坐标值x_ []y_ []# 构建绘图数据for i in range(5):# 修改利率的值rate.setValue(rate.value() 0.01 * i)# 利率r round(rate.value(), 2)# leg净现值npv ql.CashFlows.npv(leg, yts, True, ref_date)print(***************************************)print(f利率水平{r})pva/(1rate.value()) a/(1rate.value())**2 a/(1rate.value())**3 (af)/(1rate.value())**4print(f直接用折现公式计算的债券价格为{pv})print(fQuantlib计算的债券价格为{pv})# 绘图坐标值x_.append(r)y_.append(npv) plt.plot(x_, y_)plt.show()输出结果如下
***************************************
利率水平0.02
直接用折现公式计算的债券价格为111.42318609602287
Quantlib计算的债券价格为111.42318609602287
***************************************
利率水平0.03
直接用折现公式计算的债券价格为107.43419680562073
Quantlib计算的债券价格为107.43419680562073
***************************************
利率水平0.04
直接用折现公式计算的债券价格为103.62989522425684
Quantlib计算的债券价格为103.62989522425684
***************************************
利率水平0.05
直接用折现公式计算的债券价格为99.99999999999999
Quantlib计算的债券价格为99.99999999999999
***************************************
利率水平0.06
直接用折现公式计算的债券价格为96.53489438730033
Quantlib计算的债券价格为96.53489438730033绘图结果如下 可见折现率或利率越大npv则越小。
笔者水平有限若有不对的地方欢迎评论指正