QuantLib 金融计算——数学工具之插值
如果未做特别说明,文中的程序都是 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
:布尔型,allowExtrapolation
为True
意味着允许外推,默认值是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
:矩阵,函数在x
和y
所张成的网格上的取值
插值类定义了 __call__
方法,一个插值类对象的使用方式如下,作为一个函数
myInt(x, y, allowExtrapolation)
x
、y
:浮点数,分别是要插值的点在 x 和 y 轴上的坐标allowExtrapolation
:布尔型,allowExtrapolation
为True
意味着允许外推,默认值是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 金融计算——数学工具之插值的更多相关文章
- QuantLib 金融计算——数学工具之数值积分
目录 QuantLib 金融计算--数学工具之数值积分 概述 常见积分方法 高斯积分 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--数学工具之数值积分 载入模 ...
- QuantLib 金融计算——数学工具之求解器
目录 QuantLib 金融计算--数学工具之求解器 概述 调用方式 非 Newton 算法(不需要导数) Newton 算法(需要导数) 如果未做特别说明,文中的程序都是 Python3 代码. Q ...
- QuantLib 金融计算——数学工具之优化器
目录 QuantLib 金融计算--数学工具之优化器 概述 Optimizer Constraint OptimizationMethod EndCriteria 示例 Rosenbrock 问题 校 ...
- QuantLib 金融计算——数学工具之随机数发生器
目录 QuantLib 金融计算--数学工具之随机数发生器 概述 伪随机数 正态分布(伪)随机数 拟随机数 HaltonRsg SobolRsg 两类随机数的收敛性比较 如果未做特别说明,文中的程序都 ...
- QuantLib 金融计算
我的微信:xuruilong100 <Implementing QuantLib>译后记 QuantLib 金融计算 QuantLib 入门 基本组件之 Date 类 基本组件之 Cale ...
- QuantLib 金融计算——高级话题之模拟跳扩散过程
目录 QuantLib 金融计算--高级话题之模拟跳扩散过程 跳扩散过程 模拟算法 面临的问题 "脏"的方法 "干净"的方法 实现 示例 参考文献 如果未做特别 ...
- QuantLib 金融计算——收益率曲线之构建曲线(2)
目录 QuantLib 金融计算--收益率曲线之构建曲线(2) YieldTermStructure 问题描述 Piecewise** 分段收益率曲线的原理 Piecewise** 对象的构造 Fit ...
- QuantLib 金融计算——自己动手封装 Python 接口(1)
目录 QuantLib 金融计算--自己动手封装 Python 接口(1) 概述 QuantLib 如何封装 Python 接口? 自己封装 Python 接口 封装 Array 和 Matrix 类 ...
- QuantLib 金融计算——基本组件之 Currency 类
目录 QuantLib 金融计算--基本组件之 Currency 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Cu ...
随机推荐
- 5 CrawlSpider操作
CrawlSpider 提问:如果想要通过爬虫程序去爬取"糗百"全站数据新闻数据的话,有几种实现方法? 方法一:基于Scrapy框架中的Spider的递归爬取进行实现(Reques ...
- 20169221 2016——2017《网络攻防》SQL注入
准备知识 1.SQL语言 结构化查询语言(Structured Query Language)简称SQL:是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系 ...
- URAL1991 The battle near the swamp 2017-04-12 18:07 92人阅读 评论(0) 收藏
The battle near the swamp Gungan: Jar Jar, usen da booma! Jar Jar: What? Mesa no have a booma! Gun ...
- Ubuntu再图形登录中以root的身份进入???
Ubuntu再图形登录中以root的身份进入??? 这样做的需求,应该就是,可以再图形页面以root的身份进行图形化操作,比较方便更改配置文件. 1. 可以实现,但是不建议这么做,之后会出现一个警告提 ...
- Spring全局异常处理
最近学习Spring时,认识到Spring异常处理的强大.之前处理工程异常,代码中最常见的就是try-catch-finally,有时一个try,多个catch,覆盖了核心业务逻辑: 1 try{ 2 ...
- Centos 7 安装 mysql5.7
1.需要下载mysql 下载地址:http://dev.mysql.com/downloads/mysql/ 2.将下载的rpm包上传到centos 7上(我是放在根下面的opt目录) 3. 安装my ...
- npm是干什么的?
允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用. 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用. 其实npm ...
- solr特点三: 排序样例汇总
目的是提供solrj 实现 查询的样例参考 单维度排序 //查询条件 query.setQuery(queryString); // add 是添加 query.addSortField(field_ ...
- 查看jar包的jdk版本并降级
用解压工具打开jar包(例子都是用7zip) 进入到META-INF目录,查看MANIFEST.MF文件,查看Bulid-Jdk,下图就为1.7.0_55版本的JDK,这就表示jetty-serv ...
- 基于docker创建的Jenkins,settings.xml文件放在哪里
如果运行容器时挂载目录如下 启动容器 docker run -itd -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true --r ...