傅里叶系列 P2 的定价选项

系列上文:傅里叶系列 P1 的定价选项_无水先生的博客  

一、说明

通过本文,您可以了解: 如何从知道什么是傅里叶级数到能够在黑色下为期权定价。
  • 如果您想了解更多关于傅里叶级数基础知识的信息,请查看第 1 部分。
  • 随附笔记本:Github
  • 本文基于我在阿姆斯特丹大学由Michel Vellekoop教授指导的随机微积分(2023)课程的笔记。
  • 查看第 3 部分:链接

内容:

  • 傅里叶余弦展开
  • S(T)的密度函数
  • 余弦的欧拉公式
  • 特征函数 — 几何布朗运动的特征函数。
  • 期权定价公式
  • N项的收敛性和选择良好限值的重要性
  • 分析解决方案的误差分析

“对他来说没有什么不可能的”
亚历山大大帝

二、傅里叶余弦展开

        与正弦-余弦展开类似,我们可以只用等式的余弦部分做同样的事情:

        从余弦-正弦变换到余弦变换

你可以从下面的函数中看到,我们在第 1 部分中也做了,余弦能够很好地近似相同的函数

def get_fourier_approx(f, x:np.array, a:float, b:float, N:int):fa = lambda x, n : f(x) * cos((2*pi*n*x)/(b - a))fb = lambda x, n : f(x) * sin((2*pi*n*x)/(b - a))A0 = 1/(b - a) * quad(f, a, b, limit=200)[0]Cosine_Sine_Sum = np.zeros_like(x)for n in range(1, N+1):A = 2/(b - a) * quad(fa, a, b, args=(n), limit=200)[0]B = 2/(b - a) * quad(fb, a, b, args=(n), limit=200)[0]Cosine_Sine_Sum += A*cos((2*pi*n*x)/(b - a)) + B*sin((2*pi*n*x)/(b - a))fx = A0 + Cosine_Sine_Sumreturn fxmean = 100
std  = .1 *sqrt(5)*100 
f    = lambda x : (1/(std*sqrt(2*pi))) * exp(-(x-mean)**2/(2*std**2)) #*12/0.0175a = mean - 12 * std
b = mean + 12 * std

方形功能 — 来源:笔记本

线路功能 — 来源:笔记本

正态分布 — 来源:笔记本

Avg Residuals
N   Square f   Line f      Normal Distribution
8   1.311711   0.447389    1.593045e-04
16  0.784683   0.264635    1.214211e-07
32  0.440387   0.153540    7.100142e-18
64  0.268449   0.088745    3.628299e-14
128 0.154604   0.052147    2.992953e-12 

议论

  • 结论与第 1 部分相同,正态分布非常拟合,我们需要在值 [a, b] 中取足够的范围
  • 由于仅使用余弦部分。它简化了我们必须做的许多后续步骤,并加快了该过程,因为我们必须计算更少的东西。

三、S(T)的密度函数

        要开始获得对问题的直觉,我们必须解决,最好从制作一个函数及其傅里叶变换开始,给定一些初始值,S0,T,r,sigma,它计算S_T = X的概率。

        S(T)密度函数的计算方法

        需要注意的是,[-12 西格玛,12 西格玛] 的区间涵盖 99。再加上另外 33 个 9!有人可能会说这是极端的,但使用高西格玛很重要,这样密度函数就涵盖了深度的价外选择。(我稍后会回到那个)

S(T) 的密度函数,S0=100, T=5Y, r=5%, sigma=10% — 来源: 笔记本

N    Avg Residual
8    1.897794e-02
16   7.159815e-03
32   5.616416e-04
64   2.326956e-06
128  1.384069e-10 

四、傅里叶级数的定价选项

4.1 第 1 步:变换 cos(x) 的欧拉公式

        我们将通过使用欧拉公式变换 cos(x) 来开始推导一个函数的旅程,以使用傅里叶级数为期权定价。这将有助于我们必须做的后续步骤。

4.2 第 2 步:随机变量的特征函数

        在概率论中,特征函数是为随机变量定义的复值函数。它捕获随机变量的矩和分布属性,允许使用傅里叶变换等技术分析各种统计属性。例如,对于正态分布或泊松分布之后的随机变量:

随机变量的特征函数

4.3 步骤3:使用特征函数对积分进行解析解

        在我们的用例中,我们可以转换 log(S_T) 的密度函数。结合步骤 1 继续从 的步骤 2 转换 f(x),并知道 f(x) 是具有已知特征函数的随机变量的密度:

        知道我们可以将积分转换为特征函数,使我们能够显式计算积分,我之前用 scipy 的四边形在数值上所做的。假设期望值为 [a, b] 的足够大的区间,因为 f(z) 是随机变量的密度函数。

第 4 步:将它们捆绑在一起以显式计算 A 系数

        其中 En 是 [a,b] 外部积分的一部分,如果对于概率质量 f(x),我们选择 a,b,其中 fx) 接近于零(对于正态±12sigma),则非常小。如果 f(x) 是期权的收益,并且 a,b 的收益非常小,则可以应用类似的概念

def Fourier_cosine_char_function(char_function, x:np.array, a, b, N:int):A  = lambda n : 2/(b-a) * np.real( char_function((n*pi)/(b-a))*exp((-1j*n*pi*a)/(b-a))  )fx = .5*A(0)for n in range(1, N+1):fx += A(n) * cos(n*pi * (x-a)/(b-a))return fxS0      = 100
K       = 100
r       = 0.05
sigma   = 0.1
T       = 5.0# For normal distribution 
mu      = 100
sigma   = 25
char_function = lambda u: exp(1j*u*mu -.5*sigma**2*u**2)
f             = lambda x: norm.pdf(x, loc=mu, scale=sigma)a   = 100 - 12 * sigma
b   = 100 + 12 * sigma

使用具有特征函数的显式解的正态分布的密度 - 来源:笔记本

N   Avg. Residual    Execution Time
8   1.182498e-03     0.000059
16  1.588727e-04     0.000092
32  1.160981e-07     0.000180
64  2.983220e-18     0.000358
128 2.986019e-18     0.000767 

4.4 评论

  • 如您所见,我们做得很好。执行时间很短,我们只需要 32 个项即可快速收敛
  • 使用特征函数可提高傅里叶级数近似的精度,并使计算更简单。
  • 使用 cos 的虚数变换,我们可以将系数中的积分转换为密度函数的特征函数。

五、使用傅里叶级数的期权定价

5.1 第 1 步:回顾

对于表示随机变量 z 的密度函数的函数 f我们有傅里叶余弦展开:

具有已知特征函数的随机变量z的密度函数

5.2 第二步:未来资产价格密度的特征函数

        当我们为资产定价时,我们有一个资产价值对数的密度函数,它接受参数:t、T、S(t)、r、sigma,并输出 S(T) 的概率。在随机微积分中,根据上一节的步骤 2 计算随机变量的特征函数是很简单的。我们将使用这个新工具来为具有定义收益 F(T, S_T) 的衍生品 F 定价:

计算在 T 处具有已知收益的衍生品价格的公式

我上面所做的步骤是:

  • 在 T 处贴现导数的预期收益值(第 1 行)
  • 用我们上面推导的傅里叶级数变换代替密度函数。(第 2 行)
  • 分离包含 的项并将它们打包为系数 gn

5.3 第 3 步:解析求解 g(n)

        由于 gn 中的积分是针对 T 处的值,如果收益函数是显式的,我们可以分析计算积分。在这种情况下,我们将尝试以最大收益{K-S(T), 0}为欧洲看跌期权定价。因此:

Gn系数的解析解

要获得此处显示的解,您可以使用在线定积分计算器,对于 g0,您将使用 gn 的极限,因为 n 接近 0 以获得解,因为替换 n=0 意味着无法定义 g0

5.4 第 4 步:GBM 特征函数

        现在我们有了“武器”,我们只会错过子弹。在这种情况下,假设随机变量 z 遵循 Q 下的几何布朗运动。具有特征功能的“子弹”:

几何布朗运动的特征函数

def Fourier_BS_Put(S0, K, T, sigma, r, N):_sigma, _T = max(.1, sigma), max(1, T)a = log(S0) + r * _T - 12 * _sigma * np.sqrt(_T) # Upper limit -12 std from the expected valueb = log(S0) + r * _T + 12 * _sigma * np.sqrt(_T) # Lower limit -12 std from the expected valueh       = lambda n : (n*pi) / (b-a) g       = lambda n : (exp(a) - (K/h(n))*sin(h(n)*(a - log(K))) - K*cos(h(n)*(a - log(K)))) / (1 + h(n)**2)g0      = K*(log(K) - a - 1) + exp(a)m       = log(S0) + (r - .5*sigma**2)*(T)gbm_char= lambda u : exp(1j * u * m -0.5*(u**2 * sigma**2)*T)F = g0 for n in range(1, N+1):h_n = h(n)F += 2*bs_char(h_n) * exp(-1j*a*h_n) * g(n)F = exp((-r*T))/(b-a) * np.real(F)return F

期权相对于不同执行价格的价格。S0=100, T=5Y, r=5%, 西格玛=10% — 来源: 笔记本

N  avg_residuals Ex. Time
8   5.075343e-01 0.000185
16  2.556765e-02 0.000179
32  5.810656e-06 0.000265
64  2.319065e-14 0.000461
128 2.319066e-14 0.000787 

5.5 评论

  • 这种方法被证明是计算欧洲看跌期权价值的一种非常快速有效的方法
  • 我们控制的唯一影响近似误差的因素是 N、项数和我们查看的 S(T) 值的区间 [a, b]。

六、选择正确的限制 [a, b]

        下图说明了人们在使用傅里叶级数时需要了解的 2 件非常重要的事情。
        1. 限制 [a=S_T(-z_score), b=S_T(z_score)] 需要涵盖所有可能的执行价格
        2.随着西格玛的增加,近似误差也会增加

        正确选择分布极限的图示以及近似误差如何随着较大的西格马而增加 — 来源:笔记本

        在第一个子图中,您可以看到,如果我们的执行价格为 S(T) = 600,我们将无法正确定价,因为我们仅模拟了 S(-12) 到 S(12) 的值。因此,您可以在第二幅图中看到,这种执行价格的价值将非常错误!
在第三幅图中,您可以看到涵盖各种执行价格的西格玛。但是,由于收益的形状,很难用相同数量的项准确近似函数。因此,随着西格玛的增加,您可能需要增加项 N 的数量。

        第一个子图的平均误差为:7.676e-12 第一个子图的平均误差为:2.830e-02

        第一个子图的平均误差为:1.405e-03
*对于 N = 128

七、不同项数 N 的近似误差

近似欧洲看跌期权的解析解时出错 — 来源:笔记本

        我做了一个简单的实验,看看如何在不同数量的术语上减少误差。您可以看到,我们有一个指数收敛,而计算成本是线性的。每个计算科学家的梦想。这意味着,当我们用赫斯顿模型替换特征函数时,我们不必付出蒙特卡罗数值积分的代价,其中误差随 N 的平方根而减小。

八、欧洲看跌期权所有可能输入值的错误分析

        价值 100 欧元的股票。我模拟了看跌期权的定价条件,其中:
        K = [0, 500]T = [0, 30Y]r = [-3%, 20%]sigma = [0.5%, 100%]

不同参数值的平均误差可视化 — 来源:笔记本

评论:

  • 似乎对于到期 T=0 的期权,近似值增加了误差,但这归因于已知的收益,这是我在文章开头展示的线函数,它比曲线函数更具近似性。为了解决这个问题,可以使用更多的术语。
  • Sigma 与近似误差呈线性关系,因为它将函数的形状更改为更难近似的形状。(如我之前所示)同样,为了解决这个问题,可以使用更多的术语。

总平均误差:0.00289 EUR,在我之前定义的所有给定值 K、T、r 和 sigma 范围内。

九、结论

        我逐步解释了如何从一般的傅里叶变换转向用于计算欧洲看跌期权收益的定制函数。
但是,如果您想为收益不依赖于固定间隔的衍生品定价,则必须使用更复杂的数值技术。比如有限差分,或者蒙特卡洛。

        尽管到目前为止这是一个“无用”的工具,但我们为使用Heston模型的定价选项奠定了基础,我们无法进行分析。希望您可以使用相同的原则进行定价选项

        我希望您发现这篇文章有用,我希望在第 3/3 部分见到您,我们将看到如何将赫斯顿模型与傅里叶级数一起使用以及如何在期权链上校准它。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/93948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

objective-c 基础学习

目录 第一节:OC 介绍 ​​第二节:Fundation 框架 ​第三节:NSLog 相对于print 的增强 ​第四节:NSString ​第五节:oc新增数据类型 第六节: 类和对象 ​类的方法的声明与实现 ​第七节:类…

智慧公厕整体解决方案,厕所革命实施方案的范本

随着城市化进程的不断加快,智慧城市应用正成为未来城市发展的重要方向。其中,智慧公厕作为城市基础设施的重要组成部分,其建设范本已经成为各建设中的智慧城市不可或缺的重要内容。那么,如何打造智慧公厕整体解决方案?…

将数组和减半的最少操作【贪心2】

题目&#xff1a;将数组和减半的最少操作 贪心思路&#xff1a;每次挑选最大的数来减半。 解法&#xff1a;贪心大根堆 class Solution { public:int halveArray(vector<int>& nums) {priority_queue<double> heap;double sum 0.0;for(int& x : nums){hea…

(四)激光线扫描-光平面标定

在上一章节,已经实现了对激光线条的中心线提取,并且在最开始已经实现了对相机的标定,那么相机标定的作用是什么呢? 就是将图像二维点和空间三维点之间进行互相转换。 1. 什么是光平面 激光发射器投射出一条线,形成的一个扇形区域平面就是光平面,也叫光刀面,与物体相交…

Android etc1tool之png图片转换pkm 和 zipalign简介

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、etc1tool2.1、用法 三、zipalign3.1 使用 四…

电脑右键新建记事本不见了--设置恢复篇(无需操作注册表)

电脑右键新建记事本不见了–设置恢复篇&#xff08;无需修改注册表&#xff09; 电脑不知怎么想右键新建记事本结果竟然不见了&#xff0c;搜寻网上的都是什么修改注册表&#xff0c;粘贴代码修复&#xff08;感觉太复杂了&#xff09;&#xff0c;这里介绍通过设置内重新对记…

北京开发APP需要多少钱

北京开发一个移动应用&#xff08;APP&#xff09;的费用因多种因素而异&#xff0c;包括项目的规模、复杂性、所需功能、设计要求、技术选择、开发团队的经验和地理位置等。一般来说&#xff0c;北京的APP开发费用通常较高&#xff0c;因为这是中国的主要技术和创新中心之一&a…

5.5线程同步机制类封装及线程池实现

文章目录 5.5线程同步机制类封装及线程池实现线程池线程同步机制类封装线程池实现 5.5线程同步机制类封装及线程池实现 线程池 线程池是由服务器预先创建的一组子线程&#xff0c;线程池中的线程数据应该与CPU数据差不多。线程池中的所有子线程都运行着相同的代码。当有新的任…

QT 之数据库 QSqlQuery CURD 实战

零、参考文档 https://doc.qt.io/archives/qt-6.0/qsqldatabase.html 一、开发环境 Ubuntu 20.04 QT6.0 Microsoft SQL Server 2022 Developer Edition (64-bit) 先修改 /etc/odbc.ini 的数据源配置&#xff0c;指定连接数据库 vdb&#xff0c; sudo vim /etc/odbc.ini[mss…

IDEA Rogstry中找不到compiler.automake.allow.when.app.running问题解决

网上大部分人教我们 先 File > Settings 然后 勾选 Build 下的 Compiler中的 Build project automatically 这些步骤都不会有问题 然后就会让我们 ctrl shift alt / 点 Rogstry 打开后 我人就麻了 根本没有什么 compiler.automake.allow.when.app.running 也不用慌 我们…

快速上手Apache POI

哈喽~大家好&#xff0c;这篇我们来看看快速上手Apache POI。 &#x1f947;个人主页&#xff1a;个人主页​​​​​ &#x1f948; 系列专栏&#xff1a;【日常学习上的分享】 &#x1f949;与这篇相关的文章&#xff1a; Red…

Explain执行计划字段解释说明---select_type、table、patitions字段说明

1、select_type的类型有哪些 2、select_type的查询类型说明 1、SIMPLE 简单的 select 查询,查询中不包含子查询或者UNION 2、PRIMARY 查询中若包含任何复杂的子部分&#xff0c;最外层查询则被标记为Primary 3、DERIVED 在FROM列表中包含的子查询被标记为DERIVED(衍生)&…

SpringCloudAlibaba 相关组件的学习一

目录 前言 系统架构演变 1、单体架构 2、垂直架构 3、分布式架构 4、SOA架构 5、微服务架构 一、微服务架构的介绍 1、微服务架构的常见问题 2 微服务架构的常见概念 2.1 服务治理 2.2 服务调用 2.3 服务网关 2.4 服务容错 2.5 链路追踪 3、微服务架构的常用解决…

基于视频技术与AI检测算法的体育场馆远程视频智能化监控方案

一、方案背景 近年来&#xff0c;随着居民体育运动意识的增强&#xff0c;体育场馆成为居民体育锻炼的重要场所。但使用场馆内的器材时&#xff0c;可能发生受伤意外&#xff0c;甚至牵扯责任赔偿纠纷问题。同时&#xff0c;物品丢失、人力巡逻成本问题突出&#xff0c;体育场…

SpringCloud Alibaba - Seata 部署 TC 服务,并集成微服务

目录 一、Seata 架构 1.1、Seata 架构重要角色 1.2、部署 TC 服务 1.2.1、前言 1.2.2、下载 seata-server 包&#xff0c;解压 1.2.3、修改配置 1.2.4、在 nacos 中添加配置 1.2.5、创建数据库表 1.2.6、启动 TC 服务 1.3、微服务集成 Seata 1.3.1、引入依赖 1.3.2、…

证书显示未受信任,生成的证书过期

此时若是导入证书后&#xff0c;证书显示未受信任&#xff0c;则说明我们缺失最新的AppleWWDRCA证书 解决方案&#xff1a; 重新下载AppleWWDRCA并安装。即下载最新的AppleWWDRCA证书&#xff0c;双击安装到“登录”项的钥匙串下&#xff1b;然后再安装你的开发证书或者发布证书…

SpringBoot中使用Servlet和Filter

为什么要把Servlet和Filter写在一起,因为使用方式很相似 两种方式 第一种,使用Servlet和Filter 使用Servlet 继承HttpServlet 注册Servlet 使用Filter 1.自定义过滤器 2.注册过滤器 这里注意一点 使用/**无效 至少我这2.4.5版本是这样 过滤所有请求用/* 那么其实还有…

如何在idea中隐藏文件或文件夹

例如我想要隐藏如下文件 只需要点击file->settings editor->file types->ignores Files and Folders-> 然后按照图片点击顺序操作即可 添加完毕点击apply->ok 隐藏成功后效果如下&#xff1a;

力扣第 365 场周赛虚拟参赛

有序三元组中的最大值 I class Solution { public:long long maximumTripletValue(vector<int>& nums) {vector<long long> num;for (auto &item:nums) {num.push_back(item*1ll);}long long z 0,f 1000000;long long ans 0;long long maxx num[0],mi…

基于SpringBoot的应急物资申请管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…