文章

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

介绍 QuantLib 基本组件 ExchangeRate 类的使用。

由于版本问题,代码可能与最新版不兼容。

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

载入 QuantLib:

1
2
3
import QuantLib as ql

print(ql.__version__)
1
1.15

概述

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

构造函数

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

1
2
3
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 对象,补全三角关系中缺失的一边。

示例,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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)
1
2
3
4
5
6
7
8
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

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

本文由作者按照 CC BY 4.0 进行授权