我想学习如何使用这些软件包,但我似乎找不到任何提供除了大量代码片段之外的其他内容的小插图.我想了解它们如何融合在一起,以及类似于"走过去"的东西.
我在网上找到了一些像这个系列的例子:http://timelyportfolio.blogspot.com/2011/06/quantstrat-to-build-on.html但是我正在深入了解一些事情(比如"PerformanceAnalytics"包中的晕影/示例
任何来源?
我有一个csv,其中包含大约200万行日期字符串格式:
2012/11/13 21:10:00
Run Code Online (Sandbox Code Playgroud)
让我们称呼它 csv$Date.and.Time
我想尽快将这些日期(及其附带的数据)转换为xts
我编写了一个脚本,可以很好地执行转换(见下文),但它非常慢,我想尽可能加快速度.
这是我目前的方法.有没有人对如何加快速度提出任何建议?
dt <- as.POSIXct(csv$Date.and.Time,tz="UTC")
idx <- format(dt,tz=z,usetz=TRUE)
Run Code Online (Sandbox Code Playgroud)
因此脚本将这些日期字符串转换为POSIX.ct
.然后使用format
(z
是表示我要转换的TZ的变量)进行时区转换.然后我做一个常规xts
调用,使其成为xts系列,其中包含csv中的其余数据.
这100%工作.它非常非常慢.我试过并行运行它(它没有做任何事情;如果有什么事情让它变得更糟)."慢"是什么意思?
user system elapsed
155.246 16.430 171.650
Run Code Online (Sandbox Code Playgroud)
这是一款3GhZ,16GB RAM 2012 mb pro.我可以在Win7机器上使用32GB RAM的类似处理器上获得大约一半
我确信有人有更好的想法 - 我愿意接受建议Rcpp
等等.但是,理想情况下,解决方案适用于csv而不是其他一些方法,比如设置数据库.话虽如此,我愿意通过任何方法来实现这一目标,以实现最快的转换.
我非常感谢任何帮助.提前致谢.
我的情况:
我想要实现的目标:
在R中嵌入此脚本的正确方法是什么?对不起,我是编程菜鸟!
我的脚本代码如下...每个CSV中每列的标题是DATE,TIME,VALUE
# Pull in Data from the FileSystem and attach it
AA01raw<-read.csv("AA01.csv")
attach(AA01raw)
#format the data for timeseries work
cdt<-as.character(Date)
ctm<-as.character(Time)
tfrm<-timeDate(paste(cdt,ctm),format ="%Y/%m/%d %H:%M:%S")
val<-as.matrix(Value)
aa01tsobj<-timeSeries(val,tfrm)
#convert the timeSeries object to an xts Object
aa01xtsobj<-as.xts(tsobj)
#remove all the intermediate objects to leave the final xts object
rm(cdt)
rm(ctm)
rm(aa01tsobj)
rm(tfrm)
gc()
Run Code Online (Sandbox Code Playgroud)
然后在每个.csv文件上重复,直到提取所有xts对象.
也就是说,我们最终将在R内,准备进一步应用是:
aa01xtsobj, ab01xtsobj, ac01xtsobj....etc
Run Code Online (Sandbox Code Playgroud)
任何有关如何做到这一点的帮助将非常感激.
我有一个循环,通过调用API来提取~200个单独的时间序列.
循环将时间序列作为xts对象(library(xts)
)输出到全局环境中,后缀为".oc".所以我有200个xts对象,形式为"ABC.oc","ABD.oc"等.每个对象包含1000行数据.
我想要做的是编写一个循环(或使用适当的函数),它接受所有"*.oc"对象并按列合并它们.IE最终会:
Date ABC.oc ABD.oc -> 200 columns like this
2011-01-01 10 10
2011-01-02 20 20
2011-01-03 30 30
2011-01-04 40 40
2011-01-05 50 50
Run Code Online (Sandbox Code Playgroud)
有一个简短的时间序列列表,只需写:
m <- merge(ABC.oc,ABD.oc,all=FALSE)
Run Code Online (Sandbox Code Playgroud)
但显然这对200个单独的对象来说是不切实际的,所以我想编写一个循环来将所有这些对象粉碎在一起,就像"merge"一样.
很容易访问循环的变量,for i in length(ls(pattern="*.oc")){
但只是无法找出循环的其余部分.我试过cbind,但似乎无法做到正确.
任何帮助非常感谢
一旦CSV文件是通过加载read.csv
,这是相当琐碎的使用multicore
,segue
等玩弄于CSV数据.然而,阅读它是时候下沉了.
意识到最好使用mySQL等.
假设使用运行R2.13的AWS 8xl集群计算实例
规格如下:
Cluster Compute Eight Extra Large specifications:
88 EC2 Compute Units (Eight-core 2 x Intel Xeon)
60.5 GB of memory
3370 GB of instance storage
64-bit platform
I/O Performance: Very High (10 Gigabit Ethernet)
Run Code Online (Sandbox Code Playgroud)
任何想法/想法都非常感激.
许多量子计和附带的例子似乎是通过交叉某种技术指标来围绕进入和退出交易.
但是,假设你有一个任意指标,你用它来触发交易进入,但是你想在第二天开盘或收盘时解除交易.你最好如何实现这个例子?
我们来看下面的例子:
例如,使用blotter
这样的东西写相对容易:
假设ratio
用列调用xts对象:
我们的代码将是:
for( i in 1:nrow(ratio) ) {
## Define the dates:
CurrentDate <- index(ratio[i,])
NextDate <- index(ratio[i+1,])
## Define the prices:
XYZClosePrice <- as.numeric(ratio$XYZ.Close[i,])
ABCClosePrice <- as.numeric(ratio$ABC.Close[i,])
XYZOpenPrice <- as.numeric(ratio$XYZ.Open[i+1,])
ABCOpenPrice <- as.numeric(ratio$ABC.Open[i+1,])
CCYClosePrice <- as.numeric(ratio$CCY.Close[i,])
CCYOpenPrice <- as.numeric(ratio$CCY.Open[i+1,])
## Define the spread:
SpreadOp <- ABCOpenPrice/XYZOpenPrice
SpreadCl <- ABCClosePrice/XYZClosePrice
## Define the …
Run Code Online (Sandbox Code Playgroud) 例如,假设您xts
从上午9:30到下午4:30 ,每天1分钟的仪器x数据的数据为10年,如下(格式):
Date.Time Volume
2001-01-01 09:30:00 1200
2001-01-01 09:31:00 1110
2001-01-01 09:32:00 1303
Run Code Online (Sandbox Code Playgroud)
一直到:
2010-12-20 16:28:00 3200
2010-12-20 16:29:00 4210
2010-12-20 16:30:00 8303
Run Code Online (Sandbox Code Playgroud)
我想要:
我该怎么做才能最好:
我有一个很好的戳周围aggregate
,sapply
,period.apply
功能等,但只是似乎无法"bin"的数据正确.
用循环解决这个问题很容易,但速度很慢.我宁愿避免使用程序化解决方案并使用利用C++架构的功能(即xts
基于解决方案)
有人可以提供一些建议/解决方案吗?
非常感谢提前.
我有一些脚本,我想每天早上6点运行.这些脚本在文件中生成一些图形输出的pdf:foo.pdf
一旦系统运行完脚本Win 7
,我希望我的系统(比方说,> = R 2.13
)给我发送这些pdf的电子邮件.
哪个是最好的软件包 - 以及最有效的设置方式 - 通过R的附件直接通过电子邮件将这些报告发送给我?
是否有任何"酷"扩展(如将sink()
报告文本输出到电子邮件正文中)?
提前感谢任何建议.
我有以下几个data
数据点的时间序列(请参阅dput()
下面的可重复系列的输出).
data
2012-03-13 0.0099809886
2012-03-14 -0.0011633318
2012-03-15 0.0021057557
2012-03-16 -0.0039516504
2012-03-19 -0.0006950880
2012-03-20 -0.0064935065
2012-03-21 -0.0016389604
2012-03-22 0.0089264740
2012-03-23 0.0061047194
2012-03-26 -0.0032664489
2012-03-27 0.0016199954
2012-03-28 0.0123198512
2012-03-29 -0.0018399264
2012-03-30 0.0013828071
2012-04-02 -0.0134335155
2012-04-03 -0.0038999771
2012-04-04 0.0057816836
2012-04-05 0.0041695622
2012-04-10 0.0039627040
2012-04-11 -0.0007045561
2012-04-12 0.0063261481
2012-04-13 0.0030106531
2012-04-16 0.0004650081
2012-04-17 -0.0057924004
2012-04-18 0.0055337791
2012-04-19 0.0009157509
2012-04-20 -0.0004576659
2012-04-23 -0.0038857143
2012-04-24 0.0029960820
2012-04-26 -0.0074779062
Run Code Online (Sandbox Code Playgroud)
我想尝试获得n期滚动分位数的时间序列.
例如,要获得整个系列的上四分位,只需:
> quantile(se,.75)
75%
0.004117848
Run Code Online (Sandbox Code Playgroud)
但我想要的是有效地添加,data$rolling_quantile
以便我可以有一个滚动的n期窗口,它构成了什么
我本以为apply.rolling
(in Performance Analytics …