QuantLib Python Heston模型路径生成相关技术疑问
针对Heston模型路径生成与期货定价的问题解答
问题1:路径生成器接收Process而非Model的原因及参数传递机制
QuantLib中Model和Process是职责明确的分离组件:
HestonModel的核心作用是封装定价逻辑、管理参数校准流程,它会基于市场数据(如波动率曲面、期权报价)拟合出最优的Heston参数(κ, θ, σ, ρ, v₀)。HestonProcess则是纯数值计算组件,只负责实现Heston过程的动态方程,为路径生成提供底层的随机演化规则,不需要处理定价或校准相关逻辑。
参数传递的正确流程是:
- 用市场数据拟合
HestonModel,完成参数校准; - 从校准后的
HestonModel中提取所有参数(可通过model.params()方法); - 使用这些校准后的参数,重新实例化一个
HestonProcess; - 将这个带校准参数的
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
相关产品推荐
相关产品推荐

