本文在Creative Commons协议下发布。

简介

瞬息万变的金融市场开发出了太多的金融产品,产生了太多的计算问题,这对于 Fintech 来讲:无论是计算能力上的,还是软件设计上的是一个巨大的挑战。

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

主要功能

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

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

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

  • 表示亚式期权、欧式期权、美式期权、百慕大期权等等不同种类期权的数据结构;
  • 基于解析法、有限差分法、二(三)叉树法和 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 InstitutionsOptions, 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 学习入门的更多相关文章

  1. DCMTK开源库的学习笔记4:利用ini配置文件对dcm影像进行归档

    转:http://blog.csdn.net/zssureqh/article/details/8846337 背景介绍: 医学影像PACS工作站的服务端需要对大量的dcm文件进行归档,写入数据库处理 ...

  2. html5游戏开发框架之lufylegend开源库件学习记录

    下载地址http://lufylegend.com/lufylegend 引用 <script type="text/javascript" src="../luf ...

  3. .net使用cefsharp开源库开发chrome浏览器(一)

    一.背景 公司现在使用.NET技术,有web组.有winfrom桌面组.而这两组团队业务部分有分多相似的地方,使用的数据源也是相同的,以此造成两组团队之间做了很多彼此都已经做过的工作. 有什么办法使得 ...

  4. DICOM医学图像处理:开源库mDCM与DCMTK的比較分析(一),JPEG无损压缩DCM图像

    背景介绍: 近期项目需求,须要使用C#进行最新的UI和相关DICOM3.0医学图像模块的开发.在C++语言下,我使用的是应用最广泛的DCMTK开源库,在本专栏的起初阶段的大多数博文都是对DCMTK开源 ...

  5. QuantLib 金融计算——QuantLib 入门

    目录 QuantLib 金融计算--QuantLib 入门 简介 主要功能 安装与使用 学习指南 The HARD Way The EASY Way QuantLib 金融计算--QuantLib 入 ...

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

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

  7. MXNet 学习 (1) --- 最易上手的深度学习开源库 --- 安装及环境搭建

    安装环境:Win 10 专业版 64位 + Visual Studio 2015 Community. 记录下自己在有GPU的环境下安装配置MXNet的过程.该过程直接使用MXNet release ...

  8. 在别的地方看的<<给程序员介绍一些C++开源库>>,记录给大家共同学习

    首先说明这篇文章不是出自我手,大家共同学习. 引用地址:http://oss.org.cn/?action-viewnews-itemid-61998. C++开源库,欢迎补充. C++在“商业应用” ...

  9. QuantLib 金融计算

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

随机推荐

  1. abp vnext2.0之核心组件模块加载系统源码解析与简单应用

    abp vnext是abp官方在abp的基础之上构建的微服务架构,说实话,看完核心组件源码的时候,很兴奋,整个框架将组件化的细想运用的很好,真的超级解耦.老版整个框架依赖Castle的问题,vnext ...

  2. Git详解之安装

    前言 是时候动手尝试下 Git 了,不过得先安装好它.有许多种安装方式,主要分为两种,一种是通过编译源代码来安装:另一种是使用为特定平台预编译好的安装包. 从源代码安装 若是条件允许,从源代码安装有很 ...

  3. sys model 常见用法

    import sys #与python解释器 交互 print(sys.argv) #是一个列表 解释器执行文件名后面可以增加字符串 以列表元素形式添加进去def foo(): print('ok') ...

  4. SVN: 聚合工程下的子工程无法使用 svn:ignore

    当想将聚合工程manager下子工程没用的一些文件使用svn:ignore,发现该功能不能使用 这是因为SVN 服务器上还没有这些子工程的文件夹,只有聚合工程的文件夹,所以SVN认为在服务器上这些代码 ...

  5. 搭建DevOps模式的项目

    在后端的开发领域,各类开发框架都已经很多,在开发项目时可以根据不同的需要和需求选择合适的开发框架.然而在需要开发一个完善的工程化项目时,仅仅一个后端开发框架是不够的,还面临着在对开发项目的快速迭代中进 ...

  6. HDU2066dijkstra模板题

    问题描述: 题目描述:Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中    会遇见很多人(白马王 ...

  7. 12306 抢票系列之只要搞定RAIL_DEVICEID的来源,从此抢票不再掉线(上)

    郑重声明: 本文仅供学习使用,禁止用于非法用途,否则后果自负,如有侵权,烦请告知删除,谢谢合作! 开篇明义 本文针对自主开发的抢票脚本在抢票过程中常常遇到的请求无效等问题,简单分析了 12306 网站 ...

  8. MongoDB 4.2新特性:分布式事务、字段级加密、通配符索引、物化视图

    MongoDB 4.2已经发布,我们来看看它增加了哪些新特性?分布式事务?数据库加密?通配符索引? 在2019年MongoDB World大会上,CTO Eliot Horowitz介绍了MongoD ...

  9. awk命令入门

    什么是awk? AWK是一个强大的文本处理工具.可以使用awk读取输入文件.为数据排序.处理数据.对输入执行计算以及生成报表,还有无数其他的功能. 使用awk的基本格式 awk [options] ‘ ...

  10. node.js+express+mongoose实现用户增删查改案例

    node.js+express+mongodb对用户进行增删查改 一.用到的相关技术 使用 Node.js 的 express 框架搭建web服务 使用 express 中间件 body-parse ...