0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于用MATLAB应用程序估算风险中性密度的性能分析和介绍

MATLAB 来源:djl 作者:Andrea Barletta 2019-09-12 15:13 次阅读

由于场外期权合约的买卖在交易双方间私下进行而非通过公开市场,因而可能很难确定合约的价格有利于买方还是卖方。为对这些合约进行定价,金融分析师往往依据看涨期权或看跌期权价格估算出风险中性密度(RND)值。常规做法是根据历史数据来确定定价模型的参数值,进而估算 RND 值。

根据参数定价模型估算 RND 有几个缺点:

如处理时间较长而且可能存在误差。简单模型可快速完成调试,但很可能会与金融数据的一些历史经验特征不一致,生成的结果误差较大;复杂模型能够提供更精确的结果,但所需调试时间较长 — 如果没有闭式解(解析解),通常需要长达数小时。即使复杂的模型能够提供看似合理的结果,也可能由于没有应用有效的数值分析技术而存在偏差。此外,由于定价模型主要依据历史数据,由建模人员自行决定需要采纳的历史数据量——这种主观决定会影响结果。

Aarhus 大学的研究团队开发了一款非结构化无模型 RND 估算方法,不依赖参数化模型,而是完全由数据自身决定。这种方法利用当前数据(而非历史数据)通过正交多项式展开式估算 RND 和期权敏感度指标(Greeks),这样能够比应用模型的方法更快得到结果 — 通常仅需几秒钟来估算 RND。

为演示我们的方法,便于学生、分析师和研究人员进行应用,我们将它封装为 MATLAB 应用程序(图 1)。我们在两篇文章中对该方法进行了详述 ,A Non-Structural Investigation of VIX Risk Neutral Density(估算 RND)和 It Only Takes a Few Moments to Hedge(估算敏感度指标),并用 Risk-Neutral Density Fitting Tool 应用程序具体实现了该方法。

关于用MATLAB应用程序估算风险中性密度的性能分析和介绍

图1:Risk-Neutral Density Fitting Tool 应用程序。

我们为什么选择 MATLAB

我们决定创建 MATLAB 应用程序估算 RND,因为我们希望研究成果得到广泛应用,而不是仅限于在量化经济学领域或是熟悉 MATLAB 编程的金融研究人员使用。

我们发现,MATLAB 大大加快了开发进度。我们在两到三个月内完成了大部分开发工作 — 据估算,使用传统编译语言大约需要两年时间。 MATLAB 是一种解释型语言并基于 JIT 编译器运行,这令我们避免了繁琐的“编辑-编译-测试”周期;相反,我们采用交互形式开发方法,调用 MATLAB 中的函数并反复检查结果。不依靠第三方库,也无需自行编写线性回归、主成分分析及其他功能算法,而是利用Curve Fitting Toolbox、Financial Toolbox、Optimization Toolbox 和 Statistics and Machine Learning Toolbox 等工具包中经过验证的函数。使用解释型语言时,运算性能是我们关注的问题。但是,通过采用 MATLAB 中的向量化运算和优化的函数,其性能与编译语言基本接近。

除了加快实施我们的 RND 方法之外,MATLAB 还可以轻松构建界面并将其与底层代码封装成为一款应用程序。我们使用 MATLAB 应用程序开发工具设计窗口、按钮及界面中的其他控件。然后,将完整应用程序封装为单一安装程序文件,并发布到项目的 GitHub 页面供用户下载

通过应用程序估算 RND 并查找敏感度指标 (Greeks)

下载并安装应用程序后,通常先从 Option Metrics 或 Chicago Board Options Exchange (Cboe)等数据源加载期权价格数据(MATLAB应用程序支持直接调用这两个数据源)。然后用户检查输入数据对应的价格曲线并根据需要调整行权价格的上下限(看跌或看涨期权最低和最高行权价格)。之后用户选择核、展开式阶数以及用于估算展开系数的方法(例如,主成分分析)。核指定概率分布,为 RND 提供一个初始值;而展开式阶数则定义正交多项式数量,“校正”核来估算 RND。

此应用程序包含多个内置核,包括 beta gamma、广义逆高斯、广义 Weibull 和对数正态,而且用户可以通过自己编写 MATLAB 函数来对内置核进行扩展。展开式阶数越高,展开式就越精确,但估算所需的时间也会更长(图 2)。

关于用MATLAB应用程序估算风险中性密度的性能分析和介绍

图 2:隐含波动曲线及使用广义 Weibull 核、主成分分析和 17阶 展开式估算出的 RND 值。

图示中使用的数据集包含 2011 年 12 月 21 日在 Cboe Volatility Index (VIX) 上的 1 月期看涨期权和看跌期权。

最后,计算敏感性指标 delta、gamma 和 vega,用户只需单击应用程序的“查找敏感度指标”按钮。界面中会显示这三个指标图(图 3)。

关于用MATLAB应用程序估算风险中性密度的性能分析和介绍

图3:敏感度指标图:看涨期权 delta、 gamma 和 vega。

所有图均可另存为 MATLAB 图像或者 PNG、PDF 或 EPS 文件,所有结果均可导出并保存以便进一步分析。

将来升级的功能

从我们收到的反馈来看,用户对于该应用程序予以了肯定。基于这些反馈,我们将进一步改进应用程序并规划对其的升级。例如,我们考虑在分析中添加时间点和到期日,我们将研究使用多变量密度,并应用期权价格的历史数据来预测整个密度曲线,而非仅在某一个时间点的曲线。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6604

    浏览量

    87972
  • 函数
    +关注

    关注

    3

    文章

    4154

    浏览量

    61574
收藏 人收藏

    评论

    相关推荐

    STM32F4用来作为计算单元的时候,如何评估算法或应用的时间性能

    STM32F4用来作为计算单元的时候,如何评估算法或应用的时间性能?能不能通过配置使之具备计时功能?精度达到us级别就足够了。 关于计时,在debug状态下,通过states的计数值可以计算时间
    发表于 05-16 06:37

    应用程序中的服务器错误怎么解决?

    在使用应用程序时,可能会遇到服务器错误的问题。这种错误通常会导致应用程序无法正常运行 ,给用户带来不便。下面将介绍应用程序中的服务器错误及其解决方法,帮助您快速解决这一问题。
    的头像 发表于 03-12 15:13 2141次阅读

    开发java应用程序的基本步骤是

    ava是一种面向对象的编程语言,广泛用于开发各种类型的应用程序。在开发Java应用程序时,有一些基本步骤需要遵循,以确保应用程序的正确性和可靠性。 1.确定需求:这是开发任何应用程序
    的头像 发表于 11-28 16:52 979次阅读

    Flask如何升级到 Quart 应用程序

    本文详细介绍了典型的生产环境的 CRUD 应用程序从 Flask 到 Quart 的转换,并展示相关的性能改进优势。 将这个 Flask-pyscopg2 应用程序升级到 Quart-
    的头像 发表于 11-01 16:23 436次阅读
    Flask如何升级到 Quart <b class='flag-5'>应用程序</b>

    PGO到底是什么?PGO如何提高应用程序性能呢?

    PGO到底是什么?PGO如何提高应用程序性能呢? PGO,全称为Profile Guided Optimization,译为“基于特征优化”的技术,是一种通过利用应用程序的运行特征数据来优化性能
    的头像 发表于 10-26 17:37 1665次阅读

    AN1292与电机控制应用程序框架对比分析

    文档对AN1292软件与motorBench™开发套件随附的MC应用程序框架之间的差异进行了分 析,旨在回顾全新MC应用程序框架代码相对于AN1292的参考应用笔记软件的改进和限制。
    发表于 09-22 17:37 2次下载
    AN1292与电机控制<b class='flag-5'>应用程序</b>框架对比<b class='flag-5'>分析</b>

    如何使用Tokio 和 Tracing模块构建异步的网络应用程序

    ,并在调试和故障排除时提供有用的信息。 在本教程中,我们将介绍如何使用 Tokio 和 Tracing 模块来构建一个异步的网络应用程序,并使用 Tracing 来记录应用程序的行为和性能
    的头像 发表于 09-19 15:29 426次阅读

    .NET应用程序性能测试

    WebLOAD通过轻松的测试脚本创建和基于深度服务器端分析性能测试.NET应用程序提供了全面的解决方案。
    的头像 发表于 08-29 09:40 359次阅读

    移植和优化用于Arm文档的HPC应用程序

    介绍如何将高性能计算(HPC)应用程序移植到基于ARM的硬件上,如何在移植后开始优化应用程序,以及ARM提供了哪些工具来帮助
    发表于 08-25 07:58

    Arm高性能计算工具试用分析

    全球排名前20的超级计算机用户中有70%使用Arm工具来快速理解应用程序性能,并通过调试、分析和优化更快地获得结果努力。
    发表于 08-02 09:51

    可用于提高虚拟现实应用程序图形性能的各种技术介绍

    本指南介绍了可用于提高虚拟现实应用程序图形性能的各种技术。 在本指南的最后,您可以检查您的知识。您将了解诸如混叠、mipmapping和凹凸贴图等主题
    发表于 08-02 08:38

    介绍无刷直流电机的应用程序

    电子发烧友网站提供《介绍无刷直流电机的应用程序.pdf》资料免费下载
    发表于 07-24 15:22 2次下载
    <b class='flag-5'>介绍</b>无刷直流电机的<b class='flag-5'>应用程序</b>

    matlab对信号进行傅里叶变换

    傅氏变换分析是信号分析中很重要的方法,借助matlab可以很方便的对各类信号进行傅氏频域分析。本文介绍了集中离散的傅氏变换以及
    的头像 发表于 07-19 10:10 1549次阅读
    <b class='flag-5'>用</b><b class='flag-5'>matlab</b>对信号进行傅里叶变换

    关于MATLAB求导实践的总结

    MATLAB是一个功能强大的数值计算软件,提供了多种方法来进行求导操作。在实践中使用MATLAB进行求导可以帮助我们解决各种科学、工程和数学问题。下面是一份关于MATLAB求导实践的总
    的头像 发表于 07-17 12:33 1293次阅读

    Arduino做一个语音应用程序来打开和关闭警报

    电子发烧友网站提供《Arduino做一个语音应用程序来打开和关闭警报.zip》资料免费下载
    发表于 07-10 10:46 0次下载
    <b class='flag-5'>用</b>Arduino做一个语音<b class='flag-5'>应用程序</b>来打开和关闭警报