如果未做特别说明,文中的程序都是 Python3 代码。

QuantLib 金融计算——随机过程之概述

载入模块

import QuantLib as ql

print(ql.__version__)
1.12

框架

随机过程是金融工程中的一个核心概念,是沟通理论分析和计算实践的枢纽。quantlib-python 提供了一组成体系的类架构用于描述实际中最常见到的几种随机过程,以 1.12 版本为例:

C++ 版本的实现提供了更多具体的随机过程。

其中最根本的基类是 StochasticProcess,然后衍生出三大类别:

  • HestonProcess:特殊的二维随机过程——Heston 过程;

    • BatesProcess:一种带跳跃的 Heston 过程;
  • StochasticProcessArray:描述一般的多维随机过程;
  • StochasticProcess1D:描述常用的若干一维随机过程。
    • GeneralizedBlackScholesProcess:Black-Scholes 框架下四种最常用的随机过程

      • BlackScholesProcess:\(d \ln S ( t ) = \left( r ( t ) - \frac { \sigma ( t , S ) ^ { 2 } } { 2 } \right) d t + \sigma d W _ { t }\)
      • BlackScholesMertonProcess:\(d \ln S ( t , S ) = \left( r ( t ) - q ( t ) - \frac { \sigma ( t , S ) ^ { 2 } } { 2 } \right) d t + \sigma d W _ { t }\)
      • BlackProcess:\(d \ln S ( t ) = - \frac { \sigma ( t , S ) ^ { 2 } } { 2 } d t + \sigma d W _ { t }\)
      • GarmanKohlagenProcess:\(d \ln S ( t ) = \left( r ( t ) - r _ { f } ( t ) - \frac { \sigma ( t , S ) ^ { 2 } } { 2 } \right) d t + \sigma d W _ { t }\)
    • VarianceGammaProcess
    • Merton76Process
    • GeometricBrownianMotionProcess:\(d S ( t , S ) = \mu S d t + \sigma S d W _ { t }\)
    • HullWhiteProcess
    • HullWhiteForwardProcess
    • GsrProcess

基类 StochasticProcess 模拟一个 d 维 Ito 过程:

\[d \mathrm S_t = \mu \left( t , S_t \right) \mathrm d t + \sigma \left( t , \mathrm S_t \right) d \mathrm { W }_t
\]

quantlib-python 默认的离散化方法是 Euler 方法:

\[S \left( t + \Delta t \right) = \mu \left( t , S_t \right) \Delta t + \sigma \left( t , S_t \right) \Delta W_t
\]

用法与接口

随机过程类的用法基本上是首先初始化一个实例,然后并将其传递给其他类的实例,这些类的实例从中提取所需的变量。一个例子是普通的 Black-Scholes 期权定价器,它从随机过程中检索出波动率。另一个例子是蒙特卡罗定价框架中的路径生成器,需要随机过程的参数,生成对应的路径。

StochasticProcess 提供下列成员函数:

  • size():整数,返回随机过程的维度;
  • initialValues()Array,返回数组 \(S_0\);
  • drift(t, x)Array,返回数组 \(\mu(t,S_t)\);tx 分别是浮点数和 Array
  • diffusion(t, x)Array,返回数组 \(\sigma(t,S_t)\);tx 分别是浮点数和 Array
  • expectation(t0, x0, dt)Array,根据具体的离散方法返回数组 \(E \left( S_{ t_0 + \Delta t} | S_{ t_0 } = x_0 \right)\);t0dt 是浮点数,x0Array
  • stdDeviation(t0, x0, dt)Matrix,根据具体的离散方法返回标准差矩阵 \(Std \left( S_{ t_0 + \Delta t} | S_{ t_0 } = x_0 \right)\);t0dt 是浮点数,x0Array
  • covariance(t0, x0, dt)Matrix,根据具体的离散方法返回协方差矩阵 \(Cov \left( S_{ t_0 + \Delta t} | S_{ t_0 } = x_0 \right)\);t0dt 是浮点数,x0Array
  • evolve(t0, x0, dt, dw)Array,根据 \(S_{ t_0}\) 和 Brownian 运动增量 \(\Delta W\) 产生 \(S_{ t_0 + \Delta t}\),默认返回 \(E \left( \mathrm S_{ t_0 + \Delta t } | S_{ t_0 } \right) + \sigma \left( \mathrm S_{ t_0 + \Delta t } | S_{ t_0 } \right) \Delta \mathrm { W }\),其中 \(\sigma\) 是标准差(矩阵).

对于 StochasticProcess1D 类,该类继承自 StochasticProcess 类,提供了从 StochasticProcess 派生的所有函数,但这些函数使用浮点数对象而不是 ArrayMatrix 对象。

QuantLib 金融计算——随机过程之概述的更多相关文章

  1. QuantLib 金融计算——随机过程之一般 Black Scholes 过程

    目录 QuantLib 金融计算--随机过程之一般 Black Scholes 过程 一般 Black Scholes 过程 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib ...

  2. QuantLib 金融计算——随机过程之 Heston 过程

    目录 QuantLib 金融计算--随机过程之 Heston 过程 Heston 过程 参考文献 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--随机过程之 H ...

  3. QuantLib 金融计算

    我的微信:xuruilong100 <Implementing QuantLib>译后记 QuantLib 金融计算 QuantLib 入门 基本组件之 Date 类 基本组件之 Cale ...

  4. QuantLib 金融计算——基本组件之 Currency 类

    目录 QuantLib 金融计算--基本组件之 Currency 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Cu ...

  5. QuantLib 金融计算——高级话题之模拟跳扩散过程

    目录 QuantLib 金融计算--高级话题之模拟跳扩散过程 跳扩散过程 模拟算法 面临的问题 "脏"的方法 "干净"的方法 实现 示例 参考文献 如果未做特别 ...

  6. QuantLib 金融计算——数学工具之数值积分

    目录 QuantLib 金融计算--数学工具之数值积分 概述 常见积分方法 高斯积分 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--数学工具之数值积分 载入模 ...

  7. QuantLib 金融计算——数学工具之求解器

    目录 QuantLib 金融计算--数学工具之求解器 概述 调用方式 非 Newton 算法(不需要导数) Newton 算法(需要导数) 如果未做特别说明,文中的程序都是 Python3 代码. Q ...

  8. QuantLib 金融计算——数学工具之插值

    目录 QuantLib 金融计算--数学工具之插值 概述 一维插值方法 二维插值方法 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--数学工具之插值 载入模块 ...

  9. QuantLib 金融计算——数学工具之优化器

    目录 QuantLib 金融计算--数学工具之优化器 概述 Optimizer Constraint OptimizationMethod EndCriteria 示例 Rosenbrock 问题 校 ...

随机推荐

  1. 关于java项目中的.classpath文件:

    Classpath是Java中的重要概念: 它描述了Java虚拟机在运行一个Class时在哪些路径中加载要运行的类以及运行的类要用到的类 简单的说,就是像操作系统的path 只不过这个classpat ...

  2. 数据挖掘潜规则zz

    声明:本文指的是做数据挖掘这行,不是数据仓库 我干这行有几年了,见了很多人,干了很多公司,爆一爆这个行业的状况吧……让后来人有所了解,也让猎头挖人挖的有点方向,起码和candidates聊天的时候不至 ...

  3. Oracle学习笔记(九)

    十二.PL/SQL 1.PL/SQL程序的结构和组成 示例:给员工涨工资(根据职位涨工资) 总裁涨1000 经理涨800 其他员工涨400 学习原因:1.操作数据库效率最高 2.为了后期的存储过程的学 ...

  4. Apache配置伪静态

    Apache配置伪静态 注意:本文中关于Apache的配置修改,一定要记得重启Apache服务 伪静态的实现有多种方法,比如通过获取path_info信息使用php逻辑来达到伪静态,使用Apache提 ...

  5. spring注解@Value取不到值【转】

    spring注解@Value取不到值 今天在一个项目中发现一个情况,在Service中取不到name值,直接输出了{name}字符串,找了好久,最后在一篇文章中找到解决方案. 解决这个问题的一篇文章( ...

  6. update chnroute

    curl -0 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep ipv4 | grep CN | awk ...

  7. [转]解决Mysql InnoDB: Failing assertion: ret || !assert_on_error问题

    国庆回来后,发现mysql停止服务了,没办法继续启动了.查看日志,看到: 131008 09:56:03 mysqld_safe Starting mysqld daemon with databas ...

  8. TFS签入代码时,自动修改工作项的状态为“已解决”

    Visual Studio中有一个很酷的功能,就是签入代码到TFS库时,可以关联相应的工作项,实现代码与工作项(需求.任务.Bug等)的关联,从而实现代码的跟踪. 在关联工作项的过程中,如果工作项具备 ...

  9. zookeeper的主要应用

    master选举 数据发布和订阅 负载均衡

  10. epoll好文章

    https://www.cnblogs.com/apprentice89/p/3234677.html https://www.jianshu.com/p/aa486512e989 https://c ...