当前位置: 首页 > news >正文

债券专题二:可转债估值-二叉树模型

  1. 模型背景  

    由于可转债自身的属性较多,因此对其定价的难度也会加大,在诸多影响因素中,未来的股价占比最高。由于股价的不可预测性,导致了可转债的定价在实际交易中作用非常有限。随着可转债发行数量和规模的增大,越来越多的机构参与到其中,这也使得越来越多的人开始研究可转债定价,可转债的投机属性降低。随着量化投资的火爆,越来越多的可转债影响因素被标准化,推动了可转债模型定价的迭代的发展。基于市场扩容和技术进步,可转债定价有效性在逐渐加大。目前常见的可转债估值模型有3种:BS模型,二叉树模型,蒙特卡罗模型。本文主要分享二叉树模型的估值逻辑,并复现其代码。

2. 模型公式

3. 模型代码

import numpy as npclass Convertible_Bond(object):def __init__(self, T, vol, market, st, rate, r, coupon, r_, dt, up, down, lp):self.T = T  # 期限self.vol = vol  # 波动率self.market = market  # 面值self.st = st  # 股票价格self.rate = rate  # 转换比率self.r = r  # 无风险利率self.coupon = coupon  # 票息self.r_ = r_  # 信用利差self.dt = dt  # 赎回间隔self.up = up  # 上涨空间self.down = down  # 下跌空间self.lp = lp  # 赎回价格# 计算风险中性概率def risk_p(self):a = np.e ** (self.r * self.dt)return (a - self.down) / (self.up - self.down)# 计算到期价值def expire_value(self, expire_price):# expire_price:到期股票价格# 计算到期转换价值change_value = expire_price * self.rate + self.market * self.coupon# 计算含票息的价值coupon_value = self.market * (1 + self.coupon)V = max(change_value, coupon_value)return V# 计算每一个节点的连续价值def continuous_value(self, expire_up, expire_down):# expire_down:下一节点下跌对应的可转债到期价值# expire_up:下一节点上涨对应的可转债到期价值b = np.e ** (-(self.r + self.r_) * self.dt)risk_p = self.risk_p()coupon_v = self.market * self.couponH = b * (risk_p * expire_up + (1 - risk_p) * expire_down) + coupon_vreturn H# 计算当前的节点价值def really_value(self, expire_price, H):# 计算提前兑付值,假设在赎回时获得票息收入C = self.market * self.couponK = self.market + CV = max(self.rate * expire_price + C, min(H, K))return V

4. 模型实例 

 某可赎回可转债要素如下:(为简化起见,模型暂不考虑部分可转债的特性,使用两步长的最基础的可转债作为案例。)

可赎回-可转债要素
期限2年波动率20%
面值100股票价格100
转换比例0.8利率3%
票息率3%信用利差1%
赎回条款只在第一年上涨比例1.2214
赎回价格100下跌比例0.8187

 首先,对函数进行传参,同时计算s1到s5的值:

if __name__ == '__main__':T, vol, market, st, rate, r = 2, 0.2, 100, 100, 0.8, 0.03coupon, r_, dt, up, down, lp = 0.03, 0.01, 1, 1.2214, 0.8187, 100model = Convertible_Bond( T, vol, market, st, rate,r, coupon, r_, dt, up, down, lp)# 分别计算股票s1,到s5的值s1 = round(st*up,2)s2 = round(st*down,2)s3 = round(s1*up,2)s4 = round(s1*down,2)s5 = round(s2*down,2)

计算得到的结果为:

然后,根据 s3,s4,s5的值可以计算出对应节点债券的到期价值:

接下来,根据b3到b5的到期价值,计算b1,b2节点上的连续价值H1,H2:

 随后,考虑可赎回性,根据s1,s2和H1,H2,计算b1,b2节点上的 节点价值1,V2:

紧接着,使用V1和V2的 值计算当前节点的连续价值H,根据H和s1计算当前节点可赎回债券的估值V:

本章节的完整代码为:

if __name__ == '__main__':T, vol, market, st, rate, r = 2, 0.2, 100, 100, 0.8, 0.03coupon, r_, dt, up, down, lp = 0.03, 0.01, 1, 1.2214, 0.8187, 100model = Convertible_Bond(T, vol, market, st, rate,r, coupon, r_, dt, up, down, lp)# 分别计算股票s1,到s5的值s1 = round(st * up, 2)s2 = round(st * down, 2)s3 = round(s1 * up, 2)s4 = round(s1 * down, 2)s5 = round(s2 * down, 2)# 计算债券b3,b4,b5的值b3 = round(model.expire_value(s3), 2)b4 = round(model.expire_value(s4), 2)b5 = round(model.expire_value(s5), 2)# 计算H1和H2的值H1 = round(model.continuous_value(b3, b4), 2)H2 = round(model.continuous_value(b4, b5), 2)# 计算b1,b2节点上的节点价值V1 = model.really_value(s1, H1)V2 = model.really_value(s2, H2)# 计算当前节点的连续价值HH = round(model.continuous_value(V1, V2), 2)# 计算当前节点可转债的估值V = model.really_value(st, H)

 本期分享结束,有何问题欢迎随时交流。

相关文章:

债券专题二:可转债估值-二叉树模型

1. 模型背景 由于可转债自身的属性较多,因此对其定价的难度也会加大,在诸多影响因素中,未来的股价占比最高。由于股价的不可预测性,导致了可转债的定价在实际交易中作用非常有限。随着可转债发行数量和规模的增大,越…...

【闲谈】开源软件的崛起与影响

随着信息技术的快速发展,开源软件已经成为软件开发的趋势,并产生了深远的影响。开源软件的低成本、可协作性和透明度等特点,使得越来越多的企业和个人选择使用开源软件,促进了软件行业的繁荣。然而,在使用开源软件的过…...

【教程】Linux使用aria2c多线程满速下载

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 安装aria2c&#xff1a; sudo apt-get install aria2多线程下载&#xff1a; aria2c -x 16 -s 16 <url> 比如&#xff1a; aria2c -x 16 -s 16 http://images.cocodataset.org/zips/test2017.zip...

【漏洞复现】蓝网科技临床浏览系统信息泄露漏洞

Nx01 产品简介 蓝网科技临床浏览系统是一个专门用于医疗行业的软件系统&#xff0c;主要用于医生、护士和其他医疗专业人员在临床工作中进行信息浏览、查询和管理。 Nx02 漏洞描述 蓝网科技临床浏览系统存在信息泄露漏洞&#xff0c;攻击者可以利用该漏洞获取敏感信息。 Nx03…...

JSON转换List<Map<String, Object>>、Map<String, Object>

废话就不说了 早上10点研究到现在 获取redis的JSON字符串 String getPalletListNew redisService.getRedis(“getPalletListNew”, abroad “” goodsLevel “” startPort “” destinationPort “” maxTon “” minTon); 转换Map<String,Object> public …...

单主模式和多主模式切换

1 组复制模式切换注意点 组复制有两种运行模式&#xff0c;一种是单主模式&#xff0c;一种是多主模式。这个模式是在整个组中设置的&#xff0c;由 group_replication_single_primary_mode 这个系统变量指定&#xff0c;而且在所有成员上必须保持一致。ON 表示单主模式&#…...

petalinux2018.3安装步骤

1、虚拟机安装ubuntu-16.04.7-desktop-amd64.iso &#xff08;注意&#xff1a;安装ubuntu-18.04.6-desktop-amd64.iso和ubuntu-16.04.6-desktop-i386.iso会报以下错误&#xff09; environment: line 314: ((: 10 #15~1 > 10 #3: syntax error in expression (error toke…...

ubuntu22.04下使用conda安装pytorch(cpu及gpu版本)

本文介绍了conda下安装cpu、gpu版本的pytorch&#xff1b;并介绍了如何设置镜像源 ubuntu环境安装pytorch的CPU版本与GPU版本 系统&#xff1a;ubuntu22.04 显卡&#xff1a;RTX 3050 依赖工具&#xff1a;miniconda 确认环境 lsb_release -a No LSB modules are available.…...

突破编程_C++_高级教程(模板编程的基础知识)

1 模板编程的基本概念 C 的模板编程是一种编程技术&#xff0c;它允许程序员编写处理不同类型数据的通用代码。通过使用模板&#xff0c;可以创建与特定数据类型无关的函数或类&#xff0c;这些函数或类在编译时可以根据需要生成特定数据类型的版本。这增加了代码的复用性、灵…...

胆小勿入!AI创作恐怖电影宣传片《生化危机:重生》

胆小勿入&#xff01;AI创作恐怖电影宣传片《生化危机&#xff1a;重生》 "The city is falling, and the dead walk among us." "In the shadow of the apocalypse, the fight for survival begins." "The streets are silent, but the nightmare …...

HTTP 超文本传送协议

1 超文本传送协议 HTTP HTTP 是面向事务的 (transaction-oriented) 应用层协议。 使用 TCP 连接进行可靠的传送。 定义了浏览器与万维网服务器通信的格式和规则。 是万维网上能够可靠地交换文件&#xff08;包括文本、声音、图像等各种多媒体文件&#xff09;的重要基础。 H…...

MySQL导入/导出数据

MySQL导入/导出数据 文章目录 MySQL导入/导出数据一、MySQL 导入数据1、mysql 命令导入2、source 命令导入3、使用 LOAD DATA 导入数据4、使用 mysqlimport 导入数据4.1、mysqlimport的常用选项介绍 二、MySQL 导出数据1、使用 SELECT ... INTO OUTFILE 语句导出数据2、mysqldu…...

Matplotlib初探:认识数据可视化与Matplotlib

Matplotlib初探&#xff1a;认识数据可视化与Matplotlib Fig.1 利用Matplotlib进行数据可视化( 可视化代码见文末) &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;一、数据可视化简介&#x1f333;&#x1f333;二、Matplotlib库简介&#x…...

LeetCode 0987.二叉树的垂序遍历:遍历时存节点信息,遍历完自定义排序

【LetMeFly】987.二叉树的垂序遍历&#xff1a;遍历时存节点信息&#xff0c;遍历完自定义排序 力扣题目链接&#xff1a;https://leetcode.cn/problems/vertical-order-traversal-of-a-binary-tree/ 给你二叉树的根结点 root &#xff0c;请你设计算法计算二叉树的 垂序遍历…...

TCP 和 UDP的区别

文章目录 概述区别UDPTCPTCP与UDP的选择UDP和TCP编程区别 概述 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;和 UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是互联网中两种最常用的传输层协议 总的来…...

Python 将一维数组或矩阵变为三维

Python 将一维数组或矩阵变为三维 正文 正文 话不多说直接上代码&#xff1a; import numpy as npsampling_points 10001arr np.linspace(0, 2, sampling_points) arr_3D arr.reshape(1, 1, -1) print(arr_3D) """ result: [[[0.0000e00 2.0000e-04 4.0000…...

Python如何实现定时发送qq消息

因为生活中老是忘记各种事情&#xff0c;刚好又在学python&#xff0c;便突发奇想通过python实现提醒任务的功能&#xff08;尽管TIM有定时功能&#xff09;&#xff0c;也可定时给好友、群、讨论组发送qq消息。其工作流程是&#xff1a;访问数据库提取最近计划——>根据数据…...

支付方式接入:支付宝、微信支付、微软支付

支付方式接入&#xff1a;支付宝、微信支付、微软支付 1、微信支付-接入指引 2、支付宝-接入指引 3、微软支付-接入指引 3.1、使用visual studio打包应用&#xff08;发布到微软市场&#xff09;&#xff1a;Package a desktop app from source code using Visual Studio -…...

C++中的互斥量

互斥量是一个类&#xff0c;互斥量的使用必须引入头文件#include <mutex>。互斥量就如同一把锁&#xff0c;在同一时间&#xff0c;多个线程都可以调用lock成员函数尝试给这把锁头加锁&#xff0c;但是只有一个线程可以成功给这把锁加锁&#xff0c;其他没有加锁成功的线…...

盲盒小程序开发

现如今&#xff0c;盲盒已经成为了市场上不可忽视的新型消费模式&#xff0c;并且也逐渐遍布在全球各地中。盲盒的种类商品也逐渐丰富完善&#xff0c;不在局限于性价比高的盲盒玩具、手办等&#xff0c;也发展到了美妆、电子、食品等行业&#xff0c;具有较大的实用性和收藏价…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案

在移动互联网营销竞争白热化的当下&#xff0c;推客小程序系统凭借其裂变传播、精准营销等特性&#xff0c;成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径&#xff0c;助力开发者打造具有市场竞争力的营销工具。​ 一、系统核心功能架构&…...