目录 QuantLib 金融计算--收益率曲线之构建曲线(1) YieldTermStructure DiscountCurve DiscountCurve 对象的构造 ZeroCurve ZeroCurve 对象的构造 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--收益率曲线之构建曲线(1) 理论和实践上有多种方法可以构建与市场一致的收益率曲线,背后的方法论取决于市场上的可获得金融工具的流动性.在构建收益率曲线时有两个选项必须选定好:插值方法和所选的金…
目录 QuantLib 金融计算--收益率曲线之构建曲线(2) YieldTermStructure 问题描述 Piecewise** 分段收益率曲线的原理 Piecewise** 对象的构造 FittedBondDiscountCurve FittedBondDiscountCurve 的原理 FittedBondDiscountCurve 的构造 FittingMethod 类 拟合曲线 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--收益率曲线之构建…
目录 QuantLib 金融计算--收益率曲线之构建曲线(3) 概述 估算期限结构的步骤 读取样本券数据 一些基本配置 配置 *Helper 对象 配置期限结构 估算期限结构 汇总结果 当前实现存在的问题与对策 参考文献 附录 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--收益率曲线之构建曲线(3) 载入 QuantLib 和其他包: import QuantLib as ql import seaborn as sb import numpy as n…
[TOC] 如果未做特别说明,文中的程序都是 C++11 代码. QuantLib 金融计算--收益率曲线之构建曲线(4) 本文代码对应的 QuantLib 版本是 1.15.相关源代码可以在 QuantLibEx 找到. 概述 QuantLib 中提供了用三次 B 样条函数拟合期限结构的功能,但是,并未提供使用三次样条函数拟合期限结构的功能.本文展示了如何在 QuantLib 的框架内实现三次样条函数,并拟合期限结构. 示例所用的样本券交易数据来自专门进行期限结构分析的 R 包--termst…
目录 QuantLib 金融计算--收益率曲线之构建曲线(5) 概述 Nelson-Siegel 模型家族的成员 Nelson-Siegel 模型 Svensson 模型 修正 Svensson 模型 Bjork-Christensen 模型 Bliss 模型 Diebold Li 模型 实现 测试 测试数据 正则化条件 代码 拟合结果 后续话题 参考文献 如果未做特别说明,文中的程序都是 C++11 代码. QuantLib 金融计算--收益率曲线之构建曲线(5) 本文代码对应的 QuantL…
我的微信:xuruilong100 <Implementing QuantLib>译后记 QuantLib 金融计算 QuantLib 入门 基本组件之 Date 类 基本组件之 Calendar 类 基本组件之 DayCounter 类 基本组件之 DateGeneration 类 基本组件之 Schedule 类 基本组件之天数计算规则详解 基本组件之 Index 类 基本组件之 InterestRate 类 基本组件之 Currency 类 收益率曲线之构建曲线(1) 收益率曲线之构建曲…
目录 QuantLib 金融计算--自己动手封装 Python 接口(1) 概述 QuantLib 如何封装 Python 接口? 自己封装 Python 接口 封装 Array 和 Matrix 类 QuantLibEx 和官方包混合使用 附录:接口文件.setup.py 和 __init__.py quantlibex.i ql.i types.i common.i linearalgebra.i setup.py __init__.py QuantLib 金融计算--自己动手封装 Pyth…
目录 QuantLib 金融计算--自己动手封装 Python 接口(2) 概述 如何封装一项复杂功能? 寻找最小功能集合的策略 实践 估计期限结构参数 修改官方接口文件 下一步的计划 QuantLib 金融计算--自己动手封装 Python 接口(2) 概述 对于一项简单功能,通常只需要包装少数几个类就可以,正如<自己动手封装 Python 接口(1)>演示的那样. 下面,将演示如何包装 QuantLib 中的复杂功能,最终实现从固息债交易数据中估计期限结构模型的参数. 如何封装一项复杂功能…
目录 QuantLib 金融计算--数学工具之插值 概述 一维插值方法 二维插值方法 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--数学工具之插值 载入模块 import QuantLib as ql import scipy print(ql.__version__) 1.12 概述 "插值"是量化金融中最常用的工具之一,已知一组离散点以及未知函数 \(f\) 在这些点上的值 \((x_i , f(x_i )) i \in \{0, \dot…
目录 QuantLib 金融计算--高级话题之模拟跳扩散过程 跳扩散过程 模拟算法 面临的问题 "脏"的方法 "干净"的方法 实现 示例 参考文献 如果未做特别说明,文中的程序都是 C++11 代码. QuantLib 金融计算--高级话题之模拟跳扩散过程 跳扩散过程 1976 年,Merton 最早在衍生品定价中引入并分析了跳扩散过程,正因为如此 QuantLib 中和跳扩散相关的随机过程类称之为 Merton76Process,一个一般的跳扩散过程可以由下面的…
目录 QuantLib 金融计算--QuantLib 入门 简介 主要功能 安装与使用 学习指南 The HARD Way The EASY Way QuantLib 金融计算--QuantLib 入门 简介 纷繁复杂.瞬息万变的金融市场开发出了太多的金融产品,产生了太多的计算问题,这对于 Fintech 来讲是一个巨大的挑战,无论是计算能力上的,还是软件设计上的.好在开源软件界从来都不缺少英雄,QuantLib 正是其中的佼佼者. QuantLib 是一个免费.开源的软件库,旨在为量化金融计算…
目录 QuantLib 金融计算--基本组件之 Index 类 QuantLib 金融计算--基本组件之 Index 类 Index 类用于表示已知的指数或者收益率,例如 Libor 或 Shibor.这些指数或收益率的属性可能取决于若干个变量,如基础货币和期限.想象一下,一个交易员正在交易利率互换,浮动收益率定为 3 个月的 Shibor,他肯定需要了解此收益率以及基于此收益率的互换合约的若干结算细节,通常来说这些细节是固定不变的. 这些属性因期限而不同,此外,还取决于相应的基础货币.幸运的是…
目录 QuantLib 金融计算--案例之普通欧式期权分析 概述 普通欧式期权公式法定价 1. 配置期权合约条款 2. 构建期权对象 3. 配置定价引擎 4. 计算 题外话:天数计算规则 Quote 带来的便利 总结 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--案例之普通欧式期权分析 载入 QuantLib 和其他包: import QuantLib as ql import numpy as np import pandas as pd print(…
目录 QuantLib 金融计算--基本组件之 Currency 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Currency 类 载入 QuantLib: import QuantLib as ql print(ql.__version__) 1.15 概述 QuantLib 中描述货币基本信息的类是 Currency 及其派生类,Currency 的体系很庞杂,但层次结构很简单.整个类的继承结构分为两层:C…
QuantLib 金融计算--修复 BatesProcess 中的两个 Bug 我发现了 BatesProcess 中的两个 Bug: 基类 HestonProcess::factors 的返回值取决于差分方法 discretization_ 的类型,结果可能是 2 或 3,但是 BatesProcess::factors 的返回值却仅仅只有 4. 因为 BatesProcess::factors 的返回值取决于(基类的)差分方法 discretization_,因此 BatesProcess:…
目录 QuantLib 金融计算--基本组件之 Date 类 Date 对象的构造 一些常用的成员函数 一些常用的静态函数 为估值计算配置日期 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--基本组件之 Date 类 QuantLib 将金融领域的日期对象抽象为 Date 类,并提供了丰富的计算函数.需要注意的是,quantlib-python 中的 Date 类并不同于 python 自身包含的 datetime 类,也没有继承关系. 载入 QuantL…
目录 QuantLib 金融计算--基本组件之 Calendar 类 Calendar 对象的构造 一些常用的成员函数 自定义假期列表 工作日修正 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--基本组件之 Calendar 类 针对相应国家编制一套日历表用来推算假期.工作日和周末,这对于金融实务来说是一件基础又非常重要的事. 载入 QuantLib: import QuantLib as ql print(ql.__version__) 1.10 Cal…
目录 QuantLib 金融计算--基本组件之 DayCounter 类 DayCounter 对象的构造 一些常用的成员函数 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--基本组件之 DayCounter 类 "天数计算规则"(Day Count Convention)对金融产品的估值至关重要,尤其是对固定收益类的产品.QuantLib 提供了下列常见的规则: Actual360:Actual / 360 Actual365Fixed:Act…
目录 QuantLib 金融计算--基本组件之 DateGeneration 类 QuantLib 金融计算--基本组件之 DateGeneration 类 许多产品的估值依赖于对未来现金流的分析,因此准确的产生未来现金流发生的日期列表就成为一项相当重要的任务.给定起始.结束日期之后,可以按照"倒向法"或"正向法"的方式生成日期列表.所谓倒向法就是从结束日期开始向前推算.例如, 起始日期是 2009-09-03,结束日期是 2009-12-15,产生一个间隔为一个月…
目录 QuantLib 金融计算--基本组件之 Schedule 类 Schedule 对象的构造 作为"容器"的 Schedule 对象 一些常用的成员函数 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--基本组件之 Schedule 类 Schedule 类用于构造一个特定的日期列表,例如债券的付息日列表,是 QuantLib 中固定收益类产品分析最常用到的组件. 载入 QuantLib: import QuantLib as ql prin…
目录 QuantLib 金融计算--基本组件之 InterestRate 类 InterestRate 对象的构造 一些常用的成员函数 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--基本组件之 InterestRate 类 围绕收益率展开的若干计算(如计算贴现因子)是固定收益分析中最基础的部分.同时,由于固定收益产品在付息频率.计息方式.天数计算规则等细节方面的多样性,这一块的计算显得更加复杂繁琐.QuantLib 将与收益率有关的计算整合封装在 Int…
目录 QuantLib 金融计算--数学工具之数值积分 概述 常见积分方法 高斯积分 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--数学工具之数值积分 载入模块 import QuantLib as ql import scipy from scipy.stats import norm from scipy.stats import lognorm print(ql.__version__) 1.12 概述 quantlib-python 提供了许多方…
目录 QuantLib 金融计算--数学工具之求解器 概述 调用方式 非 Newton 算法(不需要导数) Newton 算法(需要导数) 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--数学工具之求解器 载入模块 import QuantLib as ql import scipy from scipy.stats import norm print(ql.__version__) 1.12 概述 QuantLib 提供了多种类型的一维求解器,用以求解单…
目录 QuantLib 金融计算--数学工具之优化器 概述 Optimizer Constraint OptimizationMethod EndCriteria 示例 Rosenbrock 问题 校准问题 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--数学工具之优化器 载入模块 import QuantLib as ql import scipy print(ql.__version__) 1.12 概述 在量化金融的模型校准过程中,最重要的工具是对函…
目录 QuantLib 金融计算--数学工具之随机数发生器 概述 伪随机数 正态分布(伪)随机数 拟随机数 HaltonRsg SobolRsg 两类随机数的收敛性比较 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--数学工具之随机数发生器 载入模块 import QuantLib as ql import scipy print(ql.__version__) 1.12 概述 随机模拟通常从产生均匀分布的随机数开始.假设 \(X \sim U [0, 1…
目录 QuantLib 金融计算--随机过程之概述 框架 用法与接口 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--随机过程之概述 载入模块 import QuantLib as ql print(ql.__version__) 1.12 框架 随机过程是金融工程中的一个核心概念,是沟通理论分析和计算实践的枢纽.quantlib-python 提供了一组成体系的类架构用于描述实际中最常见到的几种随机过程,以 1.12 版本为例: C++ 版本的实现提供了…
目录 QuantLib 金融计算--随机过程之一般 Black Scholes 过程 一般 Black Scholes 过程 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--随机过程之一般 Black Scholes 过程 载入模块 import QuantLib as ql import pandas as pd import numpy as np import seaborn as sn print(ql.__version__) 1.12 一般 B…
目录 QuantLib 金融计算--随机过程之 Heston 过程 Heston 过程 参考文献 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--随机过程之 Heston 过程 载入模块 import QuantLib as ql import pandas as pd import numpy as np import seaborn as sn print(ql.__version__) 1.12 Heston 过程 著名的 Heston 模型描述了下…
目录 QuantLib 金融计算--基本组件之 ExchangeRateManager 类 概述 Money 类中的汇率转换配置 ExchangeRateManager 函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 ExchangeRateManager 类 载入 QuantLib: import QuantLib as ql print(ql.__version__) 1.15 概述 QuantLib 中管理货币之间汇率信息的类是 E…
目录 QuantLib 金融计算--基本组件之 Money 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Money 类 载入 QuantLib: import QuantLib as ql print(ql.__version__) 1.15 概述 若要在 QuantLib 中对货币进行代数计算,就要将 Currency 对象转变成为一个 Money 对象. 构造函数 Money 的构造函数有两种,都接受两个参…