楼主: dewdew
18420 22

[其他] 如何求解BS模型中的波动率? [推广有奖]

11
dewdew 发表于 2005-8-21 23:08:00

用excel等工具软件都可以方便的计算出来BS模型的价格或者隐含波动率,但是偶想知道隐含波动率求解的具体算法,应该是解偏微分方程就可以的,可惜以前学过的《偏微分方程》早就还给老师,一点也不记得了,唉!

12
zhu_2000 发表于 2005-8-22 02:07:00

Hell

I am in Canada. I just finished a project for Equity option analysis and management system.

I send you my algorithm to you for free.

Good luck!

Daxin

Here is a C++ algorithm to calculate implied volatility by bisection method.

To realize the algorithm, first, you need a pricing model for options such as European BS, Binomial tree, trinomial tree models. In my algorithm, I use American style trinomial tree pricing model( I did not give you this algorithm). The easest way is using European BS model. Suppose that you already have a European BS pricing model. Now you can use my following algorithm to calculate implied volatility(you can change the function names if you like):

double impliedVolContDivTrinomial (double pricing_value, double price, double strike, double rate, double div, double T, int N, int optionType) {

//Input

//pricing_value: usually represent the market value for the option

//price: current stock price

// strike: strike price

//rate: interest rate

//div: continuous dividend rate. if it is zero, you can not consider this parameter in you algorithm

// T: the time from today to expire date in year

//N: step for time, you do not need this parameter if you use BS pricing model

// optionType: if it is 0, that means call option, if it is 1, that means put option. //output: implied volatility

double desired_accuracy=0.0001; // error limit for calculating implied volatility double low_vol=0.001; // lower volatility bound, can be adjusted double high_vol=1.0; //high volatility bound, can be adjusted

double low_pricing_value =contDivTrinomialTree (price, strike, low_vol, rate, div, T, N, optionType); double high_pricing_value =contDivTrinomialTree (price, strike, high_vol, rate, div, T, N, optionType); double new_vol=low_vol + (pricing_value-low_pricing_value)*(high_vol-low_vol)/(high_pricing_value -low_pricing_value); double new_pricing_value=contDivTrinomialTree (price, strike, new_vol, rate, div, T, N, optionType); while((pricing_value-new_pricing_value>desired_accuracy)||(pricing_value-new_pricing_value<-desired_accuracy)) { if(new_pricing_value<pricing_value) { low_vol=new_vol; low_pricing_value =contDivTrinomialTree (price, strike, low_vol, rate, div, T, N, optionType); //update } else { high_vol=new_vol; high_pricing_value =contDivTrinomialTree (price, strike, high_vol, rate, div, T, N, optionType); }

new_vol=low_vol + (pricing_value-low_pricing_value)*(high_vol-low_vol)/(high_pricing_value -low_pricing_value); new_pricing_value = contDivTrinomialTree (price, strike, new_vol, rate, div, T, N, optionType); }

return new_vol;

}

13
zhu_2000 发表于 2005-8-22 02:18:00

Sorry! I mistyped the hello as hell in the above reply.

Please forgive me.

Best regards,

daxin

14
chutru 发表于 2005-8-24 07:03:00
When you are using B-S Formular to compute implied volatility, you don't need to solve PDE, it's just a probelm of solving nonlinear equations.

15
小明 发表于 2005-8-24 10:11:00

我是金融工程的初学者,请各位指点!

qq:66798849

16
qcz 发表于 2005-8-24 10:50:00

必须要使用软件的

maple不错

把变量值和b-s模型输入就能解出结果

17
kangzier 发表于 2005-8-26 21:52:00
偏微分方程很少有显式解呀,还是得用数值方法
Fox

18
zhangjoey 发表于 2005-9-17 02:30:00

首先假设你说的是欧式价格,且假设你已经知道了其余的参数,最简单的方法就是运用EXCEL的单变量求解功能。

如果你执意要考察如何计算的方法,那么可以说没有具体的表达式,因为VOLATILITY是在BS中通过N(D1)、N(D2)来发挥作用的。但是你可以算出N(D1)的值然后求出其逆,再求解一个V的一元二次方程,得到的解中选择那个能满足N(D2)的值的解就是。而N(D1)的值可以通过平价关系得到P的值,然后连立两个公式,消除掉N(D2)项就可以得了。但是太麻烦,而且没有什么技术含量,完全是找累。

此外,你算出这个值也不能达到你所谓的评估价格的目的。因为你将算出来的数据带回BS中,一算,还是C,你知道它是高估还是低估?!所以你应该更多的去了解交易商在不同的情况下,倾向用VOLATILITY的期限结构上的什么值来计算的问题(假设交易商还是用BS公式)。

如果你的数据是美式的C,那么还要考虑红利的问题,你如果假设没有红利那么用上面的方法将就,如果有红利,那么你可能根本算不出来,你知道交易商定价的时候用多少步的树。

19
qcz 发表于 2005-9-18 11:12:00

用maple怎么解呢?

谁能把程序写写

20
livewning 发表于 2005-9-19 01:01:00

如果直接从bs方程解隐含波动率的话,算法是不稳定的。以前有个外国金融机构工作的人dupire提出一个很有名的算法,后来很多人(数学工作者)在这个基础上进一步研究稳定算法,如果你不讨厌数学的话,可以看一下同济大学姜礼尚教授的论文,姜先生在这方面很有研究,不过就是数学性很强。前不久,他得到了一个很好的结果。他的关于求隐含波动率的文章可以收得到的,国外发表。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群
GMT+8, 2025-12-26 14:41