突然看到朋友圈分享,因为之前做过S&P 100 INDEX OPTIONS (OEX)的定价研究,大晚上闲着没事儿自告奋勇答一下,数学不好所以还是侧重应用之类的。。。可能会跑偏,各位见谅。
Black-Scholes (BS) model的数学推导之前的各位大神已经说得很详细了,由于推导太长我就不贴图了 有兴趣的留言信箱我可以发你我之前financial math的教材关于BS的推导等等。
这里提一下BS model 的 assumption:
这是non-modified BS model的 assumption, 从里面可以看出来对distribution的assumption (Brownian motion,lognormal distribution) 是一个导致BS model 出现估值不准的最主要的问题,这也是为什么后面出现了诸如jump diffusion 等等extended model。
No dividends 的 assumption在后来的modified version中有调整 所以不是什么问题。
sigma在现实生活中的选取同样决定了估值的准确性,由于volatility smile的出现, historical volatility是严重失准的,那么现在普遍都用implied volatility, 这个implied又是建立在model上面逆向计算出来的,所以不同的options,implied volatility的计算是不一样的,这个需要针对不同的options做区分 比如SPX的implied volatility可以用VIX来替代,计算方法CBOE网站上面有。当然是approximately。
由于BS model不能capture early exercising feature of American style option, 所以BS最好是用来pricing European style options, 或者用来pricing American style option who is never optimal to early exercise, 什么样的American option不会被early exercise呢, 举个例子:the All Ordinaries (AO) Share Price Index (SPI) options on futures,这是因为他的margin requirement 以及non-dividend paying 两项决定的.
下面扯扯Binomial Tree (BT) model。他的推导是建立在no riskless arbitrage opportunities,跟BS model一样。同样,数学推导这里不写了,有兴趣留言邮箱我发你。这里提一下BT model和BS model的关系,当Binomial tree model中steps approach to infinite 的时候, 算出来的结果约等于Black-scholes model的结果。由于Binomial Tree model能有capture early exercising feature, 所以更适合来pricing有这样特点的American Style options,比如S&P 100 INDEX OPTIONS (OEX)。下面贴一个BT model的VBA code:- Function AmericanCall(s, x, rf, sigma, t, n) deltat = t / n up = Exp(sigma * Sqr(deltat)) down = Exp(-sigma * Sqr(deltat)) R = Exp(rf * deltat) p = (R - down) / (R * (up - down)) q = 1 / R - p Dim OptionReturnEnd() As Double Dim OptionReturnMiddle() As Double ReDim OptionReturnEnd(n + 1) For State = 0 To n OptionReturnEnd(State) = Application.Max(s * _ up ^ State * down ^ (n - State) - x, 0) Next State For Index = n - 1 To 0 Step -1 ReDim OptionReturnMiddle(Index) For State = 0 To Index OptionReturnMiddle(State) = Application.Max(s * _ up ^ State * down ^ (Index - State) - x, _ q * OptionReturnEnd(State) + _ p * OptionReturnEnd(State + 1)) Next State ReDim OptionReturnEnd(Index) For State = 0 To Index OptionReturnEnd(State) = OptionReturnMiddle(State) Next State Next Index AmericanCall = OptionReturnMiddle(0)End Function
复制代码 PS:BT model坑啊, 坑就坑在计算机慢的能跑死你, steps是根据term to maturity来的(OEX为例)所以steps越长,算起来越慢,这点就非常不feasible,当时做research差点跑死我的电脑,两三天天不能动不能关机,而且VBA比较低端,C++估计效果会好很多吧,不过我比较low不会编啊。
接下来就是Monte Carlo Simulation, 其实simulation无非就是根据historical data然后drag一个distribution出来模拟,前提是你要对distribution做assumption,又来了,又是distribution的assumption。其实不是说assumption不好,而且option这种东西非常flexible, 如果硬要assume distribution的话,个人认为不是非常适合。
这三个BS, BT, MONTE CARLO相对常常说起,那么下面我额外提一下,由于feasibility的问题 虽然这仨模型有种种问题,但是还是常常被trader使用的,因为快,因为简单,不需要测很多东西。
下面扯扯闲话,现在还有很多用non-parametric的流派,比如我导师之前用的artificial neural network (ANN), 准是准,尤其在data availability非常丰富的情况下(比如deep in the money, deep out of the money), 但是这种non-parametric模型建起来非常复杂,有很多因子需要根据sample data来决定,而且threshold也是个问题,所以并没有流传非常广泛。
看模型是否在option pricing 方面useful, 可以通过“delta" hedging 来检验这个model在hedging方面的profitability。
暂时想到这么多,水平有限,欢迎各种拍砖各种砸场各种口水....
顺便看我大半夜写得这么辛苦....给个赞呗 T-T.... |