标签: xts

使用R从XTS对象拉出本月第一个工作日的退货

如果我在解释这个问题时得到任何错误的术语,那么我对R很新,所以道歉.

我在csv文件中有一组每日返回数据,我已设法将其转换为xts对象.数据格式如下:

           HighYield..EUR. MSCI.World..EUR.
2002-01-31          0.0144           0.0031    
2002-02-01          0.0056          -0.0132       
2002-02-02          0.0373           0.0356       
2002-02-03         -0.0167          -0.0644      
2002-02-04         -0.0062          -0.0332      
2002-02-05         -0.0874          -0.1112 
...
Run Code Online (Sandbox Code Playgroud)

我想创建一个脚本,它将找到该月的第一个工作日(从索引中的值范围),然后创建一个新的xts对象,其中包含这些返回值.

例如,在脚本运行后,我将使用以下格式的xts对象:

           HighYield..EUR. MSCI.World..EUR.
2002-01-31          0.0144           0.0031    
2002-02-28          0.0011          -0.0112       
2002-03-31          0.0222           0.0224       
2002-04-30         -0.0333          -0.0223      
2002-05-30         -0.0011          -0.0012      
2002-06-30         -0.0888          -0.0967 
...
Run Code Online (Sandbox Code Playgroud)

有谁可以帮助我吗?并且如果可能的话,解释脚本的每个部分正在做什么.

r xts

9
推荐指数
1
解决办法
1523
查看次数

快速计算滚动实现波动率的方法

我想计算一组指数的滚动20天实现波动率.这是我用来下载指数价格,计算每日回报和20天实现波动率的代码.

library(quantmod)
library(PerformanceAnalytics)

tickers = c("^RUT","^STOXX50E","^HSI", "^N225", "^KS11")
myEnv <- new.env()
getSymbols(tickers, src='yahoo', from = "2003-01-01", env = myEnv)
index <- do.call(merge, c(eapply(myEnv, Ad), all=FALSE))

#Calculate daily returns for all indices and convert to arithmetic returns
index.ret <- exp(CalculateReturns(index,method="compound")) - 1
index.ret[1,] <- 0

#Calculate realized volatility
realizedvol <- rollapply(index.ret, width = 20, FUN=sd.annualized)
Run Code Online (Sandbox Code Playgroud)

一切都很快,直到最后一行.我还没有计时,但是它的分数是几分钟,而我希望它只需几秒钟.有没有更快的方法来计算实现的波动率?

谢谢.

r xts

9
推荐指数
1
解决办法
1万
查看次数

使用索引将xts/zoo对象写入csv

> library(PerformanceAnalytics)
> data(managers)
> class(managers)
[1] "xts" "zoo"
> head(managers)
              HAM1 HAM2    HAM3    HAM4 HAM5 HAM6 EDHEC LS EQ SP500 TR US 10Y TR US 3m TR
1996-01-31  0.0074   NA  0.0349  0.0222   NA   NA          NA   0.0340   0.00380  0.00456
1996-02-29  0.0193   NA  0.0351  0.0195   NA   NA          NA   0.0093  -0.03532  0.00398
1996-03-31  0.0155   NA  0.0258 -0.0098   NA   NA          NA   0.0096  -0.01057  0.00371
1996-04-30 -0.0091   NA  0.0449  0.0236   NA   NA          NA   0.0147  -0.01739  0.00428
1996-05-31  0.0076   NA  0.0353  0.0028   NA   NA          NA …
Run Code Online (Sandbox Code Playgroud)

r zoo xts

9
推荐指数
2
解决办法
1万
查看次数

R中另一个变量的滚动和

我希望通过ID获得7天的滚动金额.假设我的数据如下所示:

data<-as.data.frame(matrix(NA,42,3))
data$V1<-seq(as.Date("2014-05-01"),as.Date("2014-09-01"),by=3)
data$V2<-rep(1:6,7)
data$V3<-rep(c(1,2),21)
colnames(data)<-c("Date","USD","ID")

         Date USD ID
1  2014-05-01   1  1
2  2014-05-04   2  2
3  2014-05-07   3  1
4  2014-05-10   4  2
5  2014-05-13   5  1
6  2014-05-16   6  2
7  2014-05-19   1  1
8  2014-05-22   2  2
9  2014-05-25   3  1
10 2014-05-28   4  2
Run Code Online (Sandbox Code Playgroud)

如何添加一个新列,其中包含按ID划分的7天滚动总和?

r xts data.table

9
推荐指数
3
解决办法
4386
查看次数

累积回顾滚动连接

我有两个数据表.我想做一个滚动连接但是"累积式".例如,这是两个表

d1 <-  data.table(starttime = c("2011-01-01 15:29:50", "2011-01-01 15:30:03", "2011-01-01 15:40:20", "2011-01-01 15:50:20" ,"2011-01-01 16:30:00", "2011-01-01 16:40:00"),
              endtime = c("2011-01-01 15:30:00", "2011-01-01 15:30:15", "2011-01-01 15:40:28", "2011-01-01 15:50:25", "2011-01-01 16:31:00", "2011-01-01 16:41:00"), v = c("A", "B", "B", "A", "B", "A"), m = c(2,3,5,8,9,9), dur = c(10,12,8,5,60,11))

starttime               endtime           v   m    dur
2011-01-01 15:29:50  2011-01-01 15:30:00  A   2    10
2011-01-01 15:30:03  2011-01-01 15:30:15  B   3    12
2011-01-01 15:40:20  2011-01-01 15:40:28  B   5     8
2011-01-01 15:50:20  2011-01-01 15:50:25  A   8     5
2011-01-01 16:30:00 …
Run Code Online (Sandbox Code Playgroud)

r xts data.table

9
推荐指数
1
解决办法
212
查看次数

na.locf但不做尾随的NA

我有以下时间序列

> y<- xts(1:10, Sys.Date()+1:10)
> y[c(1,2,5,9,10)] <- NA
> y
           [,1]
2011-09-04   NA
2011-09-05   NA
2011-09-06    3
2011-09-07    4
2011-09-08   NA
2011-09-09    6
2011-09-10    7
2011-09-11    8
2011-09-12   NA
2011-09-13   NA
Run Code Online (Sandbox Code Playgroud)

一个直的na.locf给我这个:

> na.locf(y)
           [,1]
2011-09-04   NA
2011-09-05   NA
2011-09-06    3
2011-09-07    4
2011-09-08    4
2011-09-09    6
2011-09-10    7
2011-09-11    8
2011-09-12    8
2011-09-13    8
Run Code Online (Sandbox Code Playgroud)

我怎么做到这一点?

           [,1]
2011-09-04   NA
2011-09-05   NA
2011-09-06    3
2011-09-07    4
2011-09-08    4
2011-09-09    6
2011-09-10    7
2011-09-11    8
2011-09-12    NA
2011-09-13    NA
Run Code Online (Sandbox Code Playgroud)

我不希望最后一次观察结果除了最后一个非缺失值之外,即不会替换尾随的NA.非常感谢你的帮助!

r time-series zoo xts

8
推荐指数
1
解决办法
1805
查看次数

是否有解决R 2.15.2中do.call(cbind.xts,...)性能降低的问题?

我期望cbind.xtsdo.call(cbind.xts)以相似的经过时间执行.R2.11,R2.14也是如此.

对于R2.15.2和xts 0.8-8,do.call(cbind.xts,...)变体执行速度非常慢,这有效地破坏了我以前的代码.

正如Josh Ulrich在下面的评论中指出的那样,xts软件包维护者已经意识到了这个问题.与此同时,有一个方便的工作吗?

可重复的例子:

library(xts)

secs <- function (rows, from = as.character(Sys.time()), cols = 1, by = 1) 
{
    deltas <- seq(from = 0, by = by, length.out = rows)
    nacol <- matrix(data = NA, ncol = cols, nrow = rows)
    xts(x = nacol, order.by = strptime(from, format = "%Y-%m-%d %X") + 
        deltas)
}

n <- 20
d1 <- secs(rows=n*100,cols=n)
d2 <- secs(rows=n*100,cols=n)

system.time(cbind.xts(d1,d2))
Run Code Online (Sandbox Code Playgroud)

system.time(do.call(cbind.xts, list(d1,d2)))
Run Code Online (Sandbox Code Playgroud)

r xts

8
推荐指数
1
解决办法
1229
查看次数

缺失值时使用rollmean(NA)

我有一个数据集,里面有几个NA.我采取滚动平均值,并期望在没有NA窗口,滚动平均值应该产生一个号码,而不要NA,但是,rollmeanrzoo似乎并没有做到这一点.例:

require(zoo)
z = zoo(cbind(a=0:10, b=c(NA,10:1), c=sample(1:11,11)), 1:11) 
rollmeanr(z, k=3, fill=NA)
    a  b        c
1  NA NA       NA
2  NA NA       NA
3   1 NA 3.333333
4   2 NA 4.666667
5   3 NA 4.000000
6   4 NA 6.333333
7   5 NA 7.000000
8   6 NA 9.333333
9   7 NA 8.333333
10  8 NA 8.666667
11  9 NA 5.666667

rollapply(z, width=3, FUN=mean, by=1, by.column=TRUE, fill=NA, align="right")
    a  b        c
1  NA …
Run Code Online (Sandbox Code Playgroud)

r zoo xts

8
推荐指数
2
解决办法
9503
查看次数

提取xts对象的数值

我想提取xts对象的数值.我们来看一个例子

data <- new.env()
starting.date <- as.Date("2006-01-01")
nlookback <- 20
getSymbols("UBS", env = data, src = "yahoo", from = starting.date)
Reg.curve <- rollapply(Cl(data$UBS), nlookback, mean, align="right")
Run Code Online (Sandbox Code Playgroud)

Reg.cuve仍然是一个XTS对象,但实际上我在行走机构只关心.如何修改Reg.curve以获得数字向量?

r xts

8
推荐指数
1
解决办法
9353
查看次数

无法再将数据帧转换为xts对象

几个月前我编写了一个将数据帧转换为xts对象的函数.它曾经工作,现在,它不再工作.我不知道如何解决它.我再次安装了xts包,但没有用.我搜索了stackoverflow并用Google搜索了它.我将不胜感激任何帮助.

谢谢!

这是我得到的错误:

Error in .Call("dimnames_zoo", x) : 
"dimnames_zoo" not resolved from current namespace (xts) 
Run Code Online (Sandbox Code Playgroud)

这是我的功能:

MakeXts<-function(data){

  library(xts)

  data$Date<-strptime(paste(data$Date,data$Time),"%m/%d/%Y %H:%M:%S")
  data<-data[,-2] 
  data.xts<-xts(data[,-1],order.by=as.POSIXct(data[,1]))

  return (data.xts)

}
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

myData.xts <- MakeXts(myData)
Run Code Online (Sandbox Code Playgroud)

和数据:

myData <- structure(list(Date = c("02/12/2015", "02/12/2015", "02/12/2015", 
"02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", 
"02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", 
"02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", 
"02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", 
"02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", 
"02/12/2015", "02/12/2015"), Time = c("16:00:00", "16:00:12", 
"16:00:46", "16:00:49", "16:01:18", "16:01:25", "16:02:00", "16:02:00", 
"16:02:00", "16:02:06", "16:03:02", "16:03:02", "16:03:02", "16:03:02", …
Run Code Online (Sandbox Code Playgroud)

r xts

8
推荐指数
0
解决办法
715
查看次数

标签 统计

r ×10

xts ×10

zoo ×3

data.table ×2

time-series ×1