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

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

载入模块

import QuantLib as ql
import scipy print(ql.__version__)
1.12

概述

“插值”是量化金融中最常用的工具之一,已知一组离散点以及未知函数 \(f\) 在这些点上的值 \((x_i , f(x_i )) i \in \{0, \dots, n\}\),要近似求出任意一点 \(x \in [x_0 , x_n ]\) 上的函数值。标准的应用场景是对收益率曲线、波动率微笑曲线和波动率曲面的插值。quantlib-python 提供了下列一维和二维插值方法:

  • LinearInterpolation(1-D)
  • LogLinearInterpolation(1-D)
  • BackwardFlatInterpolation(1-D)
  • ForwardFlatInterpolation(1-D)
  • BilinearInterpolation(2-D)
  • BicubicSpline(2-D)

一维插值方法

一维插值方法常用于收益率曲线、波动率微笑曲线,其对象的构造基本如下:

myInt = XXXInterpolation(x,
y)
  • x:浮点数序列,若干离散的自变量
  • y:浮点数序列,自变量对应的函数值,与 x 等长

插值类定义了 __call__ 方法,一个插值类对象的使用方式如下,作为一个函数

myInt(x, allowExtrapolation)
  • x:浮点数,要插值的点
  • allowExtrapolation:布尔型,allowExtrapolationTrue 意味着允许外推,默认值是 False

例子 1

def testingInterpolations1():
xVec = [0.0, 1.0, 2.0, 3.0, 4.0]
yVec = [scipy.exp(x) for x in xVec] linInt = ql.LinearInterpolation(xVec, yVec) print("Exp at 0.0 ", linInt(0.0))
print("Exp at 0.5 ", linInt(0.5))
print("Exp at 1.0 ", linInt(1.0))
# Exp at 0.0   1.0
# Exp at 0.5 1.8591409142295225
# Exp at 1.0 2.718281828459045

二维插值方法

二维插值方法常用于波动率曲面,其对象的构造基本如下:

myInt = XXXInterpolation(x,
y,
m)
  • x:浮点数序列,x 轴上的若干离散的自变量
  • y:浮点数序列,y 轴上的若干离散的自变量,与 x 等长
  • m:矩阵,函数在 xy 所张成的网格上的取值

插值类定义了 __call__ 方法,一个插值类对象的使用方式如下,作为一个函数

myInt(x, y, allowExtrapolation)
  • xy:浮点数,分别是要插值的点在 x 和 y 轴上的坐标
  • allowExtrapolation:布尔型,allowExtrapolationTrue 意味着允许外推,默认值是 False

例子 2

def testingInterpolations2():
xVec = [float(i) for i in range(10)]
yVec = [float(i) for i in range(10)] M = ql.Matrix(len(xVec), len(yVec)) for rowIt in range(len(xVec)):
for colIt in range(len(yVec)):
M[rowIt][colIt] = scipy.sin(xVec[rowIt]) + scipy.sin(yVec[colIt]) bicubIntp = ql.BicubicSpline(
xVec, yVec, M) x = 0.5
y = 4.5 print("Analytical Value: ", scipy.sin(x) + scipy.sin(y))
print("Bicubic Value: ", bicubIntp(x, y)) testingInterpolations4()
Analytical Value:   -0.498104579060894
Bicubic Value: -0.49656170664824184

QuantLib 金融计算——数学工具之插值的更多相关文章

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

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

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

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

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

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

  4. QuantLib 金融计算——数学工具之随机数发生器

    目录 QuantLib 金融计算--数学工具之随机数发生器 概述 伪随机数 正态分布(伪)随机数 拟随机数 HaltonRsg SobolRsg 两类随机数的收敛性比较 如果未做特别说明,文中的程序都 ...

  5. QuantLib 金融计算

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

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

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

  7. QuantLib 金融计算——收益率曲线之构建曲线(2)

    目录 QuantLib 金融计算--收益率曲线之构建曲线(2) YieldTermStructure 问题描述 Piecewise** 分段收益率曲线的原理 Piecewise** 对象的构造 Fit ...

  8. QuantLib 金融计算——自己动手封装 Python 接口(1)

    目录 QuantLib 金融计算--自己动手封装 Python 接口(1) 概述 QuantLib 如何封装 Python 接口? 自己封装 Python 接口 封装 Array 和 Matrix 类 ...

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

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

随机推荐

  1. 使用mybatis提供的各种标签方法实现动态拼接Sql。这里演示where标签和if标签实现使用姓名的模糊查询和性别查询用户列表,当用户没有选择姓名以及性别时查询出所有的记录。

    1.需求: 使用姓名的模糊查询和性别查询用户列表,当用户没有选择姓名以及性别时查询出所有的记录. 2.在UserMapper接口中定义方法: public List<User> findU ...

  2. 监测IIS上网站的连接数

    1.运行,输入,perfmon.msc 2.性能监视器>右侧区域>右键 添加计数器 3.在“可用计数器” 区域,选择Web Service,展开Web Service,选择Current ...

  3. day24,python习题

    今日作业 有两个列表,分别存放来老男孩报名学习linux和python课程的学生名字 linux=['钢弹','小壁虎','小虎比','alex','wupeiqi','yuanhao'] pytho ...

  4. [mongoDB] mongoDb

    mongodb memcached redis        kv数据库(key/value) mongodb 文档数据库,存储的是文档(Bson->json的二进制化). 特点:内部执行引擎为 ...

  5. Hadoop学习【一】单机版搭建

    首先要说一下,Hadoop 2.x版本以后的改动,在这里帖一篇文章,觉得写的不错. http://www.ibm.com/developerworks/cn/opensource/os-cn-hado ...

  6. 看图说说JVM新生代垃圾收集器

  7. Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks(使用循环一致的敌对网络进行不成对的图像到图像转换)

    作者:朱俊彦,朱俊彦博士是计算机图形学领域现代机器学习应用的开拓者.他的论文可以说是第一篇用深度神经网络系统地解决自然图像合成问题的论文.因此,他的研究对这个领域产生了重大影响.他的一些科研成果,尤其 ...

  8. pcd转obj

    文件转换 从PCD文件写入和读取点云数据:https://www.cnblogs.com/li-yao7758258/p/6435568.html 点云数据格式PCD(Point Cloud Data ...

  9. ZOJ3775 ?(>_o)! 2017-04-13 23:37 110人阅读 评论(0) 收藏

    ?(>_o)! Time Limit: 2 Seconds      Memory Limit: 65536 KB ?(>_o)! is a pseudo-object-oriented ...

  10. Base64编码说明

    Base64编码说明 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式. 如果剩下的字符不足3个字节,则用0填充 ...