不匹配的缩减计算

时间:2014-06-19 13:01:09

标签: r time-series finance

我想请你澄清下一个对我来说极为重要的问题,因为我的硕士论文的主要部分依赖于正确实施以下例子中计算的数据。 我有一个金融时间序列列表,看起来像这样(澳元兑美元示例):

             Open   High    Low   Last
1992-05-18 0.7571 0.7600 0.7565 0.7598
1992-05-19 0.7594 0.7595 0.7570 0.7573
1992-05-20 0.7569 0.7570 0.7548 0.7562
1992-05-21 0.7558 0.7590 0.7540 0.7570
1992-05-22 0.7574 0.7585 0.7555 0.7576
1992-05-25 0.7575 0.7598 0.7568 0.7582

根据这些数据,我计算了Last Last列的日志返回值

                    Last
1992-05-19 -0.0032957646
1992-05-20 -0.0014535847
1992-05-21  0.0010573620
1992-05-22  0.0007922884

现在我想计算上面提到的时间序列中的下降,我通过使用(来自包PerformanceAnalytics)来实现

    ddStats <- drawdownsStats(timeSeries(AUDUSDLgRetLast[,1], rownames(AUDUSDLgRetLast)))

导致以下输出(这里只是前5行,但它返回每一个缩写,包括也是一天的缩写)

         From     Trough         To         Depth Length ToTrough Recovery
1  1996-12-03 2001-04-02 2007-07-13 -0.4298531511   2766     1127     1639
2  2008-07-16 2008-10-27 2011-04-08 -0.4003839141    713       74      639
3  2011-07-28 2014-01-24 2014-05-13 -0.2254426369    730      652       NA
4  1992-06-09 1993-10-04 1994-12-06 -0.1609854215    650      344      306
5  2007-07-26 2007-08-16 2007-09-28 -0.1037999707     47       16       31

现在,问题如下:最差缩幅的深度(根据上面的输出)是-0.4298,而如果我“手动”进行以下计算,我获得

    (AUDUSD[as.character(ddStats[1,1]),4]-AUDUSD[as.character(ddStats[1,2]),4])/(AUDUSD[as.character(ddStats[1,1]),4])
    [1] 0.399373

为了使事情更清楚,这是来自和通过日期的AUDUSD数据框中的两行:

    AUDUSD[as.character(ddStats[1,1]),]
               Open   High    Low   Last
    1996-12-03 0.8161 0.8167 0.7845 0.7975

    AUDUSD[as.character(ddStats[1,2]),]
               Open   High    Low  Last
    2001-04-02 0.4858 0.4887 0.4773 0.479

此外,其他提款部门不同意“手工”计算。我错过了什么?为什么这两个应该相同的数字有多大差异呢?

1 个答案:

答案 0 :(得分:0)

我尝试通过以下方式复制缩编:

cumsum(rets) -cummax(cumsum(rets))

其中rets是日志返回的向量。

出于某种原因,当我计算出低于20%的Drawdowns时,我得到的结果与table.Drawdowns()&amp; drawdownsStats()但是如果存在较大差异,则表示下降超过35%,那么最大亏损开始在计算之间出现分歧。更具体地说,table.Drawdowns()&amp; drawdownsStats()被夸大了(至少我注意到了)。我不知道为什么会出现这种情况,但也许可能有用的是,如果你使用下降的标准误差对大幅下降(超过35%)使用置信区间。我会使用:0.4298531511/sqrt(1127),即max drawdown/sqrt(depth to trough)。这将产生+/- 0.01280437或下跌0.4169956至0.4426044,其中较低的区间0.4169956更接近您“手动”计算0.399373。希望它有所帮助。