期权定价:虚值(OTM)认购期权计算价格大幅低于市价问题求解
期权定价偏差问题排查与修正方案
现有定价逻辑的核心问题
- 公式本身实现错误:你当前使用的是考虑连续股息的Merton B-S定价模型,d1推导中已经扣除了股息率b的影响,但最终定价公式未对标的资产价格做股息折现处理,正确的定价公式应包含
S*exp(-b*T)项,错误的公式会放大虚值期权的定价偏差。 - 使用统一的历史波动率不符合市场实际定价规则:期权市场存在明显的波动率微笑特征,同一到期日下虚值、实值期权的隐含波动率显著高于平值期权,你用统一的252日历史波动率31.88%为所有合约定价,会明显低估虚值期权的波动率输入,导致计算价格远低于市场价。
- 到期时间计算口径可能不匹配:你当前的
days2exp是按自然日/365计算的年化时长,而海外期权市场普遍采用252交易日口径计算到期时间,短到期合约的时间价值会因口径问题被低估,进一步压低虚值期权的计算价格。 - 未考虑低流动性合约的溢价:深度虚值期权的成交量、持仓量较低,做市商需要承担更高的对冲风险,会在理论价基础上征收流动性溢价,纯理论定价未包含该部分成本。
修正方案
1. 先修正定价公式实现错误
修正后的定价代码如下:
r = 0.0148 # 无风险利率 v = 0.3188 # 若后续替换为隐含波动率可调整该参数 b = 0.02 # 连续股息率 dt[, d1 := ((log(StockPrice/Strike)) + (r - b + (v^2)/2) * days2exp)/(v * (sqrt(days2exp)))] dt[, d2 := d1 - v * (sqrt(days2exp))] # 新增S的股息折现项 dt[, calculated_price := round(StockPrice * exp(-b * days2exp) * pnorm(d1) - Strike*exp(-r * days2exp)*pnorm(d2), 2)]
2. 替换固定历史波动率为合约对应隐含波动率
这是解决定价偏差的核心手段:
对每个到期日、每个行权价的合约,用买卖价的中间价反推对应隐含波动率(IV),将反推得到的IV代替固定历史波动率作为参数输入,即可匹配市场的波动率微笑定价规则,让计算价落在买卖价差区间内。
3. 统一到期时间计算口径
将days2exp的计算口径调整为交易日数/252,和市场通用计算规则保持一致,避免短到期合约的时间价值被低估。
4. 低流动性合约补充溢价调整
对日均成交量低于10手的低流动性合约,可在计算得到的理论价基础上额外增加5%-10%的流动性溢价,进一步贴近实际买卖价差。
内容的提问来源于stack exchange,提问作者Saurabh
相关产品推荐
相关产品推荐

