[R-SIG-Finance] PerformanceAnalytics apply.rolling with NAs

Peter Carl peter at braverock.com
Fri Sep 2 14:39:15 CEST 2011


?try
-- 
Peter Carl
http://www.braverock.com/~peter

> Apologies, but I believe we're at cross purposes here.
>
> My use case requires that I determine rolling returns for a collection
> of stocks where in some cases data is missing (repressented by NAs),
> for example if a stock did not exist for a period of time. I don't
> mean to frustrate you but if I go into the use case further it might
> unnecessarily complicate things. My work around, in any case, is
> simply to test for these cases prior to calling apply.rolling.
>
> If you paste my original code _in full_ and then append:
>
> x
> index(x)
> class(x)
>
> you will see what I mean.
>
> I don't mean to be stubborn here, but I'd first like to get onto the same
> page.
>
> Thanks
>
> On 2 September 2011 13:42, Brian G. Peterson <brian at braverock.com> wrote:
>> On Fri, 2011-09-02 at 13:24 +0200, Dean Marks wrote:
>>> If you append to my minimal example:
>>>
>>> x
>>> class(x)
>>>
>>> You get something that looks like, and says it is a time series
>>> object. Am I mistaken here?
>>
>> Yes.
>>
>>> x<-NA
>>> class(x)
>> [1] "logical"
>>
>>    ^^^^^^^^  that is not a time series.
>>
>>> y<-xts()
>>> y
>> Data:
>> numeric(0)
>>
>> Index:
>> integer(0)
>>> class(y)
>> [1] "xts" "zoo"
>>
>> This is an (empty) time series.
>>
>> All of the rolling functions will still fail, of course, since there is
>> no data to apply *to*
>>
>>> apply.rolling(y, width=6,FUN=sum)
>> Error in xts(, order.by = time(R)) :
>>  order.by requires an appropriate time-based object
>>
>> So far, no bug anywhere I can see.
>>
>> If, however, we construct an actual time series:
>>
>> ####
>>
>> z <- xts(1:20,order.by=seq.Date(from=Sys.Date()-19,to=Sys.Date(),by=1))
>>
>> z
>>
>> #            [,1]
>> # 2011-08-14    1
>> # 2011-08-15    2
>> # 2011-08-16    3
>> # 2011-08-17    4
>> # 2011-08-18    5
>> # 2011-08-19    6
>> # 2011-08-20    7
>> # 2011-08-21    8
>> # 2011-08-22    9
>> # 2011-08-23   10
>> # 2011-08-24   11
>> # 2011-08-25   12
>> # 2011-08-26   13
>> # 2011-08-27   14
>> # 2011-08-28   15
>> # 2011-08-29   16
>> # 2011-08-30   17
>> # 2011-08-31   18
>> # 2011-09-01   19
>> # 2011-09-02   20
>>
>> # things will now work as documented and expected:
>>
>> apply.rolling(z, width=6,FUN=sum)
>>
>> #            calcs
>> # 2011-08-14    NA
>> # 2011-08-15    NA
>> # 2011-08-16    NA
>> # 2011-08-17    NA
>> # 2011-08-18    NA
>> # 2011-08-19    21
>> # 2011-08-20    27
>> # 2011-08-21    33
>> # 2011-08-22    39
>> # 2011-08-23    45
>> # 2011-08-24    51
>> # 2011-08-25    57
>> # 2011-08-26    63
>> # 2011-08-27    69
>> # 2011-08-28    75
>> # 2011-08-29    81
>> # 2011-08-30    87
>> # 2011-08-31    93
>> # 2011-09-01    99
>> # 2011-09-02   105
>>
>> ####
>>
>> I continue to assume that your actual use case is more complicated, so
>> perhaps you can supply an example that's a little more on-point to what
>> you're trying to do if you're still in need of assistance.
>>
>> Regards,
>>
>>  - Brian
>>
>>
>> --
>> Brian G. Peterson
>> http://braverock.com/brian/
>> Ph: 773-459-4973
>> IM: bgpbraverock
>>
>>
>
>
>
> --
> Dean Marks
> Investment Analyst
> Aeon Investment Management
> Tel: +27 (0)21 670 5295
> Fax: +27 (0)86 508 0685
> Mobile: +27 (0)72 417 4720
> Email: dean at aeonim.co.za
> www.aeonim.co.za
> 4th Floor, MontClare Place
> Cnr Campground & Main Roads
> Claremont, 7708
> PO Box 24020, Claremont, 7735
> An authorised financial services provider FSP No. 27126
>
> _______________________________________________
> R-SIG-Finance at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only. If you want to post, subscribe first.
> -- Also note that this is not the r-help list where general R questions
> should go.
>



More information about the R-SIG-Finance mailing list