如何用Quantsbin实现Black-Scholes模型:欧股期权定价与五大Greeks计算实战
【免费下载链接】QuantsbinQuantitative Finance tools项目地址: https://gitcode.com/gh_mirrors/qu/Quantsbin
📊Quantsbin是一个开源的量化金融 Python 工具库,专为期权定价与风险分析设计。本文以它为核心,带你用Black-Scholes 模型(BSM)完成一次完整的欧股期权定价,并一次性算出 Delta、Gamma、Theta、Vega、Rho五大 Greeks风险指标——整个过程只需几行代码,无需手写复杂公式。
为什么选择 Quantsbin?
很多新手接触期权定价时,最头疼的是:
- BSM 公式涉及标准正态分布、d1/d2 等概念,手写容易出错
- Greeks 有解析解,也有数值解,实现一套完整工具成本很高
Quantsbin 把这些都封装好了:
| 能力 | 说明 |
|---|---|
| 欧式期权定价 | 支持 BSM、二项式树、蒙特卡洛三种模型 |
| 美式期权定价 | 支持二项式树、Longstaff-Schwartz 蒙特卡洛 |
| 四大资产类别 | 股票(Equity)、外汇(FX)、商品(Commodity)、期货(Futures) |
| Greeks 计算 | BSM 用解析解,其他模型自动切换数值解 |
| 隐含波动率 | 在 BSM 框架下一键反解 IV |
| 策略分析 | 组合多腿期权,直接生成估值与 Greeks 图表 |
如何快速安装 Quantsbin?
打开终端执行一条命令即可完成安装:
pip install quantsbin它的依赖(scipy、pandas、matplotlib、numpy)会一并自动安装。如果希望从源码使用,可以克隆仓库:
git clone https://gitcode.com/gh_mirrors/qu/Quantsbin项目结构非常清晰,核心定价逻辑都在quantsbin/derivativepricing/目录下,蒙特卡洛模拟则在quantsbin/montecarlo/中。
第一步:定义你的欧式股票期权
Quantsbin 的设计思路是"先定义标的,再绑定模型"。股票期权由EqOption类定义,需要 4 个参数:
| 参数 | 含义 | 示例 |
|---|---|---|
option_type | 看涨/看跌 | 'Call' |
expiry_type | 到期类型 | 'European'(欧式) |
strike | 行权价 | 100 |
expiry_date | 到期日(YYYYMMDD 格式) | '20180630' |
import quantsbin.derivativepricing as qbdp eq_option = qbdp.EqOption(option_type='Call', expiry_type='European', strike=100, expiry_date='20180630')💡 小技巧:不确定某种期权支持哪些模型?调用eq_option.list_models()即可列出可选的定价模型。
第二步:绑定 Black-Scholes 模型并定价
通过engine()方法把市场参数绑定到 BSM 模型,期权价格立刻可得:
pricer = eq_option.engine(model='BSM', spot0=110, # 当前股价 pricing_date='20180531', volatility=0.25, # 波动率 25% rf_rate=0.05, # 无风险利率 5% yield_div=0.01) # 连续股息率 1% premium = pricer.valuation() # 期权理论价格运行结果:
期权价格 ≈ 10.6096
这就是 BSM 模型给出的理论期权价值。底层公式实现见quantsbin/derivativepricing/pricingmodels.py中的BSMFramework类,d1、d2、discount_factor都是现成的属性,完全符合经典教科书推导。
第三步:一次算出五大 Greeks
这是 Quantsbin 最实用的功能——对 BSM 模型,risk_parameters()直接返回解析解的完整风险指标:
greeks = pricer.risk_parameters()结合上面的例子,输出如下:
| Greek | 数值 | 通俗理解 |
|---|---|---|
| Delta | 0.9210 | 股价每涨 1 元,期权价格约涨 0.92 元 |
| Gamma | 0.0187 | Delta 的变化速率,衡量 Delta 的稳定性 |
| Theta | -0.0290 | 每天的时间价值损耗(负值 = 在"流血") |
| Vega | 0.0464 | 波动率每变动 1 个百分点带来的价格变化 |
| Rho | 0.0745 | 无风险利率变化对期权价格的影响 |
📌 注意 Theta 的负号:它提醒你持有的期权每天都在贬值,这就是"时间价值"的代价。
进阶技巧:数值 Greeks 与隐含波动率
- 数值 Greeks:对二项式树、蒙特卡洛等没有解析解的模型,
PricingEngine会自动切换到NumericalGreeks(位于quantsbin/derivativepricing/numericalgreeks.py),通过有限差分法计算同样的五大指标,还可以做 PnL 归因分析(pnl_attribution())。 - 隐含波动率:拿到市场报价后,用
pricer.imply_volatility(premium)即可在 BSM 框架下二分法反解 IV,这是交易台最日常的操作之一。 - 画图:
quantsbin/derivativepricing/plotting.py提供内置绘图类,一条命令就能画出 payoff、估值曲线和 Greeks 随股价变化的图,适合做策略演示。
总结
| 步骤 | 方法 | 得到什么 |
|---|---|---|
| 1️⃣ 定义期权 | EqOption(...) | 期权合约对象 |
| 2️⃣ 绑定 BSM | engine(model='BSM', ...) | 定价引擎 |
| 3️⃣ 计算价格 | valuation() | 期权理论价值 |
| 4️⃣ 计算风险 | risk_parameters() | 五大 Greeks 解析解 |
用 Quantsbin 实现 Black-Scholes 期权定价,核心只有两步:定义EqOption,再用engine()绑定 BSM。从期权价格到五大 Greeks,全部由库内部完成——你可以把精力放在策略分析上,而不是和公式搏斗。🚀
【免费下载链接】QuantsbinQuantitative Finance tools项目地址: https://gitcode.com/gh_mirrors/qu/Quantsbin
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考