You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QuantLib Python Heston模型路径生成相关技术疑问

针对Heston模型路径生成与期货定价的问题解答

问题1:路径生成器接收Process而非Model的原因及参数传递机制

QuantLib中Model和Process是职责明确的分离组件:

  • HestonModel的核心作用是封装定价逻辑、管理参数校准流程,它会基于市场数据(如波动率曲面、期权报价)拟合出最优的Heston参数(κ, θ, σ, ρ, v₀)。
  • HestonProcess则是纯数值计算组件,只负责实现Heston过程的动态方程,为路径生成提供底层的随机演化规则,不需要处理定价或校准相关逻辑。

参数传递的正确流程是:

  1. 用市场数据拟合HestonModel,完成参数校准;
  2. 从校准后的HestonModel中提取所有参数(可通过model.params()方法);
  3. 使用这些校准后的参数,重新实例化一个HestonProcess;
  4. 将这个带校准参数的HestonProcess传给GaussianMultiPathGenerator。

你当前代码里的heston_process如果是基于默认参数创建的,不会自动关联拟合后的模型参数,必须手动将校准后的参数注入到process中。

问题2:设置零利率/收益率曲线实现无漂移的可行性

完全可行。期货合约在风险中性测度下的价格是鞅,漂移项为0,对应Heston过程中标的资产的漂移项公式为r - q(r是无风险利率,q是股息/便利收益率)。

操作上只需:

  • 创建平坦的无风险利率曲线,所有节点利率设为0;
  • 创建平坦的股息/便利收益率曲线,所有节点收益率设为0;
  • 将这两条曲线传入HestonProcess的构造函数。

此时r - q = 0,标的资产的漂移项会被消除,符合期货的无漂移演化要求。

附相关代码

dt = 1/252
# number of days from today to 31 march 2026
days = np.busday_count(pd.Timestamp.today().date(),pd.Timestamp('2026-03-31').date())
T = days*dt
N_paths = 10000
N_steps = days
busines_days = pd.bdate_range(start_date,periods=days)

uniform_gen = ql.UniformRandomSequenceGenerator(int(2*N_steps),ql.UniformRandomGenerator())
gaussian_gen = ql.GaussianRandomSequenceGenerator(uniform_gen)
times = list(ql.TimeGrid(T, int(N_steps)))

multipath = ql.GaussianMultiPathGenerator(heston_process, times, gaussian_gen, False)

内容的提问来源于stack exchange,提问作者Félix Rodriguez Moya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 02:23:11