Friday, July 30, 2021

EXCEL 计算 Black-Scholes 和 Black 和 Garman Kohlhagen 和 Daren Wilcox 几种 options 和 futures 模型

Sheldon Natenberg 的书 Option Volatility & Pricing - Advanced Trading Strategies and Techniques 把深奥的数学知识打包在 Appendix B 里面,在正文里作者只告诉读者需要输入哪些值并因此得出哪些值。

※ 顺便说一下,我阅读的是这本书的 1994 版,后来这本书于 2014 年出了第二版。

书中多次用到了附录 B 里的 Black-Scholes ModelBlack Model 两个公式。第一个也叫做 73 Model,因为它是在 1973 年由 Fischer Black 和 Myron Scholes 两人署名发表的;后面这个也叫做 Black-76 Model,因为它是在 1976 年由 Fischer Black 发表的。

※ Scholes 如何发音?英国人是这样读的。大家还记得曼联队员 Paul Scholes 吗?如果我说中文名字“保罗・斯科尔斯”你一定想起来了。类比一下,school 大家一定会读吧?但是 Wikipedia 上 Myron Scholes 的词条里是这样标注的。我是这样猜想的,既然他是犹太人,很有可能是德国或者东欧移民过来的,那么 sch 一般同 sh 发音。

回归正题,本文的目的是把这两个模型的公式放到 EXCEL 里,输入已知量,求出未知量。

先来看看变量缩写的意思。

看上图。

  • U 是标的的当前价格,也叫做 spot price,或 underlying price。
  • E 是执行价格,或者行权价格,也叫做 strike price。
  • t 需要年化,比如离到期日还有 10 周,就是 10/52;比如离到期日还有 90 天,那么就是 90/365。
  • v 和 r 都输入纯小数(百分数也是小数,所以当然也可以输入百分数)。

一般来说需要输入以上五个已知量,求出 C、P、call delta、put delta、call gamma、call theta、put theta、call vega、call rho、put rho。

公式中还要用到:

  • e 欧拉常数,在 EXCEL 里使用 EXP(1) = e。
  • ln 自然对数——也就是以欧拉常数为底的对数,在 EXCEL 里函数是 LN()。
  • N'(x) 正态分布曲线,或者叫做概率密度函数(normal probability density function - PDF)——也就是某点的纵轴值。因为均值 mu 是 0,标准偏差 sigma 是 1,所以公式中它是标准正态分布曲线。。
  • N(x) 正太累积密度函数,或者正太累积分布函数(normal Cumulative Distribution Function - CDF)——是 N'(x) 的积分,也就是某点左边的正太分布曲线图形的面积。当然在本书的公式中,曲线都是标准正太分布曲线。
  • PDF 和 CDF 在 EXCEL 中函数是 NORM.DIST (x, mean, standard_dev, cumulative) ,mean 在我们这里是 0,standard_dev 是 1,cumulative 是布尔值,CDF 用 TRUE,PDF 用 FALSE。

有了已知量和公式,直接输入到 EXCEL 中就可以求出未知量了。

下面是 Black-Scholes Model 公式。

下面是 Black Model 的公式。


+++++

第五章一开始用到了如下的例子:

  • June futures price = 101.35
  • Interest rate = 8.00%
  • Time to June expiration = 10 weeks
  • June 100 call
  • Assumed volatility = 18.3%

用 Black Model 计算出 Theoretical call value 和 call deta。

也就是我们已经知道了:

  • U = 101.35
  • E = 100
  • t = 10/52
  • v = 18.30%
  • r = 8.00%

如下图是我的 EXCEL:


  • h = (LN(C3/C4)+C6^2*C5/2)/(C6*SQRT(C5))
  • C = C3*B16-C4*EXP(-C7*C5)*NORM.DIST(B14-C6*SQRT(C5),0,1,TRUE)
  • call delta = EXP(-C7*C5)*NORM.DIST(B14,0,1,TRUE)

C = 3.88,call delta = 0.57,与书中结果一致。



No comments:

Post a Comment