【Matlab学习笔记】BS期权定价模型

论坛 期权论坛 期权     
redgavin   2019-5-24 15:39   11088   2
  数个世纪以来,数学家和金融家们都在寻找精确估计期权价值的方程。1973年,这个难题终于被三个火枪手——Fischer Black、Myron Scholes和Robert Carhart Merton解决。即Black-Scholes-Merton定价模型(BSM模型)。
  在那之前,尽管衍生品金融已经有了悠久的历史,然而大部分的研究方法与其说是理论,不如说更像是宗教信仰,既缺乏严谨的辩证逻辑,又很难找到有效的检验方法。BSM期权定价模型的重要贡献之一,在于期权定价公式不依赖于人的偏好,把所有投资者都引入同一个风险中性的世界中,为衍生品的定价和交易提供了理论依据。
  期权定价理论成为了经济学方法论转变的重要标志,即从以哲学思辨和历史描述为主向定量描述和模型检验为主过渡。凭借这一学术成就,Merton与Scholes分享了1997年的诺贝尔经济学奖,此时Fischer Black已于1995年8月去世,未能共同分享这个荣誉。
  看涨期权(call option:看涨期权又称买进期权,是指期权的购买者拥有在期权合约有效期内按执行价格买进一定数量标的物的权利。看涨期权是这样一种合约:它给合约持有者(即买方)按照约定的价格从对手手中购买特定数量之特定交易标的物的权利。期权属于金融衍生产品的范畴。就期权其本身而言,它并不是某一独立的证券,但它通常又是由证券衍生而来,依附于某一证券且以其为标的资产,因而常称衍生证券或金融衍生产品。如香港交易所推出的长实股票期权,它不是由该公司发行的,也不需该公司授权。期权的价格行为与其标的资产的价格行为有密切的关系。
  看跌期权(put option):看跌期权又称卖权选择权、卖方期权、卖权、延卖期权或敲出。看跌期权是指期权的购买者拥有在期权合约有效期内按执行价格卖出一定数量标的物的权利,但不负担必须卖出的义务。如果未来基础资产的市场价格下跌至低于期权约定的价格(执行价格),看跌期权的买方就可以以执行价格(高于当时市场价格的价格)卖出基础资产而获利,所以叫做看跌期权。如果未来基础资产的市场价格上涨超过该期权约定的价格,期权的买方就可以放弃权利。按期权履约的方式可以分欧式期权与美式期权。欧式期权必须持有至到期,是不能提前执行的。美式期权可以看做附有提前执行权利的欧式期权,即可以在到期日前的任一交易日行权。
  BS期权定价模型:BS期权定价模型是基于以下假设:
  1、股票价格行为服从对数正态分布模式;
  2、在期权有效期内,无风险利率和金融资产收益变量是恒定的;
  3、市场无摩擦,即不存在税收和交易成本,所有证券完全可分割;
  4、金融资产在期权有效期内无红利及其它所得(该假设后被放弃);
  5、该期权是欧式期权,即在期权到期前不可实施。
  6、不存在无风险套利机会;
  7、证券交易是持续的;
  8、投资者能够以无风险利率借贷。
  其完整公式为:

  Matlab中内置函数blsprice可以实现Black-Scholes、Black-Scholes-Merton和Black期权定价公式,其函数语法为:
  [Call,Put] = blsprice(Price, Strike, Rate, Time, Volatility, Yield)
  输入参数如下:
  Price:标的资产价格
  Strike:期权到期执行价格
  Rate:无风险利率(年化)
  Time:距离到期时间(以年为单位)
  Volatility:标的资产价格波动率(年化)
  Yield:(可选)资产连续贴现利率,默认为0
  输入参数如下:
  Call:欧式看涨期权价格
  Put:欧式看跌期权价格
  本实验计划选取“上证50ETF购9月1800”作为估算的期权合约,采用2种方法估算该看涨期权的价格,一是Matlab内置公式,二是直接采用BS公式计算。
  (1)       采用Matlab内置公式计算
  %%选取一个上证vix.shtml" target="_blank" class="relatedlink">50ETF期权作为标的,提取入参的各种数据
  clc;clear;
  %factor为标的资产价格
  [price1, tickerList, timeList ] = getDataByTime ( 'CP', '2016-09-07 10:30:00', '2016-09-07 10:30:00',{'000016', 'ExchangeType.SSE'}, TimeIntervals.DAY01);
  %期权上证50ETF购9月的期权,到期执行价格从1800~2350
  strike = 1800:50:2350;
  %无风险利率,选择5年期国债利率
  [rate1, tickerList2, timeList2 ] = getDataByTime ( 'QF_1YearBondInterest', '2016-09-07 10:30:00', '2016-09-07 10:30:00',{'600000', 'ExchangeType.SSE'}, TimeIntervals.DAY01);
  rate = rate1/100;
  %距离到期时间,9月底到期,距离到期时间15个交易日,全年250个交易日
  time = 15/250;
  %标的资产价格波动率(年化)
  [price, tickerList, timeList ] = getDataByLength ( 'CP', 251, '2016-09-07 10:30:00',{'000016', 'ExchangeType.SSE'}, TimeIntervals.DAY01);
  rt = log(price(2:end)./price(1:end-1));
  volatility = (sum((rt - mean(rt))*(rt - mean(rt))')/(250-1))^0.5;
  %资产连续贴现率
  yield = 0;
  for i = 1:length(strike)
  [call(i), put(i)] = blsprice(price1,strike(i),rate,time,volatility,yield);
  end
  plot(strike,call);
  title('期权到期执行价格对认购期权价格的影响');
  得到图表如下:

当strike价格为1800的时候,call price 为438.7215, put price 为0。
  (2)       采用Black-Scholes期权定价模型的公式计算
  使用Matlab直接计算该Call Option价格为:
  %%选取一个上证50ETF期权作为标的,提取入参的各种数据
  clc;clear;
  %factor为标的资产价格
  [price1, tickerList, timeList ] = getDataByTime ( 'CP', '2016-09-08 10:30:00', '2016-09-08 10:30:00',{'000016', 'ExchangeType.SSE'}, TimeIntervals.DAY01);
  %期权上证50ETF购9月的期权,到期执行价格从1800~2350
  strike = 1800:50:2350;
  %无风险利率,选择5年期国债利率
  [rate1, tickerList2, timeList2 ] = getDataByTime ( 'QF_1YearBondInterest', '2016-09-08 10:30:00', '2016-09-08 10:30:00',{'600000', 'ExchangeType.SSE'}, TimeIntervals.DAY01);
  rate = rate1/100;
  %距离到期时间,9月底到期,距离到期时间15个交易日,全年250个交易日
  time = 15/250;
  %标的资产价格波动率(年化)
  [price, tickerList, timeList ] = getDataByLength ( 'CP', 251, '2016-09-08 10:30:00',{'000016', 'ExchangeType.SSE'}, TimeIntervals.DAY01);
  rt = log(price(2:end)./price(1:end-1));
  volatility = (sum((rt - mean(rt))*(rt - mean(rt))')/(250-1))^0.5;
  %资产连续贴现率
  yield = 0;
  for i = 1:length(strike)  %使用BS公式计算的call option price
  d1 = (log(price1/strike(i)) + (rate + volatility^2)*time)/(volatility*time^0.5);
  d2 = d1 - (volatility*time^0.5);
  call(i) = price1*cdf('norm',d1,0,1) - strike(i)*cdf('norm',d2,0,1);
  end
  其中对应的1800~2350的12个执行价格的看涨期权价格为:
  可以看到,使用matlab内置公式计算,与直接采用原公式计算结果接近。
  绘图为:
  l  可以看到,看涨期权价格受执行价格的影响,当执行价格越高,看涨期权的价格就越低。
  l  当我们将执行价格设置为1800,但是标的价格设置为2000~3000,价格间隔为50。
  %factor为标的资产价格
  price1 = 2000:50:3000;
  得到计算结果如下,
  在执行价格相同的情况下,期权的价格随着标的价格的升高而增加。
感谢!
分享到 :
2 人收藏

2 个回复

倒序浏览
岁月、  3级会员 | 2019-5-24 15:40:24 发帖IP地址来自 澳大利亚
居然有代码,谢谢!
mark
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:542
帖子:157
精华:3
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP