[R] Merge xts and Return.portfolio

Joshua Ulrich josh.m.ulrich at gmail.com
Fri Nov 15 15:30:02 CET 2013


On Fri, Nov 15, 2013 at 6:32 AM, Simone Medori <simone.medori at me.com> wrote:
> Hi,
> I'm triyng to merge two xts time series objects, one of them is from Return.portfolio (PerformanceAnalytics).
>
> Despite the merging xts objects have the same indexes, the merged object shows extra lines at the day before of every entry.
>
> I noticed that indexes of merging objects have different classes ("POSIXct" and "Date"): might be this the reason? Why do I get different extra dates anyway?
>
Yes, this is the reason.  Specifically, the cause is the difference in
timezone between the POSIXct index and the Date index.

For some reason, Return.portfolio returns a xts object with a POSIXct
index.  Convert it to Date and your merge will work.
rp <- Return.portfolio(returns)
index(rp) <- as.Date(index(rp))
merge(returns,rp)

> Kind regards,
>
> Simone
>
>
>> require(PerformanceAnalytics)
>> require(quantmod)
>>
>> benchmark<-c("^STOXX50E","^NDX")
>> downloaded<-getSymbols(benchmark,from=as.Date(Sys.Date()-15))
>> prices <- merge.xts(na.locf(do.call(merge,lapply(downloaded, function(x) Cl(get(x))))))
>> returns <- Return.calculate(prices)[-1,] #get rid of first NA
>>
>> returns
>> #STOXX50E.Close     NDX.Close
>> #2013-11-01   -0.005153278  0.0006009953
>> #2013-11-04    0.000000000  0.0014764362
>> #2013-11-05   -0.005314304  0.0012024522
>> #2013-11-06    0.006745896 -0.0010151026
>> #2013-11-07   -0.004390787 -0.0188959585
>> #2013-11-08    0.000000000  0.0136779259
>> #2013-11-11    0.003236959 -0.0011464756
>> #2013-11-12   -0.005945303  0.0006690495
>> #2013-11-13   -0.004451870  0.0119843220
>> #2013-11-14    0.010764042  0.0028130469
>>
>> Return.portfolio(returns)
>> #             portfolio.returns
>> #2013-11-01     -0.0022761415
>> #2013-11-04      0.0007403469
>> #2013-11-05     -0.0020441262
>> #2013-11-06      0.0028386740
>> #2013-11-07     -0.0116652539
>> #2013-11-08      0.0068094113
>> #2013-11-11      0.0010398246
>> #2013-11-12     -0.0026371940
>> #2013-11-13      0.0037957949
>> #2013-11-14      0.0067416934
>> #Warning message:
>> #  In Return.portfolio(returns) :
>> #  weighting vector is null, calulating an equal weighted portfolio
>>
>> merge(returns,Return.portfolio(returns))
>>
>> #STOXX50E.Close     NDX.Close portfolio.returns
>> #2013-10-31             NA            NA     -0.0022761415 # Return.portfolio merges into extra lines!
>> #2013-11-01   -0.005153278  0.0006009953                NA
>> #2013-11-03             NA            NA      0.0007403469
>> #2013-11-04    0.000000000  0.0014764362                NA
>> #2013-11-04             NA            NA     -0.0020441262
>> #2013-11-05   -0.005314304  0.0012024522                NA
>> #2013-11-05             NA            NA      0.0028386740
>> #2013-11-06    0.006745896 -0.0010151026                NA
>> #2013-11-06             NA            NA     -0.0116652539
>> #2013-11-07   -0.004390787 -0.0188959585                NA
>> #2013-11-07             NA            NA      0.0068094113
>> #2013-11-08    0.000000000  0.0136779259                NA
>> #2013-11-10             NA            NA      0.0010398246
>> #2013-11-11    0.003236959 -0.0011464756                NA
>> #2013-11-11             NA            NA     -0.0026371940
>> #2013-11-12   -0.005945303  0.0006690495                NA
>> #2013-11-12             NA            NA      0.0037957949
>> #2013-11-13   -0.004451870  0.0119843220                NA
>> #2013-11-13             NA            NA      0.0067416934
>> #2013-11-14    0.010764042  0.0028130469                NA

Best,
--
Joshua Ulrich  |  about.me/joshuaulrich
FOSS Trading  |  www.fosstrading.com



More information about the R-help mailing list