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?
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
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 NABest, -- Joshua Ulrich | about.me/joshuaulrich FOSS Trading | www.fosstrading.com