首页 > 其他分享 >R语言中的Nelson-Siegel模型在汇率预测的应用|附代码数据

R语言中的Nelson-Siegel模型在汇率预测的应用|附代码数据

时间:2024-03-28 17:12:48浏览次数:27  
标签:语言 步骤 代码 Siegel Nelson LIBOR 模型

原文链接:http://tecdat.cn/?p=11680

这篇文章的目的是指导读者逐步使用R编程语言实现Nelson-Siegel模型的步骤。您可能已经知道,估计利率期限结构是任何资产定价的关键,因此对投资者和政策制定者起着重要的作用  点击文末“阅读原文”获取完整代码数据 )。

想法是使一条连续曲线适合现有数据。就是说,给定可获取的利率和相应的到期日(通过彭博社或任何其他数据提供商),可以使用Nelson-Siegel方法得出利率的期限结构。

 

 

  • R或RStudio
  • LIBOR / OIS利率和相应的到期日(通过彭博社或其他数据提供商)

 

一点理论…

在开始执行模型之前,让我们回顾一下基础知识。

**
**

Nelson-Siegel零息债券的到期收益率:

图片

 

零息债券价格:

图片

图片

优化问题:

这个想法是两个价格应该相等。因此,我们想找到使两个价格之间的平方差平方和最小的Nelson-Siegel因素。

图片

图片


** **

实施模型的步骤

 第1步:数据导入和变量定义

  • 我们导入LIBOR / OIS利率和相应的到期日,对其进行过滤,然后将其存储在数据框中。
  • 然后,我们使用导入的LIBOR / OIS汇率计算每个到期日的零息票价格。
  • 我们最终计算出最长(50年)和最短(1个月)到期的到期收益率(YTM)。
    • 图片 可以用50年的YTM来近似。
    • 图片 可以通过50年期和1个月YTM之间的差异来近似估算。
    • 为了简化步骤2中描述的网格搜索和步骤3中描述的优化问题,我们将近似图片 并图片使用50年和1个月的YTM。

图片

 步骤2:对目标函数进行编程

  • 我们对函数进行编程,该函数计算LIBOR / OIS利率给出的零息债券价格与Nelson-Siegel模型给出的零息债券价格之间的平方偏差的平方和。

图片


点击标题查阅往期内容

图片

R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

 步骤3:网格搜索

  • 我们定义为我们的参数范围 :

图片

  • 我们创建一个包含所有可能的组合矩阵 。

  • 我们选择产生最小平方偏差总和的组合作为我们的初始参数,以插入优化问题。

 步骤4:优化问题

  •  ,我们可以解决非线性优化问题:
    • 初始参数(x0)是在网格搜索中找到的参数。
    • 目标函数(eval_f)是在步骤2中编程的目标函数。
    • 上限和下限(ub和lb)定义如下:

图片

 

 

 步骤5:调整模型

此时获得完美契合的机会非常渺茫。必须重复步骤3和4调整模型。进一步来说:

  • 我们必须围绕步骤5中获得的结果执行第二次网格搜索,搜索范围较窄,然后重新运行优化问题。

    • 您可能还想尝试使用不同的参数组合,得出平方偏差的第二,第三或第四最小和。
  • 我们也将要执行的最后一个网格搜索 在第二轮优化得到的数值。

  • 技巧 –在模型中尝试不同的初始参数时,针对LIBOR / OIS Bloomberg数据点绘制通过求解参数获得的最终收益曲线,以了解其拟合程度。没有完美的方法可以完成–这是一个反复试验的过程。 

 

步骤6:绘制估计的收益曲线

现在,我们有了Nelson-Siegel因子,可以估算出收益率曲线:

 图片


 

结果与结论

下图以红色显示了所获得的LIBOR收益率曲线。彭博LIBOR / OIS汇率以绿色显示。

图片

尽管曲线可以很好地拟合数据点,但是我们可以看到拟合并不完美。Nelson-Siegel模型的替代方案是Svensson模型,该模型增加了两个参数以实现更好的拟合。

**
**

Svensson模型–零票息收益率:

图片

 

实施Svensson模型的步骤与实施Nelson-Siegel模型的步骤相同。

图片

点击文末 “阅读原文”

获取全文完整代码数据资料。

本文选自《R语言中的Nelson-Siegel模型在汇率预测的应用》。

点击标题查阅往期内容

R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析
分解商业周期时间序列:线性滤波器、HP滤波器、Baxter滤波器、Beveridge Nelson分解等去趋势法
用R语言用Nelson Siegel和线性插值模型对债券价格和收益率建模
R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析
R语言和QuantLib中Nelson-Siegel模型收益曲线建模分析
R语言使用随机技术差分进化算法优化的Nelson-Siegel-Svensson模型
用R语言用Nelson Siegel和线性插值模型对债券价格和收益率建模R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析
R语言中的Nelson-Siegel模型在汇率预测的应用
python使用LASSO回归预测股票收益
R语言数据的收益率和波动性交易
R语言用线性模型进行预测:加权泊松回归,普通最小二乘,加权负二项式模型,多重插补缺失值
使用SAS,Stata,HLM,R,SPSS和Mplus的分层线性模型HLM
R语言用线性回归模型预测空气质量臭氧数据

标签:语言,步骤,代码,Siegel,Nelson,LIBOR,模型
From: https://www.cnblogs.com/tecdat/p/18102152

相关文章

  • 学生代码2
    CREATETABLE`student`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'学号',`createDate`datetimeDEFAULTNULL,`userName`varchar(20)DEFAULTNULL,`pwd`varchar(36)DEFAULTNULL,`phone`varchar(11)DEFAULTNULL,`age`tinyint(3)u......
  • 【 ICCV代码复现】Swin Transformer图像分类实战教程 (训练自己的数据集)
    SwinTransformer图像分类实战教程一、环境配置1.官方环境配置2.数据集结构二、修改配置等文件1.修改config.py2.修改build.py3.修改utils.py三、训练1.Train2.Evaluation四、常见报错1.TypeError:__init__()gotanunexpectedkeywordargument‘t_mul‘我用......
  • 为什么祖传代码被称为「屎山」?
    部门捞人,前后端可投:jinshuju.net/f/o38ijj虽然说法有点搞笑,但是却一针见血!!!祖传代码被称为「屎山」,主要是因为它代表了一种混乱、难以理解和维护的代码状态。这种称呼源自于开发者在面对这些代码时的感受,它们往往包含了大量累加、冗余以及完全无用的代码,使得这些代码几乎无法被理......
  • 代码内容总结
    一、uniapp相关代码1.获取定位授权并调用接口的封装知乎:uniapp获取定位授权并调用接口的封装-知乎(zhihu.com)https://zhuanlan.zhihu.com/p/677299084CSDN:uniapp获取定位授权并调用接口的封装-CSDN博客https://blog.csdn.net/m0_70716007/article/details/137111429?s......
  • 08天【代码随想录算法训练营34期】第四章 字符串part02(KMP)
    KMP算法解决字符串匹配问题文本串aabaabaaf模式串aabaaf问:模式串是否在文本串中出现过?1)暴力解法,ptr指向文本串index0,遍历一遍发现不匹配,ptr再移向index1,遍历……依次重复,直到ptr指向32)KMP算法,ptr指向文本串index0,遍历到f发现不匹配,由于“aa”在字符串中index3和4时也出现......
  • 两分钟1200帧的长视频生成器StreamingT2V来了,代码将开源
      ChatGPT狂飙160天,世界已经不是之前的样子。新建了人工智能中文站https://ai.weoknow.com每天给大家更新可用的国内可用chatGPT资源发布在https://it.weoknow.com更多资源欢迎关注 广阔的战场,风暴兵在奔跑……prompt:Wideshotofbattlefield,stormtroopersrun......
  • 代码随想录算法训练营第六十天|● 84.柱状图中最大的矩形
    柱状图中最大的矩形题目链接:84.柱状图中最大的矩形-力扣(LeetCode)思路:掌握了……吗?还是参考了下官网思路。代码随想录(programmercarl.com)classSolution{public:intlargestRectangleArea(vector<int>&heights){intresult=0;stack<int>st;......
  • ffmpeg学习window下使用Visual Studio创建cpp项目添加ffmpeg源代码编译好的依赖库
    ffmpeg学习window下使用VisualStudio创建cpp项目添加ffmpeg源代码编译好的依赖库1.创建cpp项目启动VisualStudio,创建新项目选择控制台运用程序随便输入一个项目名称,点击创建,完成helloworld项目的创建编译和运行项目,按f7编译项目,按f5运行项目下次重新打开......
  • 天锐绿盾文档加密软件,文件加密,图纸加密,源代码透明加密系统
    #天锐绿盾#天锐绿盾文档加密系统专注于为企业提供全面的数据安全保护方案,尤其在文件、图纸以及源代码加密方面具备显著的优势,用于防止敏感信息和知识产权外泄:天锐绿盾|办公透明加密、数据防泄漏PC地址:https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-......
  • C++ Primer Plus 代码学习解析(第三章 3.8-3.11)
    3.8floatnum.cpp#include<iostream>intmain(){usingnamespacestd;cout.setf(ios_base::fixed,ios_base::floatfield);floattub=10.0/3.0;doublemint=10.0/3.0;constfloatmillion=1.0e6;cout<<&......