分类
初學者該知道的外匯那些小事

期权定价问题的有限元Richardson外推法

07-22 3201

数值计算的六大方法

有限体积法(Finite Volume Method)又称为控制体积法。其基本思路是:将计算区域划分为一系列不重复的控制体积,并使每个网格点周围有一个控制体积;将待解的微分方程对每一个控制体积积分,便得出一组离散方程。其中的未知数是网格点上的因变量的数值。为了求出控制体积的积分,必须假定值在网格点之间的变化规律,即假设值的分段的分布的分布剖面。从积分区域的选取方法看来,有限体积法属于加权剩余法中的子区域法;从未知解的近似方法看来,有限体积法属于采用局部近似的离散方法。简言之,子区域法属于有限体积发的基本方法。

有限体积法的基本思路易于理解,并能得出直接的物理解释。离散方程的物理意义,就是因变量在有限大小的控制体积中的守恒原理,如同微分方程表示因变量在无限小的控 制体积中的守恒原理一样。限体积法得出的离散方程,要求因变量的积分守恒对任意一组控制体积都得到满足,对整个计算区域,自然也得到满足。这是有限体积法吸引人的优点。有一些离散方法,例如有限差分法,仅当网格极其细密时,离散方程才满足积分守恒;而有限体积法即使在粗网格情况下,也显示出准确的积分守恒。就离散方法而言,有限体积法可视作有限单元法和有限差分法的中间物。有限单元法必须假定值在网格点之间的变化规律(既插值函数),并将其作为近似解。有限差分法只考虑网格点上的数值而不考虑值在网格点之间如何变化。有限体积法只寻求的结点值 ,这与有限差分法相类似;但有限体积法在寻求控制体积的积分时,必须假定值在网格点之间的分布,这又与有限单元法相类似。在有限体积法中,插值函数只用于计算控制体积的积分,得出离散方程之后,便可忘掉插值函数;如果需要的话,可以对微分方程 中不同的项采取不同的插值函数。

Code and 期权定价问题的有限元Richardson外推法 Finance 4 期权定价之有限差分法

\begin &\because \underbrace*IE[Call(S_T,T)] >_\\ & \text\underbrace\right)(T-t) + \sigma\epsilon\sqrt \right)>_\\ & 同时,\epsilon\sim N(0,1)\\ &\therefore Call(S_T,T)=\int_<-\infty>^ 期权定价问题的有限元Richardson外推法 <\infty>max(S_T-K,0) \phi(\epsilon)d\epsilon \\ &\ \ \ \ \ \text S_T \geq K, \\ & \text 期权定价问题的有限元Richardson外推法 < we have >S_t*exp\left(\left (r-\frac\right)(T-t) + \sigma\epsilon\sqrt \right) \geq K \\ & \therefore \epsilon \geq -\frac\right)+\left(r-\frac\right)(T-t) 期权定价问题的有限元Richardson外推法 ><\sigma\sqrt>=-d_2\\ &\therefore Call(S_T,T) =\int_^ <\infty>\left[ S_t*exp\left(\left (r-\frac\right)(T-t) + \sigma\epsilon\sqrt \right) - K \right ] \phi(期权定价问题的有限元Richardson外推法 \epsilon)d\epsilon \\ & \ \ \ \ \ 期权定价问题的有限元Richardson外推法 \ \ \ \ \ \ \ = S_t exp(r(T-t))[1-N(-d_1)]-K[1- N(-d_2)] \\ & \ \ \ \ \ \ \ \ 期权定价问题的有限元Richardson外推法 \ \ \ \ =S_t exp(r (T-t))N(d_1)-K N(d_2) \\ & \therefore Call(S_t,t)=S_tN(d_1)-e^KN(d_2) \\ \end

2. 蒙卡模拟

根据 \underbrace\right)(T-t) + \sigma\epsilon\sqrt \right)>_, \ \ \ \epsilon\sim N(期权定价问题的有限元Richardson外推法 0,1) ,对 S_T 进行采样;然后计算max(S_T-K,0);然后求出均值并折现,即为call。

3. 偏微分方程(PDE)

\begin &\because Call= f(S_t,t),通过泰勒展开 \\ & \therefore \Delta f=\frac <\partial> <\partial>\Delta S_t+ \frac <\partial< f>> <\partial>\Delta t +\frac <\partial^2> <2\partial< S_t^2>>\Delta S^2_t + \frac <\partial^2> <2\partial< t^2>>\Delta t^2 + \frac <\partial^2> <2\partial\partial < t>>\Delta S_t\Delta t+··· \\ & \because \Delta S _t =S_t r\Delta t +S_t\sigma\Delta z, \Delta z=\epsilon \sqrt, \epsilon \sim N(0,1) \\ & \ \ \ \ \ 剔除\Delta t的高次项(只保留\Delta t一次项)\\ & \therefore \Delta f =\frac <\partial> <\partial>* \left( S_t r\Delta t +S_t\sigma\Delta z \right) + \frac <\partial< f>> <\partial>\Delta t + \frac <\partial^2> <2\partial< S_t^2>>S_t^2\sigma^2\Delta t \\ & \ \ \ \ \ = \Delta t* \left( \frac <\partial< f>> <\partial> + \frac <\partial> <\partial>*S_tr + \frac <\partial^2> <2\partial< S_t^2>>S_t^2\sigma^2 \right)\Delta t + \frac <\partial> <\partial>S_t\sigma\Delta z \end

\begin & \Pi=1*f+x*S_t\\ & \Delta \Pi = \Delta f + x \Delta S_t\\ & \because \Pi 无风险\\ & \therefore \Delta \Pi =\Pi*r*\Delta t \\ & = \left( \frac <\partial< f>> <\partial> + \frac <\partial> <\partial>*S_tr + \frac <\partial^2> <2\partial< S_t^2>>S_t^2\sigma^2 \right)\Delta t + \frac <\partial> <\partial>S_t\sigma\Delta z + x\left(S_t r\Delta t +S_t\sigma\Delta z\right) \\ & 要想无风险,得消除\Delta z的影响,取出\Delta z的项,\\ & \frac <\partial> <\partial>S_t\sigma\Delta z+ xS_t\sigma \Delta z=0 \\ 期权定价问题的有限元Richardson外推法 & \therefore x=- \frac <\partial> <\partial>\\ & \therefore \Delta \Pi =\Pi*r*\Delta t= \left( \frac <\partial< f>> <\partial> + \frac <\partial> <\partial>*S_tr + \frac <\partial^2> <2\partial< S_t^2>>S_t^2\sigma^2 - \frac <\partial> <\partial>S_tr \right)\Delta t \\ & \therefore rf=\frac <\partial> <\partial>rS_t+\frac <\partial< f>> <\partial>+\frac <\partial^2> <2\partial< S_t^2>>S_t^2\sigma^2 ————(PDE) \\ \end

这里,我们将时间轴T作为横坐标,价格轴S作为纵坐标。然后将距离行权时间T等分成M份足够短的时间 \Delta t=\frac ;同时设定一个足够大的价格 S_ ,使得 S_ 远远超过行权价K,并且将 S_ 也等分为M份,使得 \Delta S_t = \frac 。

图1:网格搜索

图1红点的坐标即为 (2\Delta t, 2\Delta s) 。同时,横坐标依次为 (期权定价问题的有限元Richardson外推法 0,\Delta t, 2\Delta t, . M\Delta t) ;纵坐标依次是 (0,\Delta S, 2\Delta S, . M\Delta S) 。

图1的三个边界条件:①紫线;②绿线;③红线。这三个边界条件至关重要。

如果在Put定价中,①表示:股价=0,紫线区域全部行权,从而put price=K-0=K;②表示: put \ price = max(K-j*\Delta S_t, 0) ,j是绿线上的某一点的纵坐标;③表示:put不会行权,put price=0。

如果是在call定价中,①表示:股价=0,紫线区域不行权,从而call price=0;②表示: call \ price = max(j*\Delta S_t-K, 0) ,j是绿线上的某一点的纵坐标;③表示:call一定会行权,call 期权定价问题的有限元Richardson外推法 price= S_-K 。

  • Implicit Finite Difference method
  • Forward approximation

在得到了近似表达以后,我们就能够得到 (i,j)=(i\Delta t, j \Delta S) 位置的PDE近似表达:

这个怎么解呢?首先,i取M;那么在已知F_M(即为图1中的绿线)的情况下,能够利用矩阵运算得到F_ ;再利用F_ ,计算出F_;一直进行迭代,取到i=1,就能够最终计算得到F_0,即为当前的期权价格。

同时,矩阵中每个点 f_ 对应了时间i和价格j。

根据第二讲中的案例 [3] ,我们取 r = 0.16/100, T = 58 / 365, v = 0.407530933,S_=500, K= 230, M=5000

也就是说,将网格点分成5000*5000, \Delta S=0.01, \Delta t = 3.1783e-5 ,都足够小,且价格最大为500(远远超过K)。

Richardson外推法计算给定点处的一阶和二阶导数

崔小菜 于 2013-08-13 11:03:17 发布 3225 收藏 2

//计算给定点处的一阶和二阶导数
#include
#include

using namespace std;

class deriv
<
private:
int k;
double d1, d1_1, d1_2, d2, d2_1, d2_2, d1_new, d2_new;
double f_x, f_xhm, f_x2hm, f_xhp, f_x2hp, h, x;

public:
double func(double y)
期权定价问题的有限元Richardson外推法 <
double f = 1 / sqrt(y) - 1.77 * log(1e4 * sqrt(y)) + 0.5;
return f;
>
void diffn();
>;

void main()
<
deriv differentiate;
differentiate.diffn();
>

void deriv::diffn()
<
cout cin >> x;
cout cin >> h;
for (k = 0; k <
f_x = func(x);
f_xhp = func(x + h);
f_x2hp = func(x + 2 期权定价问题的有限元Richardson外推法 * h);
f_xhm = func(x - h);
f_x2hm = func(x - 2 * h);
d1 = (期权定价问题的有限元Richardson外推法 期权定价问题的有限元Richardson外推法 -f_x2hp + 8 * f_xhp - 8 * f_xhm + 期权定价问题的有限元Richardson外推法 f_x2hm) / (12 * h);
d2 = (-f_x2hp + 16 * f_xhp - 30 * f_x + 16 * f_xhm - f_x2hm) / (12 * h * 期权定价问题的有限元Richardson外推法 h);
if (k == 0)
<
d1_1 = d1;
d2_1 = d2;
>
if (k == 1)
<
d1_2 = d1;
d2_2 = d2;
>
h /= 2.0;
>
d1_new = (16 * d1_2 - d1_1) / 15;
d2_new = (16 * d2_2 - d2_1) / 15;
cout cout >

数值计算 - Richardson外推法求一阶导数(C++实现)

c橘子 于 2019-06-01 21:期权定价问题的有限元Richardson外推法 09:34 发布 3189 收藏 2

求导只需将 f 中的函数替换即可。

它将理查森外推法应用于泰勒级数,以使用“n”期权定价问题的有限元Richardson外推法 期权定价问题的有限元Richardson外推法 次迭代来逼近任何函数 f(x) 在 x_0 处的导数。 这是一个 O(n^2) 期权定价问题的有限元Richardson外推法 算法,可以在“数值数学和计算,Ward Cheney 和 David Kincaid,第 6 版”第 4.3 节中找到。

一阶和二阶复阶导数近似。 cdiff(F,X) 返回在 X 处计算的函数 F 的一阶导数近似值。 F 是具有单个输入参数的函数句柄,它返回与浮点数组 X 具有相同维度的输出。 灵感来源: http : //blogs.mathworks.com/cleve/2013/10/14/complex-step-differentiation/

03-25 782

数值代数–理查森外推法实验四一、实验名称理查森外推算法二、实验目的与要:实验目的:掌握理查森外推算法。实验要:1. 给出理查森外推算法思路,2. 用C语言实现算法,运行环境为Microsoft Visual C++。三、算法思路:1. 假设函数泰勒展开式可表示为 和,将两式相减,消去偶数项,则,整理得到下式,记L表示,表示微分形式,则有 (1)期权定价问题的有限元Richardson外推法 用h/2代替h,有 (2),由(1)(2)两式子.

03-24 1223

01-01 377

11-03 期权定价问题的有限元Richardson外推法 8096

一个通用的理查森外推例程,可以执行多个外推步骤,可以容纳任意领先的误差项,可以处理任何统一的细化方案例如 h/2、h/3、h/5 等,并且可以报告完整的外推表,包括与已知的良好解决方案进行比较。 能够处理矢量输入。 与 MATLAB 和 Octave 兼容。 包括 Octave 风格的单元测试。 一个人为的用法示例: 假设您的近似序列是 [1, 2, 3, 4],其中每个连续值都将网格细化了 3 倍。假设近似中的三个主要误差项是 O(h^2)、O(h^4 ) 和 O(h^5) 并且您知道确切值是 4.14。 然后你会调用 Octave:78> [result, normtable] = richardson(期权定价问题的有限元Richardson外推法 [1,2,3,4],[2,4,5], 3, 4.期权定价问题的有限元Richardson外推法 14) 结果 = 4.14163223140496 常态 = 3.13999999999999968 NaN NaN NaN

07-22 3201

#include #include using namespace std; int main(void)< double epsilon = 0.0001; // 10^-4 // y = x^2+x+3; x=2 d=5 double x1 = 2+epsilon, x2 = 2-epsilon; double f1 = 期权定价问题的有限元Richardson外推法 pow(x1,2)+x1+3, f2 = pow(x2,2)+x2+3; 期权定价问题的有限元Richardson外推法 double derivative

03-24 791

数值代数理查森外推法》由会员分享,可在线阅读,更多相关《数值代数理查森外推法(6页珍藏版)》请在人人文库网上搜索。1、实验四一、实验名称理查森外推算法二、实验目的与要:实验目的:掌握理查森外推算法。实验要:1. 给出理查森外推算法思路,2. 用C语言实现算法,运行环境为Microsoft Visual C+。三、算法思路:1. 假设函数泰勒展开式可表示为 和,将两式相减,消去偶数项,则,整理.

函数 RICHARDSONDER 在给定中心差分公式的初始步长 H_IN 和外推的阶数 N 的情况下,实现理查森外推算法,用于逼近 X0 点单值实函数 F 的一阶和二阶导数。 输出是一阶和二阶导数 F_PRIME_X0 和 F_SECOND_X0 的两个外推表。 每个表的第一列是使用的不同步长值的数组,而其他列包含导数外推; 从第 3 列开始的每一列的固定 h 的错误顺序比其左侧的低表中的 0 个条目是未计算的值。 因此,最佳近似值是每个表的最后一个元素最小误差和最小步长。 有关该函数的用法示例,请参阅 RICHARDSONSCRIPT。