要点
- 问题
- 找出 σ 使得 模型(S, K, τ, r, q, σ) = 市场价格
- 常用方法
- 用 vega 的 Newton-Raphson、二分法、混合法
- 平价近似
- σ ≈ √(2π/τ) × C / S
求根
由于 Black-Scholes 的价格随波动率单调上升,所以最多只有一个波动率能复现出一个给定的价格。Newton-Raphson 用 σ_new = σ − (模型(σ) − 价格)/Vega(σ) 来更新一个猜测值,而在接近平价处几次迭代就收敛。二分法把答案夹在一个低波动率和一个高波动率之间,并不断把这个区间折半,直到价格对上;它更慢,但对那些 vega 极小、牛顿步会冲过头的深度实值或深度价外期权更稳健。
一个算例
一只 30 天的平价看涨,现价与行权价都是 100、利率为零,成交在 2.50。从 30 % 起用 Newton-Raphson:模型给出 3.430、而每单位波动率的 vega 是 11.43,所以下一个猜测值是 0.30 − 0.930/11.43 = 21.86 %。再下一步给出 21.862 %,在那里模型价格和 2.50 相符到优于千分之一。而那个快速近似式 √(2π/0.0822) × 2.50/100 在平价处也给出 21.86 %。
会改变答案的那些选择
- 用哪个价格:买价、卖价、中间价还是最后成交价。在一个很宽的市场上,买价和卖价处的隐含波动率可以差好几个点。
- 利率与股息的输入:错误的数值会让看涨与看跌的隐含波动率朝相反方向偏移。
- 时间约定:日历日、交易日,还是到那个到期时段精确收市时刻的时间。对短期期权来说,几个小时就会改变结果。
- 无解:一个低于内在价值的价格、或者高于一张看涨所能值的最大值的价格,没有隐含波动率;一个稳健的求解器会把这件事报出来,而不是返回一个数字。
在 Senzoukria 里
GEX 模块所支持的多数提供方会在它们的期权链里公布隐含波动率。在 Databento 这条路上,只有报价可得,所以应用自己去解:它取买卖价的中间价(或者被报出来的那一侧),拒绝一个在小容差之外低于内在价值的价格,并跑一个被夹在 0.01 % 与 500 % 波动率之间的 Black-Scholes 二分法,然后从结果推出那些希腊字母。一条解不出来的腿不保留任何希腊字母、而不是保留一个猜出来的值,而那些敞口总量会报出有多少条腿作出了贡献。
相关内容
同一栏目
其他语言版本
常见问题
- 两个平台为什么对同一只期权显示不同的隐含波动率?
- 它们可能用了不同的价格(中间价还是最后成交价)、不同的利率与股息假设、不同的时间约定,或者不同的模型,比如美式对欧式。每一个选择都站得住;而只有在输入被说明出来时,结果才可比。
- 有些深度价外期权为什么没有隐含波动率?
- 当买价为零、或者价格就在最小跳动上时,这个价格几乎不携带关于波动率的信息,而极小的 vega 让这次反解变得不稳定。许多求解器会跳过这类合约,而交易所的波动率指数方法也会把买价为零的期权排除掉。