ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

波动率微笑曲线,用 gs-quant 一段代码画出来:外汇期权定价实战指南

2026/9/13 19:15:08 拓冰建站 浏览量
波动率微笑曲线,用 gs-quant 一段代码画出来:外汇期权定价实战指南 波动率微笑曲线用 gs-quant 一段代码画出来外汇期权定价实战指南【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant做外汇期权定价FX option pricing绕不开一个问题市场给的波动率不是一个数而是随执行价弯曲的一条曲线。用 gs-quant 这套 Python 工具包我们可以先算出一条指数加权波动率exponentially weighted volatility曲线作为建模输入再对接 FXOption 合约和 PricingContext 完成定价。本文给出一条可直接运行的最小路径和参数上的取舍建议。先看效果跑完能得到什么跑通后你会得到三样东西一条按日期索引的波动率曲线输入是任意价格时间序列输出是年化后的百分比数值一条平滑的微笑形态近期数据权重高曲线跟随市场节奏走可对接定价的上下文把FXOption放进PricingContext即可取价格和风险指标。核心输入函数exponential_volatility定义在gs_quant/timeseries/technicals.py它内部是三步合成先取returns再做指数加权标准差exponential_std最后年化并乘以 100 转为百分比。一句话讲清波动率微笑想象卖保险保的小额单不怕多因为赔付概率稳定保的车价越高定价越不敢拍脑袋费率往上抬。外汇期权类似——深度虚值的远月期权尾部风险大市场要求的隐含波动率就更高整条执行价对波动率的曲线两端翘起、中间下凹像一张微笑的嘴。这条曲线就是波动率微笑Volatility Smile。最小可运行示例下面是全文唯一的完整代码。本地用generate_series生成 250 天数据无需真实行情即可验证流程接上真实数据后把第一行换成你的价格序列即可。from gs_quant.timeseries import generate_series, exponential_volatility, returns # 1. 模拟 250 天的外汇价格序列真实场景替换为你的数据 prices generate_series(250) # 2. 算收益率检查数据质量 ret returns(prices) # 3. 指数加权波动率曲线beta0.9 贴近风险模型常用口径 vol exponential_volatility(prices, beta0.9) # 4. 快速校验首尾值与均值 print(vol.head()) print(f均值 {vol.mean():.2f}% 最新 {vol.iloc[-1]:.2f}%) # 5. 接入定价外汇期权 定价上下文 from gs_quant.instrument import FXOption from gs_quant.markets import PricingContext option FXOption(pairEURUSD, option_typeCall, strike_price1.08, expiration_date1m, notional_amount1e6, notional_currencyUSD, buy_sellBuy) with PricingContext(): option.price() # 需具备数据源授权无授权时本步骤会提示鉴权错误关键代码拆解beta 决定了曲线听谁的exponential_volatility的第二个参数beta控制历史数据的衰减速度取值范围是[0, 1)。直觉上它像一个记忆长度旋钮beta0.9时最近几天主导结果曲线反应灵敏但抖beta0.75函数默认值记忆更长曲线更平。公式本身不复杂$$\sigma_t \sqrt{(1-\beta)\sum_{i\ge 0}\beta^{i} r_{t-i}^2}$$大白话把每天的收益率平方后按beta逐日打折加权开根号得到波动率再年化。所以 beta 越大最近一次跳价对当前数值的绑架越深。为什么是指数加权而不是简单滚动窗口exponential_volatility内部调用的exponential_std定义在gs_quant/timeseries/statistics.py。滚动窗口波动率对窗口外的突变直接归零而指数加权让老数据按几何级数衰减。对 FX 市场来说隔夜事件央行决议、数据发布的影响需要慢慢退场而不是明天突然消失这正是加权结构擅长的地方。曲线怎么喂给定价FXOption的定义在gs_quant/target/instrument.pypair、option_type、strike_price、notional_amount、notional_currency是最少要给的字段。定价时通过PricingContext定义在gs_quant/markets/core.py提供市场数据源option.price()返回定价结果。想拿到 Delta 等希腊字母时在 context 里指定对应指标即可。没有数据源授权时定价会报鉴权错误前四步的波动率计算不受影响。参数选择与易踩的坑beta0.9 是风险建模常用值RiskMetrics 口径接近 0.94做曲线平滑展示时降到 0.7 左右beta 取 0.99 以上曲线几乎冻结0.5 以下则和滚动窗口没太大差别。单位函数输出已年化且乘了 100打印出来12.3表示 12.3%不要再除一次 100。数据对齐returns默认一阶差分输入序列如果含缺失日期先补齐再算否则波动率会被空值污染。定价报错本地跑option.price()需要数据源凭据报AuthError属正常现象不影响前四步。延伸方向两条值得继续挖的路一是把vol接到 Plotly 上画微笑曲线exponential_volatility带plot_function装饰器仓库文档docs/timeseries.rst里有对应说明二是用gs_quant/markets/scenario.py的场景机制对波动率做冲击看同一份期权在不同 vol 下的价格变化。波动率微笑是外汇期权定价的地基把 beta 的取舍想清楚这条曲线就站得住了。剩下的事就是拿真实行情把这套流程跑一遍。【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考