期权定价模型入门:Black-Scholes模型核心思想
聊到期权定价,Black-Scholes模型是绕不开的起点。我当年刚接触量化时,第一反应是——这公式看着真吓人。但用久了你会发现,它的核心逻辑其实很直观。
说白了,BS模型就是在回答一个问题:这份期权现在到底值多少钱?
它假设市场是有效的,标的资产价格服从对数正态分布,然后通过无套利原理推导出一个解析解。嗯,这里要注意,BS模型有它的理想化假设,但作为入门,它是最好的框架。
BS模型的核心思想:期权价格 = 标的资产当前价格的某种函数 - 行权价的折现值,再经过正态分布概率的加权。
我个人习惯把BS模型理解成「概率加权下的期望收益折现」。你想想看,期权到期时只有两种状态:实值或虚值。BS模型就是算出了这两种状态的概率权重,然后折现到今天。
影响期权价格的5大因素
这五个因素,我建议你刻在脑子里。每次做策略时,我都会在脑子里过一遍这五个变量当前的状态。
| 因素 | 符号 | 对看涨期权影响 | 对看跌期权影响 |
|---|---|---|---|
| 标的资产价格 | S | 正向 | 负向 |
| 行权价 | K | 负向 | 正向 |
| 剩余时间 | T | 正向 | 正向 |
| 波动率 | σ | 正向 | 正向 |
| 无风险利率 | r | 正向 | 负向 |
1. 标的资产价格(S)
这个最好理解。股票涨了,看涨期权就值钱;股票跌了,看跌期权就值钱。我在项目中遇到过一种情况:标的股价剧烈波动,但期权价格变化却不大。后来发现是波动率也在同步变化,两者对冲了。
避坑指南:我曾经以为股价涨10%,看涨期权也该涨10%左右。结果发现深度实值期权的Delta接近1,但平值期权的Delta只有0.5左右。所以别想当然。
2. 行权价(K)
行权价是合约里写死的,不会变。它决定了期权是实值、平值还是虚值。我建议你在选行权价时,先想清楚你的交易目的是什么。
- 实值期权:内在价值高,时间价值低,适合方向性交易
- 平值期权:时间价值最高,Gamma最大,适合波动率交易
- 虚值期权:便宜,但需要大行情才能赚钱,适合彩票策略
3. 剩余时间(T)
时间是你的朋友,也是你的敌人。对于期权买方,时间每天都在侵蚀你的持仓价值——这就是Theta。
我记得有一次做末日轮策略,距离到期只剩3天。那天标的只涨了1%,但期权价格翻了3倍。为什么?因为Gamma在到期前会变得极大。但反过来,如果方向错了,归零的速度也快得吓人。
我的经验:距离到期30天以上的期权,时间衰减比较平缓。最后两周,Theta会加速。最后一周,简直就是倒计时炸弹。
4. 波动率(σ)
这是最核心、也最容易被误解的因素。波动率不是标的涨跌的方向,而是涨跌的幅度。你想想看,一个股票每天波动1%和每天波动5%,期权的价格能一样吗?
BS模型里用的波动率,其实是隐含波动率——市场对未来波动率的预期。而历史波动率是过去实际发生的波动率。
| 类型 | 定义 | 用途 |
|---|---|---|
| 历史波动率(HV) | 基于历史价格计算的实际波动率 | 判断当前IV是否偏高或偏低 |
| 隐含波动率(IV) | 从期权市场价格反推出来的波动率 | 反映市场对未来波动的预期 |
避坑指南:我曾经在财报前买入跨式策略,觉得IV已经很高了,结果财报出来后IV又飙了一倍。后来我才明白,IV的「高」是相对的,你得看历史分位数,而不是绝对值。
5. 无风险利率(r)
这个因素对期权价格的影响相对较小,但你不能忽略。无风险利率越高,看涨期权越贵,看跌期权越便宜。为什么?因为资金是有时间成本的。
我一般用美国国债收益率作为无风险利率的参考。不过在实际交易中,除非利率发生剧烈变化,否则这个因素对短期期权的影响微乎其微。
隐含波动率与历史波动率
这两个概念,我建议你分开理解:
- 历史波动率:回头看,过去30天标的实际波动了多少
- 隐含波动率:向前看,市场认为未来30天会波动多少
隐含波动率是期权交易员的「体温计」。IV高,说明市场恐慌或兴奋;IV低,说明市场平静。我个人的交易习惯是:当IV处于历史低位时,倾向于做多波动率(买期权);当IV处于历史高位时,倾向于做空波动率(卖期权)。
注意:隐含波动率不是预测未来波动率的准确指标,它只是市场参与者的「共识」。共识可能是错的,而且经常是错的。
BS模型的核心公式(Python实现)
下面是我常用的BS定价函数。代码不长,但每次用的时候我都会再检查一遍参数有没有传对。
import numpy as np
from scipy.stats import norm
def black_scholes(S, K, T, r, sigma, option_type='call'):
"""
S: 标的资产当前价格
K: 行权价
T: 剩余时间(年)
r: 无风险利率
sigma: 波动率
option_type: 'call' 或 'put'
"""
d1 = (np.log(S / K) + (r + 0.5 * sigma ** 2) * T) / (sigma * np.sqrt(T))
d2 = d1 - sigma * np.sqrt(T)
if option_type == 'call':
price = S * norm.cdf(d1) - K * np.exp(-r * T) * norm.cdf(d2)
else:
price = K * np.exp(-r * T) * norm.cdf(-d2) - S * norm.cdf(-d1)
return price
# 举个例子
price = black_scholes(S=100, K=100, T=30/365, r=0.05, sigma=0.2, option_type='call')
print(f"平值看涨期权价格: {price:.2f}")
这段代码里,norm.cdf就是正态分布的累积概率函数。d1和d2其实就是标准化后的概率阈值。说白了,BS模型就是在算「到期时股价超过行权价的概率」,然后乘以相应的折现因子。
知识体系总览
下面这张图,是我整理的本章节核心逻辑。你可以把它当成一张地图,随时回来对照。
这张图把BS模型的输入、核心逻辑和输出串起来了。你每次做期权定价时,都可以对照这张图,看看自己是不是漏掉了哪个因素。
我的建议:刚开始学BS模型时,别急着背公式。先理解这五个因素各自怎么影响期权价格。等你把逻辑理清了,公式自然就记住了。
好了,这一章的内容就到这里。BS模型是期权定价的基石,后面的所有策略都会用到这些概念。记住这五个因素,你就掌握了期权定价的钥匙。