Matlab编程在债券投资中的应用

Posted 债券圈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab编程在债券投资中的应用相关的知识,希望对你有一定的参考价值。

来源:债券圈

苏振鲁  微山农商行金融市场部

随着科技发展,很多人都开始学习编程,毕竟编程的工作能够获得高薪,而且可以让交易变的简单。现在十分流行几种编程语言 Java、Python、Matlab、R语言,在大数据、人工智能以及数据分析中有广泛的应用。每种编程语言都有自己的优点,比如Python、Matlab上手简单,代码简洁、高效,已经成为很多学术研究人员的数据分析工具,作为一名金融从业者,掌握一门编程语言是非常必要的,它可以使交易变的事半功倍,本文以Matlab编程语言为分析工具,探索编程语言在债券投资中的应用。

一、债券收益率、净价、凸性、久期的计算


MATLAB程序提供了债券计算工具箱,可以轻松计算债券各项指标。

1.债券到期收益率的计算使用bndyield函数

如债券净价98.56元,票息8.5%,结算日2018/4/20,到期日2020/6/30,计算到期收益率。

bndyield(98.56,0.085,'4-20-2018','6-30-2020'),到期收益率为9.23%

2.债券价格的计算使用bndprice函数

如债券到期收益率5.83%,结算日2018-4-21,到期日2020-3-1,票息为7.5%,计算债券净价和全价。

 [price  ai]= bndprice(0.0583,0.075,'4-21-2018','3-1-2020'),净价price =102.8952,应计利息ai =1.0394,全价=price+ai=103.9346

3.债券久期的计算使用bnddurp函数

如债券净价105.67,票息5%,结算日2007年1月1日,到期日2010年6月30日,每年付息2次(6月底和12月底),债券久期。

[ModDurp,YearDurp]=bnddurp(105.67,0.05,'1-Jan-2007','30-Jun-2010',2,0),修正的麦考利久期ModDurp =3.2068 ,麦考利久期YearDurp =3.2593

4.债券凸性的计算使用bndconvp函数

bndconvp(105.67,0.05,'1-Jan-2007','30-Jun-2010',2,0),债券凸性Convexity =12.3098

二、中债收益率曲线绘制


中债收益率曲线绘制采用Hermit插值模型,Matlab提供Hermit函数,可以直接调用,只需在中债官网下载关键期限债券到期收益率即可绘制债券收益率曲线,如下图所示。

Matlab编程在债券投资中的应用                                          Matlab编程在债券投资中的应用

三、回归分析


Matlab作为一个编程语言,也可以进行统计分析,完美代替Eviews、Spass,比如构建债券到期收益率预测的线性回归方程,变量采用10年国债期货主力合约收盘价、利率互换(FR007)、大宗商品价格指数,利用逐步回归的方法,建立债券到期收益率与变量的线性关系,如下图:Matlab编程在债券投资中的应用Matlab编程在债券投资中的应用

10年国债到期收益率=11.4056+0.0555155*大宗商品价格指数-0.100572*10年国债期货收盘价+0.195781* FR007,通过R2、RMSE等统计指标可以看出,回归效果较好。

四、数据爬虫


所谓爬虫是一种按照一定的规则,自动地抓取网站信息的程序。如下图所示:Matlab编程在债券投资中的应用Matlab编程在债券投资中的应用

我们可以编写一个爬虫程序自动下载所需的网站数据,下图即为通过爬虫雅虎财经的10年美债收益率2010年至2019年的历史数据,整个数据下载过程不超过1分钟,如下图所示:Matlab编程在债券投资中的应用Matlab编程在债券投资中的应用

Matlab编程在债券投资中的应用

根据爬虫数据绘制10年美债K线、MACD指标,如下图所示:

Matlab编程在债券投资中的应用Matlab编程在债券投资中的应用

由于爬虫存在一定难度,加上各网站源代码不同或者利用了反爬虫技术,爬虫对于初学者不是一件易事。获取数据的另一种途径可以通过Matlab调用Wind数据,Wind预留了Matlab、Python、R调用接口并有相关的使用手册。

五、神经网络预测


人工神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。神经网络的种类有很多,比如BP、Elman、GRNN及深度学习。深度神经网络是近年来机器学习领域取得的重大突破性技术,它在机器学习、图片识别、语音识别等相关领域都取得了很多成果。在这里介绍LSTM神经网络,LSTM Networks 是递归神经网络(RNNs)的一种,是一种特殊类型的 RNN神经网络,该算法由 Sepp Hochreiter 和 Jurgen Schmidhuber 在 Neural Computation 上首次公布。后经过不断改进,LSTM 的内部结构逐渐变得完善起来。由于LSTM 就是为了解决长期依赖问题而生,也就是说,对信息的长期记忆是自发行为,而不是刻意去学习的。所以LSTM在处理和预测时间序列相关的数据时会比一般的 RNN表现的更好。目前LSTM Networks 已经被广泛应用在机器人控制、文本识别及预测、语音识别等领域,近年来包括谷歌在内的一系列公司都开始在深度学习中采用 LSTM神经网络。

下图即为通过LSTM神经网络学习前70%的数据,预测30%的债券收益率。Matlab编程在债券投资中的应用Matlab编程在债券投资中的应用Matlab编程在债券投资中的应用Matlab编程在债券投资中的应用Matlab编程在债券投资中的应用

可以看出LSTM神经网络预测10年国开债91期开盘收益率预测平均误差为2.8BP,均方误差0.0021069,误差较小。从统计学的角度来看,预测误差呈“两头小,中间大”正态分布,即预测误差偏离较大的较少,误差值集中在0-4BP。可以看出LSTM神经网络预测债券收益率达到预期效果,说明人工智能在债券投资预测方面应用是切实可行的。

六、技术指标


Matlab提供了绘制技术指标的函数,如K线、MACD、均线、布林带,也可以自己根据需要编写其他技术指标,下图即为通过Matlab编写的债券技术指标,弥补了债券技术分析空白,使债券技术分析不再依赖国债期货,下图即为10年国开债收益率技术指标:Matlab编程在债券投资中的应用Matlab编程在债券投资中的应用Matlab编程在债券投资中的应用Matlab编程在债券投资中的应用Matlab编程在债券投资中的应用

七、量化交易


编程的目的是为了让交易变的简单,交易操作更加准确,可以利用Matlab编写量化交易程序,实现交易的自动化。下图即为债券量化交易,策略年化收益率26.2822%,累计投资收益625.5166(BP),最大回撤比率0.038374%,夏普比率70.5852%,系统成功率74.5763%。如下图Matlab编程在债券投资中的应用Matlab编程在债券投资中的应用

Matlab编程在债券投资中的应用Matlab编程在债券投资中的应用

八、信用评级


可以利用MATLAB实现信用债的评级,建立违约预警体系,如KMV模型、聚类算法、决策树算法、神经网络,下图即为通过决策树算法、神经网络实现的债券信用自动评级程序。Matlab编程在债券投资中的应用Matlab编程在债券投资中的应用Matlab编程在债券投资中的应用

限于篇幅,上述只是Matlab应用的一小部分,可以看出Matlab可以让债券投资更加量化。Matlab、Python作为当今主流的编程语言,功能强大,无所不能,尤其在人工智能应用更是很有前景。可以推测现在是机器辅助人投资,未来将是人辅助机器投资,不久的将来程序化交易将是主流趋势。

END


以上是关于Matlab编程在债券投资中的应用的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB编程与应用系列-第3章 矩阵运算

MATLAB编程与应用系列-关于MATLAB编程入门教程的总体编写安排

MATLAB编程与应用系列-第2章 数组及矩阵的创建及操作

MATLAB编程与应用系列-第1章 MATLAB概述

matlab和VTK怎么结合编程?

Matlab以编程方式将本机库添加到路径