QuantLib 金融计算——基本组件之 ExchangeRateManager 类
如果未做特别说明,文中的程序都是 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 类的更多相关文章
- QuantLib 金融计算——基本组件之 Currency 类
目录 QuantLib 金融计算--基本组件之 Currency 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Cu ...
- QuantLib 金融计算——基本组件之 Date 类
目录 QuantLib 金融计算--基本组件之 Date 类 Date 对象的构造 一些常用的成员函数 一些常用的静态函数 为估值计算配置日期 如果未做特别说明,文中的程序都是 Python3 代码. ...
- QuantLib 金融计算——基本组件之 Calendar 类
目录 QuantLib 金融计算--基本组件之 Calendar 类 Calendar 对象的构造 一些常用的成员函数 自定义假期列表 工作日修正 如果未做特别说明,文中的程序都是 Python3 代 ...
- QuantLib 金融计算——基本组件之 DayCounter 类
目录 QuantLib 金融计算--基本组件之 DayCounter 类 DayCounter 对象的构造 一些常用的成员函数 如果未做特别说明,文中的程序都是 Python3 代码. QuantLi ...
- QuantLib 金融计算——基本组件之 DateGeneration 类
目录 QuantLib 金融计算--基本组件之 DateGeneration 类 QuantLib 金融计算--基本组件之 DateGeneration 类 许多产品的估值依赖于对未来现金流的分析,因 ...
- QuantLib 金融计算——基本组件之 Schedule 类
目录 QuantLib 金融计算--基本组件之 Schedule 类 Schedule 对象的构造 作为"容器"的 Schedule 对象 一些常用的成员函数 如果未做特别说明,文 ...
- QuantLib 金融计算——基本组件之 Index 类
目录 QuantLib 金融计算--基本组件之 Index 类 QuantLib 金融计算--基本组件之 Index 类 Index 类用于表示已知的指数或者收益率,例如 Libor 或 Shibor ...
- QuantLib 金融计算——基本组件之 InterestRate 类
目录 QuantLib 金融计算--基本组件之 InterestRate 类 InterestRate 对象的构造 一些常用的成员函数 如果未做特别说明,文中的程序都是 Python3 代码. Qua ...
- QuantLib 金融计算——基本组件之 Money 类
目录 QuantLib 金融计算--基本组件之 Money 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Money ...
随机推荐
- linux 中添加自己的库路径的方法 cannot open shared object file: No such file or directory
本文转自:http://blog.csdn.net/maotianwang/article/details/44619197 库文档在连接(静态库和共享库)和运行(仅限于使用共享库的程式)时被使用,其 ...
- ORA-00257
删除归档日志文件的方法: http://www.blogjava.net/kuuyee/archive/2013/05/15/399287.html 惜分飞大大的博客:http://www.xifen ...
- Mongoose学习(2)
1.Schema的扩展 UserSchema.methods.findUserName = function(cb){ return this.model('user').find({username ...
- var与变量提升
var是否可以省略 一般情况下,是可以省略var的,但有两点值得注意: 1.var a=1 与 a=1 ,这两条语句一般情况下作用是一样的.但是前者不能用delete删除.不过,绝大多数情况下,这种差 ...
- iOS 打开应用与系统功能的调用
[[UIApplication sharedApplication] openURL:url]; 通过给url不同的值,可以实现调用系统自带 电话/短信/邮箱/浏览器/... 1.调用 电话pho ...
- CodeForces - 86D D. Powerful array —— 莫队算法
题目链接:http://codeforces.com/problemset/problem/86/D D. Powerful array time limit per test 5 seconds m ...
- Git基本用法1
二.git的初始化 在使用git进行代码管理之前,我们首先要对git进行初始化. 1.Git 配置 使用Git的第一件事就是设置你的名字和email,这些就是你在提交commit时的签名,每次提交记录 ...
- certificate unknown(46) - 中间证书问题排查
因为腾讯云的网站备案迟迟没有批下来,因此使用了朋友在阿里云的域名yk,我则申请了一台阿里云服务器,并将域名解析映射至该服务器.SSL证书则是在腾讯云上申请的,使用了Apache文件夹中的文件,放置在c ...
- [HAOI 2012] Road
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2750 [算法] 考虑计算每个点对每条边的贡献 对于每个点首先运行SPFA或Dijks ...
- Vue.js style(内联样式)
Vue.js style(内联样式) 我们可以在 v-bind:style 直接设置样式: <div id="app"> <div v-bind:style=&q ...