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

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

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

载入 QuantLib:

import QuantLib as ql

print(ql.__version__)
1.15

概述

QuantLib 中描述货币之间汇率信息的类是 ExchangeRateCurrency 体系内的每两种货币都可以生成出一个 ExchangeRate 对象。

构造函数

ExchangeRate 的构造函数非常固定,接受三个参数:

ExchangeRate(source,
             target,
             rate)
  • source:一个 Currency 对象,表示源货币;
  • target:一个 Currency 对象,表示目标货币;
  • rate:一个浮点数,表示“sourcetarget”的汇率。

成员函数

常用成员函数如下:

  • source():返回 Currency 对象,即源货币;
  • target():返回 Currency 对象,即目标货币;
  • rate():返回浮点数,即汇率;
  • type():返回内置的整数常量,
    • ExchangeRate.Direct:等于 0,表示该汇率是通过构造函数直接构造的;
    • ExchangeRate.Derived:等于 1,表示该汇率是通过其他汇率对象简间接构造的;
  • exchange(amount)amount 是一个 Money 对象,该函数将 amount 转换成等价值的其他货币;
  • chain(r1, r2)r1r2ExchangeRate 对象,所涉及的货币必须构成一个三角关系,该函数将返回一个 ExchangeRate 对象,补全三角关系中缺失的一边。

示例,

import QuantLib as ql
usd = ql.USDCurrency()
cny = ql.CNYCurrency()

usdTocny = ql.ExchangeRate(usd, cny, 6.85)

m_usd = 1.32 * usd
m_cny = 5.32 * cny

print(
    'Converting from USD: ', m_usd, ' = ',
    usdTocny.exchange(m_usd))
print(
    'Converting from CNY: ', m_cny, ' = ',
    usdTocny.exchange(m_cny))

print(usdTocny.source())
print(usdTocny.target())
print(usdTocny.rate())

eur = ql.EURCurrency()

cnyToeur = ql.ExchangeRate(eur, cny, 7.73)

usdToeur = ql.ExchangeRate.chain(usdTocny, cnyToeur)

m_eur = 1000.0 * eur

print(
    'Converting from EUR: ', m_eur, ' = ',
    usdToeur.exchange(m_eur))

print(usdTocny.type() == ql.ExchangeRate.Direct)
print(usdToeur.type() == ql.ExchangeRate.Derived)
Converting from USD:  $ 1.32  =  Y 9.04
Converting from CNY:  Y 5.32  =  $ 0.78
U.S. dollar
Chinese yuan
6.85
Converting from EUR:  EUR 1000.00  =  $ 1128.47
True
True

结果会根据货币的类型自动四舍五入。

扩展阅读

《QuantLib 金融计算》系列合集

posted @ 2019-05-28 23:53  xuruilong100  阅读(1241)  评论(0编辑  收藏  举报