QuantLib 金融计算——QauntLib 入门

2018 年 10 月 17 日 R语言中文社区


作者:徐瑞龙,量化分析师,R语言中文社区专栏作者

博客专栏:

https://www.cnblogs.com/xuruilong100

简介

纷繁复杂、瞬息万变的金融市场开发出了太多的金融产品,产生了太多的计算问题,这对于 Fintech 来讲是一个巨大的挑战,无论是计算能力上的,还是软件设计上的。好在开源软件界从来都不缺少英雄,QuantLib 正是其中的佼佼者。

QuantLib 是一个免费、开源的软件库,旨在为量化金融计算提供一个统一的、综合的软件框架。QuantLib 的源代码由 C++ 编写,得力于 C++ 在面向对象和泛型编程方面强大的表现力,以及对贴近底层所带来的出众执行效率,QuantLib 一方面可以清晰地描述各种复杂的金融产品,同时兼顾了计算速度。

主要功能

QuantLib 所提供的功能聚焦在两大领域:

  1. 期权定价以及相关计算;

  2. 固定收益产品定价以及相关计算。

与期权相关的主要内容有:

  • 表示亚式期权、欧式期权、美式期权、百慕大期权等等不同种类期权的数据结构;

  • 基于解析法、有限差分法、二(三)叉树法和 Monte Carlo 的定价引擎;

  • 多种波动率模型,例如 Heston 模型、GARCH 模型和局部波动率模型;

  • 校准波动率期限结构的方法。

  • ...

与固定收益相关的主要内容有:

  • 表示固息债、浮息债、零息债、通胀挂钩债券、利率互换、可转债等等不同种类固定收益产品的数据结构;

  • 表示收益率期限结构的数据结构;

  • 现金流分析;

  • 若干种收益率曲线的插值方法;

  • 若干种计息方法,例如 Actual / 365、Actual / 360、30 / 360 等等。

  • ...

安装与使用

推荐在 Ubuntu 操作系统下安装和使用 QuantLib ,如果使用的是 Ubuntu 16.04 或 17.04,请先在系统中添加 Dirk Eddelbuettel 维护的 PPA,以便轻松地安装最新版本。

sudo add-apt-repository ppa:edd/misc sudo apt-get update

QuantLib 高度依赖 Boost 库,在安装 QuantLib 之前务必安装 Boost,只需要在终端键入:

sudo apt-get install libboost-all-dev

安装 QuantLib:

sudo apt-get install libquantlib0-dev libquantlib0v5

在 C++ 的 IDE 中配置编译器的连接器和搜索路径,让编译器能够找到文件 /usr/lib/libQuantLib.so 和路径 /usr/include/ql 就可以探索和使用 QuantLib 了 :)。

学习指南

作为金融实务、学术研究和软件设计三者的交叉点,学习和使用 QuantLib 并非一项简单的任务。要掌握这一得力工具,你必须成为一个多面手。

John Hull 编写的 Risk Management and Financial Institutions 和 Options, Futures and other Derivatives 是两本非常出色的书,能够提供金融实务和学术研究方面足够的基础知识让你可以开始探索 QuantLib。除此之外,QuantLib 提供了一套非常详尽的文档,更加深入细致的专业知识可以在这里获得。例如,可以在亚式期权定价引擎类 AnalyticDiscreteGeometricAverageStrikeAsianEngine 的页面中找到介绍这种定价方法的学术论文,“The formula is from "Asian Option", E. Levy (1997) in "Exotic Options: The State of the Art", edited by L. Clewlow, C. Strickland, pag 65-97”。

纸上得来终觉浅

绝知此事要躬行

上手编程、操作软件是掌握 QuantLib 的过程中要面对的一大挑战。


The HARD Way

QuantLib 的源代码由 C++ 编写,使用 C++ 编程是学习、探索 QuantLib 最直接的方式,不过也是最具挑战性的,因为 C++ 本身是一门非常“硬核”的计算机语言,而且 QuantLib 目前的体量和结构已经很庞大和复杂。

在上手之前,你需要了解、掌握 C++ 编程的基本知识(语法、函数、类、模板和 STL),C++ Primer 是一个非常好的开始。想要熟练使用 QuantLib 必须要能够理解其复杂的内部架构,这就需要一点“设计模式”的知识,Head First Design Patterns 是入门的不二选择(Gof4 的 Design Patterns 过于晦涩了),Modern C++ Design 适合进阶。

为了帮助使用者深入了解 QuantLib 的设计细节和思路,QuantLib 的核心作者 Luigi Ballabio 专门编写了 Implementing QuantLib

有了上述知识和技能的准备,就可以从 github 上作者提供的例子开始了,不要忘了勤快地查看文档。


The EASY Way

如果要快速上手学习、使用 QuantLib,C++ 就显得过于困难了。鉴于 C++ 版的 QuantLib 取得了巨大的成功,许多开源爱好者把 QuantLib 拓展到了其他语言和软件环境下,在 C#、Java、Perl、Python、Julia、Ruby 和 R 等语言中都可以找到对 QuantLib 的封装;在 Microsoft Excel 和 LibreOffice Calc 中也有 QuantLib 的插件。

在 Ubuntu 环境下,常用的三个扩展分别是:

  • Python 封装,quantlib-python

  • LibreOffice Calc 插件,QuantLibAddin

  • R 封装,RQuantLib

遗憾的是,这些扩展不能提供 C++ 版本的全部功能。


quantlib-python

quantlib-python 是三个扩展中做的最好的,尽可能的移植了 C++ 版本的架构和使用方法,提供的功能也是最多的。quantlib-python 的安装十分轻松:

sudo apt-get install quantlib-python

需要注意的是,系统默认安装 Python2 版本的 quantlib-python,如果要安装 Python3 版本的,请参考这里的官方教程

感谢 Gouthaman Balaraman 提供了 quantlib-python 详尽的范例教程,和他编写的书——QuantLib Python Cookbook

如果想要扩展 quantlib-python 目前的功能,实现定制化,你需要一点 SWIG 的知识用来创建自己的封装。


QuantLibAddin

LibreOffice Calc 相当于 Ubuntu 上的 Excel,插件 QuantLibAddin 把 QuantLib 中的部分内容封装,你可以像使用 Excel 内置函数一样在电子表格里调用 QuantLib 的功能。插件的下载地址在这里,更多详尽的说明请参考 QuantLib Addin 的主页


RQuantLib

和 Python 相比,R 在面向对象编程方面的能力比较弱,所以 RQuantLib 没有保留 QuantLib 原始的架构和用法,而是将部分功能包装成为函数,相对于 quantlib-python 而言,RQuantLib 保留的功能更少。

RQuantLib 的主页


以上链接地址请点击“阅读原文”查找。


往期回顾

时间序列分析工具箱——timetk

时间序列分析工具箱——tidyquant

时间序列分析工具箱——sweep

时间序列分析工具箱——tibbletime

基于 Keras 用深度学习预测时间序列

基于 Keras 用 LSTM 网络做时间序列预测

时间序列深度学习:状态 LSTM 模型预测太阳黑子(一)

时间序列深度学习:状态 LSTM 模型预测太阳黑子(二)

时间序列深度学习:seq2seq 模型预测太阳黑子

R中的设计模式

理解 LSTM 及其图示

时间序列分析工具箱—— h2o + timetk

公众号后台回复关键字即可学习

回复 爬虫            爬虫三大案例实战  
回复 
Python       1小时破冰入门

回复 数据挖掘     R语言入门及数据挖掘
回复 
人工智能     三个月入门人工智能
回复 数据分析师  数据分析师成长之路 
回复 机器学习      机器学习的商业应用
回复 数据科学      数据科学实战
回复 常用算法      常用数据挖掘算法

登录查看更多
1

相关内容

【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【经典书】贝叶斯编程,378页pdf,Bayesian Programming
专知会员服务
247+阅读 · 2020年5月18日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
一份简短《图神经网络GNN》笔记,入门小册
专知会员服务
224+阅读 · 2020年4月11日
【综述】金融领域中的深度学习,附52页论文下载
专知会员服务
163+阅读 · 2020年2月27日
【阿里技术论文】AliMe KBQA:阿里小蜜中的结构化知识问答
专知会员服务
82+阅读 · 2019年12月14日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
别说还不懂依存句法分析
人工智能头条
23+阅读 · 2019年4月8日
一文掌握高薪行业必备数学知识(附学习资源)
算法与数学之美
7+阅读 · 2018年6月7日
入门 | 一文介绍机器学习中基本的数学符号
机器之心
28+阅读 · 2018年4月9日
强化学习的入门之旅
机器学习研究会
6+阅读 · 2018年2月12日
Python NLP入门教程
Python开发者
9+阅读 · 2017年11月19日
推荐|2017年最受数据科学欢迎的Top15个Python库!
全球人工智能
8+阅读 · 2017年10月28日
Gluon —— 微软和亚马逊联合推出深度学习库
开源中国
7+阅读 · 2017年10月24日
深度学习入门篇--手把手教你用 TensorFlow 训练模型
全球人工智能
4+阅读 · 2017年10月21日
A survey on deep hashing for image retrieval
Arxiv
14+阅读 · 2020年6月10日
Arxiv
101+阅读 · 2020年3月4日
OD-GCN: Object Detection by Knowledge Graph with GCN
Arxiv
4+阅读 · 2019年9月30日
Image Captioning based on Deep Reinforcement Learning
Arxiv
5+阅读 · 2018年6月5日
Arxiv
7+阅读 · 2018年4月21日
Arxiv
5+阅读 · 2017年11月13日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【经典书】贝叶斯编程,378页pdf,Bayesian Programming
专知会员服务
247+阅读 · 2020年5月18日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
一份简短《图神经网络GNN》笔记,入门小册
专知会员服务
224+阅读 · 2020年4月11日
【综述】金融领域中的深度学习,附52页论文下载
专知会员服务
163+阅读 · 2020年2月27日
【阿里技术论文】AliMe KBQA:阿里小蜜中的结构化知识问答
专知会员服务
82+阅读 · 2019年12月14日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
相关资讯
别说还不懂依存句法分析
人工智能头条
23+阅读 · 2019年4月8日
一文掌握高薪行业必备数学知识(附学习资源)
算法与数学之美
7+阅读 · 2018年6月7日
入门 | 一文介绍机器学习中基本的数学符号
机器之心
28+阅读 · 2018年4月9日
强化学习的入门之旅
机器学习研究会
6+阅读 · 2018年2月12日
Python NLP入门教程
Python开发者
9+阅读 · 2017年11月19日
推荐|2017年最受数据科学欢迎的Top15个Python库!
全球人工智能
8+阅读 · 2017年10月28日
Gluon —— 微软和亚马逊联合推出深度学习库
开源中国
7+阅读 · 2017年10月24日
深度学习入门篇--手把手教你用 TensorFlow 训练模型
全球人工智能
4+阅读 · 2017年10月21日
相关论文
A survey on deep hashing for image retrieval
Arxiv
14+阅读 · 2020年6月10日
Arxiv
101+阅读 · 2020年3月4日
OD-GCN: Object Detection by Knowledge Graph with GCN
Arxiv
4+阅读 · 2019年9月30日
Image Captioning based on Deep Reinforcement Learning
Arxiv
5+阅读 · 2018年6月5日
Arxiv
7+阅读 · 2018年4月21日
Arxiv
5+阅读 · 2017年11月13日
Top
微信扫码咨询专知VIP会员