在Python中使用QuantLib

QuantLib-python心得 Heston 模型的基本思想是波动率(或方差)不是一个常数,而是一个随机变量,可以随着时间的推移而波动。标的资产价格的动态(类似于 Black-Scholes 模型中的动态):以上公式大概看看就行,总的来说,Heston默认波动率是一个随时间变化而波动的随机过程。 阅读详情

Quantlib简介

相比TA-Lib在技术分析领域的地位,QuantLib在金融工程领域的地位可以说有过之而无不及。

参考其官方网站,QuantLib中包含的的模块如下(其中个人感觉国内比较有用的添加了中文注释):

  • Currencies and FX rates(货币相关)

  • Date and time calculations(日期和时间计算)

  • Calendars

  • Day counters

  • Design patterns

  • Financial instruments

  • Finite-differences framework

  • Lattice methods

  • Math tools

  • 1-D Interpolations and corresponding traits

  • One-dimensional solvers

  • Optimizers(优化器)

  • Monte Carlo framework (蒙特卡洛模拟框架)

  • Numeric types

  • Output manipulators

  • Pricing engines(定价引擎)

  • Asian option engines(亚式期权)

  • Barrier option engines(障碍期权)

  • Basket option engines(篮子期权)

  • Cap/floor engines

  • Cliquet option engines

  • Forward option engines(远期期权)

  • Quanto option engines

  • Swaption engines

  • Vanilla option engines(普通期权)

  • QuantLib macros

  • Debugging macros

  • Numeric limits

  • Short-rate modelling framework(短期利率建模框架)

  • Stochastic processes(随机过程)

  • Term structures(期限结构)

  • Utilities

作为期权交易员,作者本人比较关注的是期权定价引擎和日历模块。接下来国内预计将会推出的大商所豆粕期权和郑商所白糖期权都是美式期权,在每天连续交易时段中定价比较适合的是二叉树模型。相比较于闭式解的BS模型,基于数值模拟的二叉树模型的运算量提高了一个数量级,因此高效的定价引擎对于这些商品期权的交易员而言十分重要。QuantLib使用C++开发,并通过SWIG包装对其他语言提供调用API,足以满足连续交易对性能的需求。

其他的亚式期权、障碍期权定价引擎等,则适合国内OTC期权市场的参与者(无论做市商还是买方机构),毕竟这是一个“货物出柜、概不退换”的市场,想要不被对手坑就得保证自己也能有奇异期权定价能力。

QuantLib在Python中的安装

QuantLib功能强大的同时安装也较为复杂,其官方网站仅提供了源代码,需要用户自行编译,完成后还需要编译QuantLib的SWIG封装从而实现Python调用。

除了官方提供的SWIG封装外,Enthought公司在Github上还有一个名为pyql的Cython封装项目,号称速度更快,API设计更Pythonic,但是这里作者提醒:

除非真的特别喜好折腾,否则轻易不要跳pyql的坑!安装过程相当复杂(涉及到修改QuantLib的C++源代码),pyql在github上的安装教程中的步骤也有一些错误,作者跳坑后花了两周都没爬出来,老老实实回去用SWIG封装了。

下面开始一步步的介绍安装步骤:

  1. 参考Python量化交易平台开发教程系列3-vn.py项目中API封装的编译中的步骤,安装好Anaconda、Visual Studio和Boost,假设Anaconda的安装路径为D:\Anaconda,Boost的安装路径为D:\boost_1_60_0。

  2. 在这里下载QuantLib和Quantlib-SWIG,注意请选择两者都有的版本(在作者写这篇教程时,两者都有的最新版本号是1.7),将下载的zip文件分别解压缩,假设路径为D:\QuantLib-1.7和D:\QuantLib-SWIG-1.7。

  3. 在这里下载SWIG(swigwin-3.0.8),并解压缩放到D:\swigwin-3.0.8。

  4. 设置以下环境变量(不会的请参考设置环境变量):

    • QL_DIR:D:\QuantLib-1.7
    • myanaconda:D:\Anaconda
    • myboost:D:\boost_1_60_0
    • myswig:D:\swigwin-3.0.8
    • myqlswig:D:\QuantLib-SWIG-1.7
  5. 编译安装QuantLib,打开cmd,切换到D盘(输入D:,因为上面的所有文件夹都在D盘),点击窗口左上角的图标,选择“编辑->粘贴“,将下方的批处理命令复制到cmd中运行(可以一次性全部复制,也可以逐行复制运行,注意全部复制时,若运行到某一步卡住,可以尝试按回车执行这一步的命令):

    REM 这里使用的是VS2013
    
    REM 打开VS命令行工具来设置编译所需的环境变量
    "%VS120COMNTOOLS%\VsDevCmd.bat"
    
    REM 切换到QuantLib代码所在的文件夹
    cd %QL_DIR%
    
    REM 把boost库添加到include和library路径中,并且指定VSC+=使用这些路径
    set INCLUDE=%myboost%;%INCLUDE%
    set LIB=%myboost%\lib32-msvc-12.0;%LIB%
    set UseEnv=true
    
    REM 使用msbuild来编译QuantLib
    REM 这个要花一段时间(几十分钟到若干小时)
    msbuild /p:AdditionalLibPaths="%myboost\lib" /p:Configuration=Release /p:Platform=Win32 QuantLib_vc12.sln
    
  6. 编译安装QuantLib-SWIG,将下方的批处理命令复制到cmd中运行(运行方法和上一步相同):

    REM 把编译工具设置为使用VS2013
    set VS100COMNTOOLS=%VS120COMNTOOLS%
    set VS90COMNTOOLS=%VS120COMNTOOLS%
    
    REM 打开VS命令行工具来设置编译所需的环境变量
    "%VS120COMNTOOLS%\VsDevCmd.bat"
    
    REM 切换到QuantLib-SWIG下面的Python文件夹下
    cd %myqlswig%\Python
    
    REM 创建setup.cfg
    echo [build] > setup.cfg
    echo compiler=msvc >> setup.cfg
    
    REM 设置路径和环境变量
    set PATH=%myanaconda%;%myanaconda%\scripts;%myswig%;%PATH%
    set INCLUDE=%myboost%;%INCLUDE%
    set LIB=%myboost%\lib32-msvc-12.0;%LIB%
    
    REM 编译QuantLib-SWIG的Python接口
    REM 只有当swig的.i文件发生变化时,才需要先执行wrap命令
    python setup.py wrap
    python setup.py build
    python setup.py install
    
  7. 接下来可以尝试运行D:\QuantLib-SWIG-1.7\Python\examples目录下的一些例子,没有报错则说明安装成功

有社区成员发现TA-Lib的下载网站上也有QuantLib的安装包,不想折腾以上步骤的用户可以尝试(作者并未测试过,大家请自行折腾)。

vn.py和QuantLib

相比较于TA-Lib,QuantLib由于其主要针对复杂衍生品,适用的人群会相对窄一些,举两个例子:

商品期权的CTA策略交易

前文已经提到过国内的商品期权将会主要采用美式期权的合约设计,在定价方面需要使用二叉树模型。商品期权的最小价格变动通常比其标的物本身更小(相同的价格变动对应的TICK跳动更多),所以会比其标的物更适合交易CTA类的策略。

但是同时因为期权的非线性特征,在做多时可以采用买入看涨和卖出看跌两种方法(做空也一样有两种:买入看跌和卖出看涨),具体的选择就需要参考当时的波动率水平,而QuantLib的速度足以满足CTA类策略对于低延时的要求。

场外期权交易系统

越来越多的国内买方机构(券商资管、信托、基金和私募等)开始参与到OTC期权的市场,OTC期权以灵活著称,不但可交易的品种更多(沪深300、中证500、黄金、铜等),可供选择的期权类型也更多(灵活到期时间、奇异期权)。

目前大部分机构依旧采用传统的EXCEL来记录和管理,通常需要手动输入行情数据(也可以使用Wind接口接入实时行情),使用较为麻烦也无法做到实时的一些交易对冲。同时由于EXCEL VBA的局限性,对于障碍期权等奇异期权,买家往往无法自己进行估值,必须依赖于OTC做市商给出的数字。

结合vn.py和QuantLib,交易员可以构建连通场内外的期权交易系统,使用数据库而不是EXCEL来管理持仓和风险,并基于实时行情来计算当前持仓的希腊值敞口,结合场内的期货和现货(ETF、股票等)来实现日内对冲,从而真正实现三维立体的交易模式。

使用Python的QuantLib库,进行期权的定价与希腊字母的计算(2) 阅读详情

相关推荐

QuantLib教程(一)QuantLib的时间

QuantLib是一个用于衍生品定价、分析分析的一个库,是用C++写的,通过SWING技术可以用Python调用。量化投资自古分P宗和Q宗,相比于各种量化回测平台,QuantLib无意识Q宗的宠儿。 安装之类的,网上教程很多了,读者自行百度即可。安装完之后,import QuantLib,如果无误,再回来一起学习吧。

lyx的专栏 1万+

【手把手教你】固定收益和衍生品分析利器QuantLib入门

引言QuantLib是一个专门用于利率、债券与衍生品等金融工具定价分析的库,可以说是固定收益和金融衍生品分析的一个利器。QuantLib本身是使用C++写的,通过SWING技术封装后可以...

Python金融量化 5555

QuantLib实战:5分钟用Python搞定欧式期权定价(附完整代码)

本文通过一个完整的Python实例,详细介绍了如何使用QuantLib金融计算库快速实现欧式期权的定价。从环境配置、参数设定,到调用布莱克-斯科尔斯模型解析解和蒙特卡洛模拟进行定价与对比,并进一步展示了计算希腊值和隐含波动率等进阶操作,帮助开发者高效、可靠地完成金融衍生品定价任务。

weixin_29007243的博客 351

介绍quantlib和pyfolio

volatility = 0.20 # 波动率。

远方雪的专栏 1314

QuantLib-python使用心得(持续更新)

quantLib属于黑匣子,大家有问题除了看教程,还可以爬梯子出去多问问openAI,我主要是根据我自己的需求写笔记。

mooncrystal123的博客 372

SAP CO-PA获利分析避坑指南:从数据采集到报表设计的5个关键步骤

本文深入解析了SAP CO-PA获利分析模块从数据采集到报表设计的完整流程。文章重点剖析了数据源头、特征派生、获利段设计等关键步骤,并对比了基于账户与基于成本核算两种模式的差异,特别强调了在S/4HANA时代的选择与常见陷阱,旨在帮助企业构建可靠、可执行的盈利分析体系。

flink9streamer的博客 827

Centos下配置QuantLib-Python

注意:先将当前用户test赋予和root相同权限,后面再调回来 QuantLib-Python不支持python2,以下是我的python环境: 1.安装Boost(下载Boost安装包后,放到需要安装的目录下,如/home/test/): cd /home/test/ tar xzfboost_1_74_0.tar.gz cd boost_1_74_0 ./bootstrap.sh ./b2 ./b2 install 2. 安装Quan...

sinat_36234054的博客 298

Workbench中基于nCode的列车转向架随机振动疲劳寿命预测方法

本文详细介绍了在ANSYS Workbench中结合nCode进行列车转向架随机振动疲劳寿命预测的完整方法。通过几何清理、模态分析、PSD载荷定义及随机振动求解,并重点阐述了nCode中Dirlik等疲劳算法的选择与应用,为轨道交通关键部件的可靠性设计提供了系统的仿真分析流程与工程实践指导。

weixin_29234423的博客 474

Python-QuantLib Package

最近在开发一个高频指数期权套利交易系统,想到一个模型实践的问题,跟大家分享一下,也让刚入金融计算领域的朋友们,了解实务的精致之处。 指数期权与外汇期权一样,有不同到期日的契约在交易,不同天期的契约隐含波动性不同。如果市场上有三个月与六个月到期的契约在交易,则我们可推算出3M与6M的波动性。 问题是,如果我想知道4M的波动性,我该如何推估? 25年前我在银行开发衍生商品估值风管系统时,就直接按时间比率内插4M的波动性。20年前我在台湾 凯基证券建置VaR风管系统时,发现J.P.Morgan的RiskMe

AndyDong1209的博客 695

数据助力行业发展:BJTU-RAO转向架数据集介绍

BJTU-RAO转向架数据集是完全公开的,何研究人员皆可以通过后文的下载链接免费下载数据,且在标注数据来源的前提下,研究人员可以自由使用BJTU-RAO转向架数据集。因此,聚焦各类列车转向架传动系统在途安全保障新技术研究和新算法开发,实现牵引电机、驱动齿轮箱和轴箱等关键部件的实时状态监测与智能故障诊断,对保障列车安全可靠运行具有重要的现实意义。BJTU-RAO转向架数据集包含51种健康状态的样本,涵盖正常状态、部件级单一故障、部件级复合故障以及系统级关联复合故障,数据量达116GB。

2401_88870554的博客 3503

5分钟搞定CST周期性结构仿真:共面波导色散曲线快速生成技巧

本文提供了一套在CST Studio Suite中快速仿真周期性结构并生成色散曲线的标准化流程。针对共面波导设计,重点解析了周期性边界条件的核心设置、本征模求解器(JDM算法)的优化技巧,以及通过参数扫描与后处理模板实现自动化,旨在帮助射频与微波工程师在5分钟内高效完成关键性能验证。

blue的专栏 1250

docker安装python库_PythonStock(18):使用docker 安装 quantlib 源码安装&lib库安装

前言使用Python开发一个股票项目。项目地址:https://github.com/pythonstock/stock相关资料:http://www.voidcn.com/article/p-rlenujpw-bpc.html主要使用开发语言是python。使用的lib库是pandas,tushare,TensorFlow,tornado等。1,关于quantlibQuantLib 是一个专注于...

weixin_30533377的博客 587

基于集成运放心电放大器设计(原创)

原创作者:einyboy or alert 最近在看美剧《危机边缘》关于边缘科学的案件,科技控可以看一下,但建议不在吃东西的时候看。想像力是创造的思想源头,动手能力则是创造的车床。 自认为是没有想像力的那类,只能发挥动手能力了。 心电测量简介 图1 心电极接线图 如图1心电测试一般使用3个心电极进行测量,各个电极的说明如下: RA: Right Arm缩写,右手电极 LA: L...

huandaohack的专栏 6926

python金融接口_QuantLib 金融计算——自己动手封装 Python 接口(1)

QuantLib 金融计算——自己动手封装 Python 接口(1)概述QuantLib 已经开始在 PyPi 上发布封装好的 Python 接口,安装和使用非常方便,与普通的包别无二致。并且更新及时,保持对应最新版本的 QuantLib。官方发布的 Python 接口,其优点是广度和全面,缺点是深度不足。有时候用户需要的功能恰好没有被封装(《收益率曲线之构建曲线(3)》一文中曾经提到过),希望重...

weixin_39882317的博客 393

配电变压器测控终端装置设计

配电变压器测控终端装置在电网运行中承担着数据采集、状态监测、故障预警及远程控制的关键任务,其性能直接关系到配电系统的安全性与可靠性。本研究围绕测控终端的硬件电路、软件算法、通信系统及系统优化展开深入分析,并基于实验测试验证系统性能。硬件设计包括模拟量输入电路、电压电流信号变换电路、A/D转换电路、控制与通信电路及系统电源电路,确保信号采集的高精度与系统的稳定性。软件部分涵盖系统控制程序、数据采集与处理程序、通信程序及显示与控制程序,实现数据的实时处理与传输。通信模块结合RS-485、CAN总线及以太网技术,

weixin_44553616的博客 1103

COMSOL介电弹性体数值仿真指南:预拉伸圆形DEA的稳态变形分析(II)

本期博客是《COMSOL介电弹性体数值仿真指南》系列博客中的一期。聚焦于介电弹性体驱动器(DEA)中最为经典的预拉伸圆形DEA驱动器构型,对其在COMSOL平台中的具体建模步骤进行介绍与讨论。

忘了面孔的Batou 355

QuantLib与Python集成终极指南:如何通过SWIG构建专业金融分析工具

QuantLib作为业界领先的量化金融开源库,为金融工程师和量化分析师提供了强大的数值计算和金融衍生品定价能力。本指南将详细介绍如何通过SWIG技术将QuantLib与Python完美集成,打造高效的金融分析工作流。🚀 ## 为什么选择QuantLib与Python集成? QuantLib是量化金融领域的**核心工具**,包含丰富的金融模型和算法。通过与Python集成,您可以: - 利用

gitblog_00902的博客 998

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2023 FasterNet 高效快速的部分卷积块

本文记录的是基于FasterNet的YOLOv11轻量化改进方法研究。FasterNet的网络结构借鉴 CNN 的设计理念,通过提出的PConv减少推理时的计算和内存成本,同时减少通道数并增加部分比例,降低延迟,并通过后续的PWConv来弥补特征信息可能缺失的问题,提高了准确性。本文在替换骨干网络中配置了原论文中的和六种模型,以满足不同的需求。

Limiiiing的博客 2033

【利率互换估值全解析】基于QuantLib与Python的固定收益衍生品定价技术

#### 1.1 利率互换的基本结构与经济本质 利率互换(Interest Rate Swap, IRS)是一种金融衍生品合约,合约双方约定在未来特定时期内交换一系列现金流。最常见的形式是固定利率与浮动利率的互换,这相当于"用固定利率负债置换浮动利率负债"的金融交易(类比:就像用固定利率的房贷替换成随市场变化的浮动利率贷款)。 **现金流交换机制**: - 固定利率支付方:在每个结算日支付固定

gitblog_00726的博客 746

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

使用Python的QuantLib库,进行期权的定价与希腊字母的计算

使用Python的QuantLib库,进行期权的定价与希腊字母的计算

AndyDong1209的博客 3459

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

python 金融计算包_QuantLib 金融计算——自己动手封装 Python 接口(1)

QuantLib 金融计算——自己动手封装 Python 接口(1)概述QuantLib 已经开始在 PyPi 上发布封装好的 Python 接口,安装和使用非常方便,与普通的包别无二致。并且更新及时,保持对应最新版本的 QuantLib。官方发布的 Python 接口,其优点是广度和全面,缺点是深度不足。有时候用户需要的功能恰好没有被封装(《收益率曲线之构建曲线(3)》一文中曾经提到过),希望重...

weixin_39939276的博客 477

python衍生品库_「手把手教你」固定收益和衍生品分析利器QuantLib入门

引言QuantLib是一个专门用于利率、债券与衍生品等金融工具定价分析的库,可以说是固定收益和金融衍生品分析的一个利器。QuantLib本身是使用C++写的,通过SWING技术封装后可以在Python调用。直接使用pip安装可能会报错,建议下载安装包的whl文件,然后再用pip进行安装。https://www.lfd.uci.edu/~gohlke/pythonlibs/#quantlib (建议...

weixin_39918961的博客 1245

python代码改写_QuantLib 金融计算——C++ 代码改写成 Python 程序的一些经验

QuantLib 金融计算——C++ 代码改写成 Python 程序的一些经验概述Python 在科学计算、数据分析和可视化等方面已经形成了非常强大的生态。而且,作为一门时尚的脚本语言,易学易用。因此,对于量化分析和风险管理的从业者来说,将某些 QuantLib 的历史代码转换成 Python 程序是一件值得尝试的工作。Python 本身的面向对象机制非常完善,借助 SWIG 的包装,由 C++ ...

weixin_39765325的博客 759

python金融接口_QuantLib 金融计算——自己动手封装 Python 接口(3)

quantlib 金融计算——自己动手封装 python 接口(3)概述如何封装源代码?与前一篇文章中的情况不同,要封装的程序不是已经编译好的库文件,而是 c++ 源代码。swig 可以从源代码的层面封装 c++ 接口,一方面要提供头文件,告知 swig 类、函数等的声明;另一方面要提供源文件,让 swig 知道方法的实现,swig 会自动对源文件进行编译,并最终链接到生成的 python 接口中...

weixin_31874603的博客 402

python 如何封装接口_QuantLib 金融计算——自己动手封装 Python 接口(2)

QuantLib 金融计算——自己动手封装 Python 接口(2)概述对于一项简单功能,通常只需要包装少数几个类就可以,正如《自己动手封装 Python 接口(1)》演示的那样。下面,将演示如何包装 QuantLib 中的复杂功能,最终实现从固息债交易数据中估计期限结构模型的参数。如何封装一项复杂功能?经过一翻摸索后发现,要封装一项复杂功能,首先要找到最小功能集合,即这项功能直接或间接涉及的类和...

weixin_39841002的博客 241

python金融接口_QuantLib 金融计算——自己动手封装 Python 接口(2)

目录QuantLib 金融计算——自己动手封装 Python 接口(2)概述对于一项简单功能,通常只需要包装少数几个类就可以,正如《自己动手封装 Python 接口(1)》演示的那样。下面,将演示如何包装 QuantLib 中的复杂功能,最终实现从固息债交易数据中估计期限结构模型的参数。如何封装一项复杂功能?经过一翻摸索后发现,要封装一项复杂功能,首先要找到最小功能集合,即这项功能直接或间接涉及的...

weixin_36443241的博客 296
上一篇: vn.trader使用教程系列3-策略算法
下一篇: 针对Quant的Python快速入门指南
Trader_Python
博客等级 码龄11年 392粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值