Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/wwwroot/fquantplus.com/wp-content/plugins/latex/latex.php on line 47

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/wwwroot/fquantplus.com/wp-content/plugins/latex/latex.php on line 49

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/wwwroot/fquantplus.com/wp-content/plugins/latex/latex.php on line 47

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/wwwroot/fquantplus.com/wp-content/plugins/latex/latex.php on line 49

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/wwwroot/fquantplus.com/wp-content/plugins/latex/latex.php on line 47

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/wwwroot/fquantplus.com/wp-content/plugins/latex/latex.php on line 49

上篇文章我们提到了收益率曲线构造的理论知识,包括构造曲线所用的金融产品,如利率期货,欧洲美元期货的概念,在这篇文章我们将着重介绍如何使用QuantPlus Analytics系统构造收益率曲线。

收益率曲线都是我们站在今天对将来的收益率水平进行估计,不同的交易员构造出的收益率曲线也不同,所以收益率曲线构造得好坏也直接影响到投资和交易的业绩。目前国际常用的做法是用存款利率、LIBOR、OIS(隔夜指数掉期),欧洲美元期货和利率互换构造一条完整的收益率曲线。

回忆上一期, 我们了解了相关的利率产品

(1) 存款利率、LIBOR、OIS由于通常期间较短,用于构造收益率曲线的短端,如(年)

在实际中,瞬时利率并不是常数,市场上的报价实际上是满足如下方程的一个常数。

(2) 利率期货主要用于中端的收益率曲线。在从利率期货推收益率时,有个重要的细节:由于期货是当天交割,和远期不同,所以我们要做一个“曲率调整”。 即远期利率比期货利率要小

利率互换(浮动端是LIBOR)的特点是存在期限非常长的产品,如60年的互换,所以可以用于构造收益率曲线的远端。

总结一下,构造收益率曲线的思路如下

image

构造收益率曲线的要点、难点是:

1、 必须反应相关利率金融产品的市场价格。如果收益率曲线不能反应当前的市场数据,那收益率曲线肯定有一些问题。

2、 尽可能平滑连续,这是使用Bootstraping方法构造曲线时的重要要求。

3、 尽可能是递增的一条曲线。

4、 利率产品的期限有时重叠,例如3个月的Depo和3个月的Future,具体选用哪个产品是没有标准答案的,要看拟合曲线时的实际情况。

现在我们打开QuantPlus Analytics,开始构造收益率曲线,较为方便的方法是使用快速启动中的收益率曲线构建:

image

我们得到了两个表,RateHelpers和Bootstraping,其中

RateHelpers是存储各种金融产品报价的数据表,在这个表中我们会放入市场上可供构造曲线的所有金融产品的相关信息;

Bootstraping中我们将构造收益率曲线的表,我们会用QuantPlus Analytics所提供的函数从RateHelpers中选择较适合构造收益率曲线的产品,并用它们构造出一条较为连续的收益率曲线。

首先从数据终端获得相关市场据,这里仅仅选取数据中的最重要的部分,全部数据的excel文档会被上传到QuantPlus Analytics官方网站。

Depo的报价:

Future的报价:(假设曲率调整为0)

Swap的报价:


说明如下:

*Earliest date是指标利率的利率期起的那天,Latest date是指标利率的利率期终止的那天

利用以上数据构造出6个月的的零利率期限结构(因为这是利率互换的浮动端,所以我们要先得到这个期限结构),方法如下:

首先,我们新建一个表叫Yield Curve,专门用来得到6个月的零利率期限结构,在QuantPlus加载项中选择创建对象,对象类型选择Risk Factor,后面两个子对象类型选择Yield Term Structures 和 qpZeroCurve

image

导入市场数据,并进行相关设置,可以得到零利率期限结构ZeroCurve_01#。


可以看到在这里,我们是将Depo的数据复制过来,将日期和对应的零利率分别导入CurveDates和CurveYield,创建了ZeroCurve_01#这个对象。接着,我们回到RateHelpers表中进行操作。

在YieldCurve对应的单元格中把ZeroCurve_01#这个对象输入进去,再输入Tenor(就是期限)等参数,可以得到Euribor_01#这个对象,表示互换中的浮动利率(也就是指标)的相关信息。

image

在下一步,我们将导入市场数据(即若干个Depo, Future和Swap的信息,并且会创建很多个对象,有12个Depo(存款利率)对象,13个Fut(欧洲美元期货价格)和28个Swap(互换利率)对象。 创造这些对象有如下几个函数:

在QuantPlus Analytics中,所有带“Helper”的函数都是用来返回一个可供参考(如构造收益率曲线)所需要相关的相关对象。

qpDepositRateHelper是创造Depo对象的函数,参数有

(1) ObjectID,即对象名

(2) Rate,即存款利率的报价

(3) Tenor,即存款的时间长度,如3个月

(4) Fixing Days,即定盘生效的天数,如2

(5) Calendar,即交易日历(如TARGET)

(6) Convention,即工作日惯例 (如Modified Following).

(7) EndOfMonth,即月末规则

(8) DayCounter,即日期计数惯例

其他参数如Permanent,Trigger和Overwrite建议都设置为TRUE.

qpFuturesRateHelper和qpDepositRateHelper的参数大部分是相同的,除了以下几点:

(1) Tenor 换成了LengthInMonths,即期货合约的期限

(2) Fixing Days换成了IMM Date,即欧洲美元期货的月份代码

(3) 增加了ConvexityAdjQuote,即上文提到的曲率调整

qpSwapRateHelper和qpDepositRateHelper的参数大部分是相同的,除了IborIndex,即浮动端的利率(如LIBOR)。

现在RateHelpers表已经完成,转到Bootstraping表。

在此表中,首先将之前的所有Depo, Fut, Swap对象复制到AllRateHelpers下,然后就可以从这些产品构造收益率曲线了,具体选用哪种产品呢?需要用到哪些函数呢?请继续往下看。

image

几个重要的参数说明如下:

(1) Priority,即优先度,该优先选择哪种金融产品进行利率曲线构造,数值越高,说明约优先考虑该金融产品。

(2) NlmmFutures表示Selected中有几个欧洲美元期货,例如我们令其为3,可以看到Selected中出现了3个Fut对象 (Fut7,8,9)。

(3) DepoFuturesPriority,有3个选项。

1、 All Depo:会选择所有Dpeo

2、 DeposBeforeFirstFuturesStartDate:会选择第一个Futures起期日之前的所有Depeo

3、 DeposBeforeFirstFuturesStartDatePlusOne:会选择第一个Futures起期日+1天之前的所有Depeo

4、 DeposBeforeFirstFuturesExpiryDate:会选择第一个Futures到期日之前的所有Depeo

反复得调整以上的参数,使用qpRateHelperSelection函数可以选出较好的构造收益率曲线的相关产品。

使用qpPiecewiseYieldCurve函数可以根据以上金融产品构造出收益率曲线,各参数说明如下:

首先,需要用到qpRateHelperSelection函数选出的金融产品,还有以下参数:


ObjectID:对象名称
NDays:通常为0或者2
Calendar:日期,如Target
DayCounter:日期计数
TraitsID:选择零利率曲线/远期利率曲线等
InterpolatorID:插值方法
Permanent:TRUE
Trigger:TRUE
使用以上参数,可以得到零利率的相关数据


接着使用Excel的绘图功能可以得到零利率曲线图

image

可以看到这个曲线较光滑,跳点也较少。 如果曲线不光滑,且有跳点,可以修改以上的相关参数,如NlmmFutures的数值,直到曲线符合要求为止。

例如,我们将NlmmFutures的数值改为6,可以得到如下的收益率曲线:

image

将NlmmFutures的数值改为1,可以得到如下的收益率曲线:

zy3

结论是:在这三张图中,第一张图最好,所以NlmmFutures的数值暂定为3。

正如我们所讲,zero yield rate curve在大部分地方是递增的,但在短端却可能存在递减,为什么呢?以LIBOR为例,银行有时对短期的借款需求更大,所以短期的yield rate反而可能比长期的yield rate大。

Attachments

发表评论

邮箱地址不会被公开。 必填项已用*标注

填写此字段
填写此字段
请输入正确的邮箱地址。
您需要同意我们的使用条款

菜单