如果未做特别说明,文中的程序都是 python3 代码。

QuantLib 金融计算——基本组件之 ExchangeRateManager 类

载入 QuantLib:

import QuantLib as ql

print(ql.__version__)
1.15

概述

QuantLib 中管理货币之间汇率信息的类是 ExchangeRateManager,配合 Money 类中的相应配置可以实现在货币的代数计算中自动转换汇率。

Money 类中的汇率转换配置

Money 类中的汇率转换配置通过静态函数 setConversionType 实现,可用的配置由三个内置整数表示,分别为:

配置类型 含义
NoConversion 不进行转换
BaseCurrencyConversion 统一转换成一种基准货币(base currency)
AutomatedConversion 转换成计算表达式中出现的第一种货币

如果使用 BaseCurrencyConversion,还需要在 Money 类调用静态函数 setBaseCurrency 配置基准货币。

ExchangeRateManager

ExchangeRateManager 是一个单体(Singleton),一般不直接显式实例化,需要通过调用静态函数 instance 获得唯一的一个 ExchangeRateManager 实例。

ExchangeRateManager.instance()

函数

ExchangeRateManager 成员函数有三个。

  • add(ex, start_date, end_date):向 ExchangeRateManager 实例添加一个 ExchangeRate 对象 ex,该汇率的有效期起始时间是 start_date(默认值是 Date.minDate()),该汇率的有效期结束时间是 end_date(默认值是 Date.maxDate())。
  • lookup(source, target, date, type):返回一个汇率对象,源货币为 source,目标货币是 target,日期在 date(默认为当前日期),类型为 type(默认值是 ExchangeRate.Derived)。ExchangeRateManager 实例将首先在所有记录的汇率中寻找想要的汇率;如果找不到,则试图根据汇率串联起来的路径返回最短路径上推算出的汇率(这种情况下 type 必须是 ExchangeRate.Derived)。
  • clear():清空记录的汇率。

示例,

ql.Money.setConversionType(ql.Money.AutomatedConversion)

usd = ql.USDCurrency()
cny = ql.CNYCurrency()
eur = ql.EURCurrency() usdXcny = ql.ExchangeRate(usd, cny, 6.912)
usdXeur = ql.ExchangeRate(usd, eur, 0.834) ql.ExchangeRateManager.instance().add(usdXcny)
ql.ExchangeRateManager.instance().add(
usdXeur,
ql.Date(1, ql.May, 2019),
ql.Date(3, ql.May, 2019)) m_eur = 100 * eur
m_cny = 150 * cny ql.Settings.instance().evaluationDate = ql.Date(2, ql.May, 2019) print(m_eur, " + ", m_cny, " = ", m_eur + m_cny) ql.Settings.instance().evaluationDate = ql.Date(4, ql.May, 2019) print(m_eur, " + ", m_cny, " = ", m_eur + m_cny)
EUR 100.00  +  Y 150.00  =  EUR 118.10
RuntimeError: no conversion available from CNY to EUR for May 4th, 2019

结果会根据货币的类型自动四舍五入。注意:欧元与人民币之间的汇率通过美元间接获得,当估值日期(evaluationDate)那天没有可用汇率时,系统会报错。

QuantLib 金融计算——基本组件之 ExchangeRateManager 类的更多相关文章

  1. QuantLib 金融计算——基本组件之 Currency 类

    目录 QuantLib 金融计算--基本组件之 Currency 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Cu ...

  2. QuantLib 金融计算——基本组件之 Date 类

    目录 QuantLib 金融计算--基本组件之 Date 类 Date 对象的构造 一些常用的成员函数 一些常用的静态函数 为估值计算配置日期 如果未做特别说明,文中的程序都是 Python3 代码. ...

  3. QuantLib 金融计算——基本组件之 Calendar 类

    目录 QuantLib 金融计算--基本组件之 Calendar 类 Calendar 对象的构造 一些常用的成员函数 自定义假期列表 工作日修正 如果未做特别说明,文中的程序都是 Python3 代 ...

  4. QuantLib 金融计算——基本组件之 DayCounter 类

    目录 QuantLib 金融计算--基本组件之 DayCounter 类 DayCounter 对象的构造 一些常用的成员函数 如果未做特别说明,文中的程序都是 Python3 代码. QuantLi ...

  5. QuantLib 金融计算——基本组件之 DateGeneration 类

    目录 QuantLib 金融计算--基本组件之 DateGeneration 类 QuantLib 金融计算--基本组件之 DateGeneration 类 许多产品的估值依赖于对未来现金流的分析,因 ...

  6. QuantLib 金融计算——基本组件之 Schedule 类

    目录 QuantLib 金融计算--基本组件之 Schedule 类 Schedule 对象的构造 作为"容器"的 Schedule 对象 一些常用的成员函数 如果未做特别说明,文 ...

  7. QuantLib 金融计算——基本组件之 Index 类

    目录 QuantLib 金融计算--基本组件之 Index 类 QuantLib 金融计算--基本组件之 Index 类 Index 类用于表示已知的指数或者收益率,例如 Libor 或 Shibor ...

  8. QuantLib 金融计算——基本组件之 InterestRate 类

    目录 QuantLib 金融计算--基本组件之 InterestRate 类 InterestRate 对象的构造 一些常用的成员函数 如果未做特别说明,文中的程序都是 Python3 代码. Qua ...

  9. QuantLib 金融计算——基本组件之 Money 类

    目录 QuantLib 金融计算--基本组件之 Money 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Money ...

随机推荐

  1. java socket相关的timeout

    1 java socket的两个timeout 一个是connect timeout,即建立连接的timeout,另外一个是so timeout,是读取数据的timeout.这两个timeout都是因 ...

  2. Mac 操作系统安装 SVN server教程(Subversion With Mac OS X Tutorial)

    Find recent articles on my github page: rubyrobot.github.io © 2006-2014 Imagine Ecommerce Subversion ...

  3. 剑指Offer:调整数组顺序使奇数位于偶数前面【21】

    剑指Offer:调整数组顺序使奇数位于偶数前面[21] 题目描述 输入一个整形数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 解题分析 使用插 ...

  4. window cmd 自动补全

    1. 用命令里输入regedit注册表 WIN+R 快捷输入 regedit regedit2. 键值改为9(十进制) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Co ...

  5. Python 参数校验的进化

    Python 函数参数魔法 事情的起因是感觉目前项目中的参数校验方法写的太简单了,很多时候需要在server层再if else处理,于是就动手准备写一个好用一点的,可以自定义校验参数规则的参数校验器, ...

  6. webpack4 中的最新 React全家桶实战使用配置指南!

    最新React全家桶实战使用配置指南 这篇文档 是吕小明老师结合以往的项目经验 加上自己本身对react webpack redux理解写下的总结文档,总共耗时一周总结下来的,希望能对读者能够有收获, ...

  7. 详细阐述ping命令中请求超时与无法访问的区别

    1.Request timed out 这是大家经常碰到的提示信息,很多文章中说这是对方机器置了过滤ICMP数据包,从上面工作过程来看,这是不完全 正确的,至少有下几种情况. (1) 对方已关机,或者 ...

  8. 脚踏实地学C#1-基元类型

    基元类型:编译器直接支持的数据类型 基元类型直接映射到FCL类库上,如int 和Int32是等价的,只不过是int是c#提供的,Int32是FCL类库提供的. int只是Int32的别名 using ...

  9. SQL server 备份/恢复/压缩 进度查询

    第一步,用 sp_who2 查出备份的sid(或在窗口中的连接属性中看) exec sp_who2 第二步,用以下查询获得运行情况(看 percent_complete列) SELECT sessio ...

  10. 腾讯Hermes设计概要——数据分析用的是列存储,词典文件前缀压缩,倒排文件递增id、变长压缩、依然是跳表-本质是lucene啊

    转自:http://data.qq.com/article?id=817 三.Hermes设计概要 架构描述 系统核心进程均采用分散化设计,根据业务发展需求,可随意扩缩容机器; 周期性数据直接通过td ...