金融计算的开源库——QuantLib 学习入门
本文在Creative Commons协议下发布。
简介
瞬息万变的金融市场开发出了太多的金融产品,产生了太多的计算问题,这对于 Fintech 来讲:无论是计算能力上的,还是软件设计上的是一个巨大的挑战。
QuantLib 是一个免费、开源的软件库,旨在为量化金融计算提供一个统一的、综合的软件框架。QuantLib 的源代码由 C++ 编写,得利于 C++ 在面向对象和泛型编程方面强大的表现力,以及C++对贴近底层所带来的出众执行效率,QuantLib 一方面可以清晰地描述各种复杂的金融产品,同时兼顾了计算速度。
主要功能
QuantLib 所提供的功能聚焦在两大领域:
- 期权定价以及相关计算;
- 固定收益产品定价以及相关计算。
与期权相关的主要内容有:
- 表示亚式期权、欧式期权、美式期权、百慕大期权等等不同种类期权的数据结构;
- 基于解析法、有限差分法、二(三)叉树法和 Monte Carlo 的定价引擎;
- 多种波动率模型,例如 Heston 模型、GARCH 模型和局部波动率模型;
- 校准波动率期限结构的方法。
- ...
与固定收益相关的主要内容有:
- 表示固息债、浮息债、零息债、通胀挂钩债券、利率互换、可转债等等不同种类固定收益产品的数据结构;
- 表示收益率期限结构的数据结构;
- 现金流分析;
- 若干种收益率曲线的插值方法;
- 若干种计息方法,例如 Actual / 365、Actual / 360、30 / 360 等等。
- ...
安装与使用
推荐在 Ubuntu 操作系统下安装和使用 QuantLib ,如果使用的是 Ubuntu 16.04 或 18.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 提供了一套非常详尽的文档,更加深入细致的专业知识可以在这里获得。
上手编程、操作软件是掌握 QuantLib 的过程中要面对的一大挑战。
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 上作者提供的例子开始了,不要忘了勤快地查看文档。
快速上手学习的方法:
如果要快速上手学习、使用 QuantLib,C++ 就显得过于困难了。鉴于 C++ 版的 QuantLib 取得了巨大的成功,许多开源爱好者把 QuantLib 拓展到了其他语言和软件环境下,在 C#、Java、Perl、Python、Julia、Ruby 和 R 等语言中都可以找到对 QuantLib 的封装;在 Microsoft Excel 和 LibreOffice Calc 中也有 QuantLib 的插件。
在 Ubuntu 环境下,常用的两个扩展分别是:
- Python 封装,QuantLib-Python
- R 封装,RQuantLib
遗憾的是,这些扩展不能提供 C++ 版本的全部功能。
QuantLib-Python
QuantLib-Python 是三个扩展中做的最好的,尽可能的移植了 C++ 版本的架构和使用方法,提供的功能也是最多的。quantlib-python 的安装十分轻松:
pip install QuantLib
感谢 Gouthaman Balaraman 提供了 quantlib-python 详尽的范例教程,和他编写的书——QuantLib Python Cookbook。
如果想要扩展 QuantLib-Python 目前的功能,实现定制化,你需要一点 SWIG 的知识用来创建自己的封装。
RQuantLib
和 Python 相比,R 在面向对象编程方面的能力比较弱,所以 RQuantLib 没有保留 QuantLib 原始的架构和用法,而是将部分功能包装成为函数,相对于 QuantLib-Python 而言,RQuantLib 保留的功能更少。
RQuantLib 的主页。
金融计算的开源库——QuantLib 学习入门的更多相关文章
- DCMTK开源库的学习笔记4:利用ini配置文件对dcm影像进行归档
转:http://blog.csdn.net/zssureqh/article/details/8846337 背景介绍: 医学影像PACS工作站的服务端需要对大量的dcm文件进行归档,写入数据库处理 ...
- html5游戏开发框架之lufylegend开源库件学习记录
下载地址http://lufylegend.com/lufylegend 引用 <script type="text/javascript" src="../luf ...
- .net使用cefsharp开源库开发chrome浏览器(一)
一.背景 公司现在使用.NET技术,有web组.有winfrom桌面组.而这两组团队业务部分有分多相似的地方,使用的数据源也是相同的,以此造成两组团队之间做了很多彼此都已经做过的工作. 有什么办法使得 ...
- DICOM医学图像处理:开源库mDCM与DCMTK的比較分析(一),JPEG无损压缩DCM图像
背景介绍: 近期项目需求,须要使用C#进行最新的UI和相关DICOM3.0医学图像模块的开发.在C++语言下,我使用的是应用最广泛的DCMTK开源库,在本专栏的起初阶段的大多数博文都是对DCMTK开源 ...
- QuantLib 金融计算——QuantLib 入门
目录 QuantLib 金融计算--QuantLib 入门 简介 主要功能 安装与使用 学习指南 The HARD Way The EASY Way QuantLib 金融计算--QuantLib 入 ...
- QuantLib 金融计算——自己动手封装 Python 接口(1)
目录 QuantLib 金融计算--自己动手封装 Python 接口(1) 概述 QuantLib 如何封装 Python 接口? 自己封装 Python 接口 封装 Array 和 Matrix 类 ...
- MXNet 学习 (1) --- 最易上手的深度学习开源库 --- 安装及环境搭建
安装环境:Win 10 专业版 64位 + Visual Studio 2015 Community. 记录下自己在有GPU的环境下安装配置MXNet的过程.该过程直接使用MXNet release ...
- 在别的地方看的<<给程序员介绍一些C++开源库>>,记录给大家共同学习
首先说明这篇文章不是出自我手,大家共同学习. 引用地址:http://oss.org.cn/?action-viewnews-itemid-61998. C++开源库,欢迎补充. C++在“商业应用” ...
- QuantLib 金融计算
我的微信:xuruilong100 <Implementing QuantLib>译后记 QuantLib 金融计算 QuantLib 入门 基本组件之 Date 类 基本组件之 Cale ...
随机推荐
- Ubuntu通过终端命令行换阿里源
检查Ubuntu系统的Codename $ lsb_release -a 得到结果: No LSB modules are available. Distributor ID: Ubuntu Desc ...
- oracle问题之SYSTEM表空间不足 (二)
杂症二.SYSTEM表空间不足报错 一.杂症: PLSQL登录,报错: ORA-00604: 递归 SQL 层 出现错误 ORA-01653: 表.无法通过(在表空间中)扩展 ORA-02002: ...
- mac如何用quick look预览多个文件或者图片
1.先选中要查看的多个文件,然后点击 空格键 2.按住 command+return 就可以同时预览多个文件了 如果想全屏预览,则在1中,按住 option+空格键 ,然后再进行2 ,就实现全屏预览了 ...
- 为什么用nginx:它的5个主要优点
1.高并发,高性能 2.可扩展性好啊 3.高可靠性 4.热部署 5.BSD许可证
- 死磕java(3)
流程控制 if else // do while// switch case// while do// break// continue// 相关查询百度
- ATL的GUI程序设计(1)
from:http://blog.titilima.com/atlgui-1.html 第一章 不能免俗的"Hello, World!" 在这一章里,就像所有的入门级教程一样,我也 ...
- 关于centos7下networkManager关闭操作
由于network和NetworkManager服务会出现冲突,而且NetworkManager通常会比较先启动,所以为了防止NetworkManager的启动导致我们直接配置的网络环境失效,我们需要 ...
- Java程序员必备英文单词
列表中共有769个单词,这些单词是从JDK.Spring.SpringBoot.Mybatis的源码中解析得到,按照在源码中出现的频次依次排列,页面中的单词是出现频次大于1000的.单词的音标.翻译结 ...
- SpringProfile轻松切换多环境配置文件
在项目开发的过程中,我们难免会遇到开发.测试.生产等环境的切换,而各个环境的配置肯定是不同的.传统的办法是在项目打包的时候修改配置文件.但人为做的事情难免产生意外.Spring 为我们提供了一种多环境 ...
- 在Linux安装MySQL
yum 方式卸载MySQL与安装MySQL . rpm -qa | grep -i mysql命令查看已经安装过的组件 [root@VM_0_10_centos ~]# rpm -qa | grep ...