中国 Repo 7D 互换的例子
最后更新于:2022-04-01 21:58:31
# 中国 Repo 7D 互换的例子
> 来源:https://uqer.io/community/share/55c177cbf9f06c915418c641
下面的例子给出在量化实验室中如何为一个Repo 7D互换定价的例子
+ `swapType`:互换类型,`Payer`代表付固定端利息,收浮动端利息;
+ `nominal`:互换面值
+ `startDate`:互换生效日
+ `swapTenor`:互换期限
+ `paymentTenor`:付息周期
+ `fixedRate`:固定端利息
+ `rateSpread`:浮动端息差
+ `repoIndex`:浮动端指数
这里我们使用一条平坦的收益率曲线作为远期曲线:
```py
forwardingCurve = FlatForward(Date(2015, 8, 4), 0.05, 'Actual/360')
```
```py
from CAL.PyCAL import *
SetEvaluationDate = Date(2015, 8, 4)
swapType = SwapLegType.Payer
nominal = 100000000.
startDate = Date(2015, 8, 7)
swapTenor = Period('10Y')
paymentTenor = Period('3M')
fixedRate = 0.055
rateSpread = 0.0
forwardingCurve = FlatForward(Date(2015, 8, 4), 0.05, 'Actual/360')
repoIndex = RepoChina('7D', yieldCurve)
```
组装成我们需要的`RepoCompoundingSwap`:
```py
swap = RepoCompoundingSwap(swapType=swapType,
nominal=nominal,
startDate=startDate,
swapTenor=swapTenor,
paymentTenor=paymentTenor,
fixedRate=fixedRate,
rateSpread=rateSpread,
repoIndex=repoIndex)
```
继续的,为了计算`swap`的现值,我们需要定义`DiscountingSwapEngine`对象,这里我们同样使用一条平坦的收益率曲线:
```py
discountingCurve = FlatForward(Date(2015, 8, 4), 0.065, 'Actual/360')
pricingEngine = DiscountingSwapEngine(discountingCurve)
swap.setPricingEngine(pricingEngine)
print("NPV: {0:.4f}".format(swap.NPV()))
print("Fair rate: {0:.4f}".format(swap.fairRate()))
NPV: -2282521.8872
Fair rate: 0.0519
```
下面的是`swap`每条`leg`的具体现金流分析:在`legAnalysis`接受的参数中,0代表固定端,1代表浮动端。
```py
swap.legAnalysis(0).tail()
```
| | AMOUNT | NOMINAL | ACCRUAL_START_DATE | ACCRUAL_END_DATE | ACCRUAL_DAYS | INDEX | FIXING_DAYS | FIXING_DATES | INDEX_FIXING | DAY_COUNTER | ACCRUAL_PERIOD | EFFECTIVE_RATE |
| --- | --- |
| PAYMENT_DATE | | | | | | | | | | | | |
| 2024-08-07 | 1386301 | 1e+08 | 2024-05-07 | 2024-08-07 | 92 | #NA | #NA | #NA | #NA | Actual/365 (Fixed) | 0.2520548 | 0.055 |
| 2024-11-07 | 1386301 | 1e+08 | 2024-08-07 | 2024-11-07 | 92 | #NA | #NA | #NA | #NA | Actual/365 (Fixed) | 0.2520548 | 0.055 |
| 2025-02-07 | 1386301 | 1e+08 | 2024-11-07 | 2025-02-07 | 92 | #NA | #NA | #NA | #NA | Actual/365 (Fixed) | 0.2520548 | 0.055 |
| 2025-05-07 | 1341096 | 1e+08 | 2025-02-07 | 2025-05-07 | 89 | #NA | #NA | #NA | #NA | Actual/365 (Fixed) | 0.2438356 | 0.055 |
| 2025-08-07 | 1386301 | 1e+08 | 2025-05-07 | 2025-08-07 | 92 | #NA | #NA | #NA | #NA | Actual/365 (Fixed) | 0.2520548 | 0.055 |
```py
swap.legAnalysis(1).tail()
```
| | AMOUNT | NOMINAL | ACCRUAL_START_DATE | ACCRUAL_END_DATE | ACCRUAL_DAYS | INDEX | FIXING_DAYS | FIXING_DATES | INDEX_FIXING | DAY_COUNTER | ACCRUAL_PERIOD | EFFECTIVE_RATE |
| --- | --- |
| PAYMENT_DATE | | | | | | | | | | | | |
| 2024-08-07 | 1306927 | 1e+08 | 2024-05-07 | 2024-08-07 | 92 | repoChina1W Actual/365 (Fixed) | 1 | 2024-05-06 | 0.05072614 | Actual/360 | 0.2555556 | 0.05114062 |
| 2024-11-07 | 1306927 | 1e+08 | 2024-08-07 | 2024-11-07 | 92 | repoChina1W Actual/365 (Fixed) | 1 | 2024-08-06 | 0.05072614 | Actual/360 | 0.2555556 | 0.05114062 |
| 2025-02-07 | 1309570 | 1e+08 | 2024-11-07 | 2025-02-07 | 92 | repoChina1W Actual/365 (Fixed) | 1 | 2024-11-06 | 0.05073319 | Actual/360 | 0.2555556 | 0.05124405 |
| 2025-05-07 | 1265808 | 1e+08 | 2025-02-07 | 2025-05-07 | 89 | repoChina1W Actual/365 (Fixed) | 1 | 2025-02-06 | 0.05073319 | Actual/360 | 0.2472222 | 0.05120122 |
| 2025-08-07 | 1306927 | 1e+08 | 2025-05-07 | 2025-08-07 | 92 | repoChina1W Actual/365 (Fixed) | 1 | 2025-05-06 | 0.05072614 | Actual/360 | 0.2555556 | 0.05114062 |
';