[金融投资]金融衍生工具-数值解法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(1)模拟股价在50天后的价格
假设股价满足几何布朗运动,即
得到:
dS rdt dw
S
St
S e r 2 / 2 tz 0
t
• 注意这里漂移率是无风险收益率。 • E(St)=?
Matlab 程序
% Assetpaths.m function Spaths=AssetPaths(s0,r,sigma,T,Nsteps,Nrepl) Spaths=zeros(Nrepl,1+Nsteps); Spaths(:,1)=s0; dt=T/Nsteps; nudt=(r-0.5*sigma*sigma)*dt; sidt=sigma*sqrt(dt); for i=1:Nrepl for j=1:Nsteps
c = monte(100,105,0.1,0.25,1,10000)
c = monte (100,105,0.1,0.25,1,10000)
用B-S公式计算期权价值
function price = bsprice(s0,X,r,sigma,T) c1=sigma*sqrt(T); d1=log(s0/X)+(r+sigma*sigma/2)*T./c1; d2=d1-sigma*sqrt(T); n1=normcdf(d1,0,1); n2=normcdf(d2,0,1); price=s0.*n1-X*exp(-r*T).*n2;
t
t
• 再根据 s = j△s,把上面公式代入微分 方程可得:
[c,Ncrossed]=upoutcall(100,105,0.10,0.25,1,120,250,10000)
[c,Ncrossed]=upoutcall(100,105,0.10,0.25,1,200,250,10000)
考虑亚式期权的定价程序
max
1 N
N i 1
s(ti
)
X
,0
c = bsprice(100,105,0.1,0.25,1)
问题:
• 随机模拟的时候,“随机”导致每次模拟 得到的值不相等
• 怎么办呢?
c = monte (100,105,0.1,0.25,1,1000)
c = monte (100,105,0.1,0.25,1,20000)
2、障碍期权的定价
– 比如,股票价格的未来运动路径
• 多次仿真,得到很多条路径,然后求期 权价格的平均值
无套利定价定理1
• 资产价格等于风险中性测度下该资产未来 损益的期望在无风险收益下的贴现值
p0 ert Eˆ pt
1、标准欧式期权定价:
• 计算一个欧式看涨期权的价值
– 当前股价为100,执行价格为105 – 无风险利率为10%,股价年波动率为25% – 到期日为12个月,即T=1
• 经过测算,当汇率到达1.6000美元时, 公司为盈亏平衡点。当汇率达到1.4500 美元时,公司就愿意马上卖出远期美元 锁定
• 如何办?
(1) 障碍期权 barrier option
• 根据标的资产在期权到期日前是否触及 某一障碍价格来决定到期日的最后损益。
• 比如:
上面例子中,构造这样一个期权: 执行价格为1.6000美元的看涨期权,那么当
– 障碍价格要高于资产价格和执行价格 – 如果触及障碍价格,则期权失效
• 这两个期权的组合是什么?
(2) 障碍期权的定价
• 这是一个路径依赖的期权,且不牵涉到 到期前的决策
• 蒙特卡洛模拟比较适合
• 举例:计算一个上涨触发看跌期权的价 值
• 当前价格100,执行价格105,触发价格 120
• 无风险利率0.10,波动率0.25 • 到期日期限12个月
path=AssetPaths(s0,r,sigma,T,Nsteps,1); crossed = any( path >= sb); if crossed == 0
Payoff(i) = max(0, path(Nsteps+1) - X); Ncrossed= Ncrossed +1; else Payoff(i) = 0; end end [c,aux,CI] = normfit(exp(-r*T)*Payoff);
[c,Ncrossed]=upincall(100,105,0.10,0.25,1,200,250,10000)
上涨触销看涨期权
function [c,Ncrossed]=upoutcall(s0,X,r,sigma,T,sb,Nsteps,Nrepl) Payoff = zeros(Nrepl,1); Ncrossed=0; for i=1:Nrepl
Spaths(i,j+1)=Spaths(i,j)*exp(nudt+sidt*randn); end end;
close clear paths=AssetPaths(100,0.10,0.25,1,249,10000); plot(1:250,paths(1,:)) hold on plot(1:250,paths(2,:)) hold on plot(1:250,paths(3,:))
0, △s, 2△s, … , Smax
坐标图
股 票 价 格
2S
S
























































0 t t t
时间
有限差分方法的座标方格
(1) 内含(隐式)的有限差分法
• 点 (i,j) 前项差分近似:
f fi, j1 fi, j
• 满足的微分方程为:
f t
1 2
2 f s 2
2s2
rs f s
rf
• 把当前时刻到到期日T时刻,等分为N个 时段,记△t = (T-t)/N,则从t到T分别为:
t, t+ △t, t+2△t, … , T
• 把股价也分为M个区间, 记△s=Smax/M,则 股票价格从0 到Smax分别为:
超过1.6000时候,期权持有人可以获得正 收益;但是,把障碍价格设定为1.4500美 元,即如果到期日前触及1.4500,那么马 上进行远期交易,期权作废
• 下跌触销看涨期权 down-and-out call
– 一般来说,障碍价格要小于执行价格,也 会低于当前资产价格
– 如果触及障碍价格,则期权作废
控制语句
• 条件语句:
If 条件1 语句1; Elseif 条件2 语句2; else 语句3; end
• 循环语句:
For 条件 语句; end
学会看帮助
• help • doc
蒙特卡洛模拟
• 如果金融产品的价格依赖于某些变量的 未来值
• 假设这些变量为随机变量 • 模拟随机变量的未来运动路径
150 140 130 120 110 100
90 80 70 60
0
50
100
150
200
250
(2) 计算期权价值
C erT E max[0, ST X ]
function Price = monte(s0,X,r,sigma,T,Nrepl)
muT=( r - 0.5*sigma*sigma)*T;
• 点乘,点除:.* , ./
– 对应元素相乘相除
• 矩阵的乘方: ^ • 点乘方: .^
– 对应元素乘方
矩阵函数
• 矩阵转置:’ • 方阵的行列式 : det • 矩阵的逆:inv • 矩阵的迹 :trace,即对角线元素之和 • 矩阵的秩 :rank • 对角线元素抽取:diag • 矩阵维数:size • 向量长度:length
siT=sigma*sqrt(T);
DiscPayoff=exp(r*T)*max(0,s0*exp(muT+siT*randn(Nrep l,1))-X);
[Price, Varprice, CI]=normfit(DiscPayoff); 注:normfit函数为计算正态分布中参数的
估计值及置信区间
– 也可绘制二维、三维图形,输出结果可视 化。
数据类型
• MATLAB,即“矩阵实验室”,它是以 矩阵为基本运算单元。
– 同一行中的元素用逗号(,)或者用空格 符来分隔;
– 不同的行用分号(;)分隔; – 所有元素处于一方括号([ ])内。
特殊矩阵
• B = zeros(m,n) %生成m×n全零阵
• Y = o) %生成m×n随机矩 阵,其元素在(0,1)内
• Y = randn(m,n)
%生成m×n标准正
态分布随机矩阵
基本运算
• 矩阵的加减乘:+,-,* • 除法:
– 左除(\): x=a\b是方程a*x =b的解 – 右除(/):x=b/a是方程x*a=b的解
程序
function [c,Ncrossed]=upincall(s0,X,r,sigma,T,sb,Nsteps,Nrepl) Payoff = zeros(Nrepl,1); Ncrossed=0; for i=1:Nrepl
path=AssetPaths(s0,r,sigma,T,Nsteps,1); crossed = any( path >= sb); if crossed == 1
• 下跌触发看涨期权 down-and-in call
– 如果触及障碍价格,则期权生效;如果没 有触及,期权作废
• 这两个期权的组合是什么?
• 上涨触发看跌期权 up-and-in put
– 障碍价格要高于资产价格和执行价格 – 如果触及障碍价格,则期权生效
• 上涨触销看跌期权 up-and-out put
Payoff(i) = max(0, path(Nsteps+1) - X); Ncrossed= Ncrossed +1; else Payoff(i) = 0; end end [c,aux,CI] = normfit(exp(-r*T)*Payoff);
[c,Ncrossed]=upincall(100,105,0.10,0.25,1,120,250,10000)
• 举例: • 一家英国公司计划出口商品到美国,并
以美元固定了销售价格。销售收入在3 个月后收到。 • 面对汇率风险,规避的一个方法就是卖 出远期美元 • 当前的即期汇率 1 英镑=1.5000美元, 三个月期远期汇率1 英镑=1.4890美元
规避汇率风险的办法
1、卖出远期美元
– 锁定价格,规避了风险,但也无法获取美 元升值的收益
2、购买英镑兑美元看涨期权(美元贬值)
– 用于规避美元贬值的风险,美元贬值时候 期权获取收益,用于弥补损失
– 但美元升值则不用执行 – 问题:支付期权费用
3、做组合期权--买一个看涨期权的同 时,卖出看跌期权
– 可以通过卖出看跌期权,减少买入期权的 费用
– 问题:两边的执行价格会受影响,即看涨 期权的执行价格无法太低,而看跌期权的 价格无法太高
s
s
• 点 (i,j) 后项差分近似:
f fi, j fi, j1
s
s
• 对称的近似方法:
f fi, j1 fi, j1
s
2s
• 另外,
2 f s 2
fi, j1 s
fi, j
fi, j
fi, s
j 1
/
s
fi, j1 fi, j1 2 fi, j (s)2
f fi1, j fi, j
有限差分法
• 有限差分法
– 将微分方程转换为差分方程,再用迭代法 求解
– 适合于各种路径依赖的期权,包括美式期 权
• 用Matlab 程序实现有限差分法
1、考虑美式看跌期权的例子
• 考虑一个期间不支付红利的美式看跌期 权
• 当前股票价格50,执行价格50 • 无风险收益率0.10,波动率0.40 • 到期期限为5个月
常用函数
• 三角函数:sin, cos • e为底数的指数函数: exp • 对数,log, log10 • 数值的绝对值 : abs • 开平方:sqrt • 取整运算: round, floor, ceil • 统计运算:mean, var, cov, std • 分布函数:normpdf, normcdf • 绘图函数:plot
第五讲 期权的数值解法
• Matlab简介 • 蒙特卡洛模拟 • 有限差分法 • 二叉树法
Matlab简介
• MATLAB是建立在向量、数组和矩阵 基础上的一种分析和仿真工具软件包
– 包含各种能够进行常规运算的“工具箱”, 如矩阵代数运算、数组运算、方程求根、 优化计算及函数求导积分符号运算等
– 提供了编程计算的编程特性,通过编程可 以解决一些复杂的工程问题
相关文档
最新文档