discuz 企业网站,亚马逊官网首页,如何做家乡网站,wordpress填写数据库系列上文#xff1a;傅里叶系列 P1 的定价选项_无水先生的博客 一、说明 通过本文#xff0c;您可以了解#xff1a; 如何从知道什么是傅里叶级数到能够在黑色下为期权定价。 如果您想了解更多关于傅里叶级数基础知识的信息#xff0c;请查看第 1 部分。随附笔记本#…系列上文傅里叶系列 P1 的定价选项_无水先生的博客 一、说明 通过本文您可以了解 如何从知道什么是傅里叶级数到能够在黑色下为期权定价。 如果您想了解更多关于傅里叶级数基础知识的信息请查看第 1 部分。随附笔记本Github本文基于我在阿姆斯特丹大学由Michel Vellekoop教授指导的随机微积分2023课程的笔记。查看第 3 部分链接 内容 傅里叶余弦展开ST的密度函数余弦的欧拉公式特征函数 — 几何布朗运动的特征函数。期权定价公式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, limit200)[0]Cosine_Sine_Sum np.zeros_like(x)for n in range(1, N1):A 2/(b - a) * quad(fa, a, b, args(n), limit200)[0]B 2/(b - a) * quad(fb, a, b, args(n), limit200)[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] 中取足够的范围由于仅使用余弦部分。它简化了我们必须做的许多后续步骤并加快了该过程因为我们必须计算更少的东西。 三、ST的密度函数 要开始获得对问题的直觉我们必须解决最好从制作一个函数及其傅里叶变换开始给定一些初始值S0Trsigma它计算S_T X的概率。 ST密度函数的计算方法 需要注意的是[-12 西格玛12 西格玛] 的区间涵盖 99。再加上另外 33 个 9有人可能会说这是极端的但使用高西格玛很重要这样密度函数就涵盖了深度的价外选择。我稍后会回到那个 ST 的密度函数S0100 T5Y r5% sigma10% — 来源 笔记本 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 步变换 cosx 的欧拉公式 我们将通过使用欧拉公式变换 cosx 来开始推导一个函数的旅程以使用傅里叶级数为期权定价。这将有助于我们必须做的后续步骤。 4.2 第 2 步随机变量的特征函数 在概率论中特征函数是为随机变量定义的复值函数。它捕获随机变量的矩和分布属性允许使用傅里叶变换等技术分析各种统计属性。例如对于正态分布或泊松分布之后的随机变量 随机变量的特征函数 4.3 步骤3使用特征函数对积分进行解析解 在我们的用例中我们可以转换 logS_T 的密度函数。结合步骤 1 继续从 A 的步骤 2 转换 fx并知道 fx 是具有已知特征函数的随机变量的密度 知道我们可以将积分转换为特征函数使我们能够显式计算积分我之前用 scipy 的四边形在数值上所做的。假设期望值为 [a b] 的足够大的区间因为 fz 是随机变量的密度函数。 第 4 步将它们捆绑在一起以显式计算 A 系数 其中 En 是 [ab] 外部积分的一部分如果对于概率质量 fx我们选择 ab其中 fx 接近于零对于正态±12sigma则非常小。如果 fx 是期权的收益并且 ab 的收益非常小则可以应用类似的概念 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, N1):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, locmu, scalesigma)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、St、r、sigma并输出 ST 的概率。在随机微积分中根据上一节的步骤 2 计算随机变量的特征函数是很简单的。我们将使用这个新工具来为具有定义收益 FT S_T 的衍生品 F 定价 计算在 T 处具有已知收益的衍生品价格的公式 我上面所做的步骤是 在 T 处贴现导数的预期收益值第 1 行用我们上面推导的傅里叶级数变换代替密度函数。第 2 行分离包含 z 的项并将它们打包为系数 gn 5.3 第 3 步解析求解 gn 由于 gn 中的积分是针对 T 处的值如果收益函数是显式的我们可以分析计算积分。在这种情况下我们将尝试以最大收益{K-ST 0}为欧洲看跌期权定价。因此 Gn系数的解析解 要获得此处显示的解您可以使用在线定积分计算器对于 g0您将使用 gn 的极限因为 n 接近 0 以获得解因为替换 n0 意味着无法定义 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, N1):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 期权相对于不同执行价格的价格。S0100 T5Y r5% 西格玛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、项数和我们查看的 ST 值的区间 [a b]。 六、选择正确的限制 [a b] 下图说明了人们在使用傅里叶级数时需要了解的 2 件非常重要的事情。 1. 限制 [aS_T-z_score bS_Tz_score] 需要涵盖所有可能的执行价格 2.随着西格玛的增加近似误差也会增加 正确选择分布极限的图示以及近似误差如何随着较大的西格马而增加 — 来源笔记本 在第一个子图中您可以看到如果我们的执行价格为 ST 600我们将无法正确定价因为我们仅模拟了 S-12 到 S12 的值。因此您可以在第二幅图中看到这种执行价格的价值将非常错误 在第三幅图中您可以看到涵盖各种执行价格的西格玛。但是由于收益的形状很难用相同数量的项准确近似函数。因此随着西格玛的增加您可能需要增加项 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%] 不同参数值的平均误差可视化 — 来源笔记本 评论 似乎对于到期 T0 的期权近似值增加了误差但这归因于已知的收益这是我在文章开头展示的线函数它比曲线函数更具近似性。为了解决这个问题可以使用更多的术语。Sigma 与近似误差呈线性关系因为它将函数的形状更改为更难近似的形状。如我之前所示同样为了解决这个问题可以使用更多的术语。 总平均误差0.00289 EUR在我之前定义的所有给定值 K、T、r 和 sigma 范围内。 九、结论 我逐步解释了如何从一般的傅里叶变换转向用于计算欧洲看跌期权收益的定制函数。 但是如果您想为收益不依赖于固定间隔的衍生品定价则必须使用更复杂的数值技术。比如有限差分或者蒙特卡洛。 尽管到目前为止这是一个“无用”的工具但我们为使用Heston模型的定价选项奠定了基础我们无法进行分析。希望您可以使用相同的原则进行定价选项 我希望您发现这篇文章有用我希望在第 3/3 部分见到您我们将看到如何将赫斯顿模型与傅里叶级数一起使用以及如何在期权链上校准它。