小编n.e*_*e.w的帖子

除了函数帮助文件和演示之外,是否有R包的一般手册,"quantstrat","blotter","FinancialInstrument"等?

我想学习如何使用这些软件包,但我似乎找不到任何提供除了大量代码片段之外的其他内容的小插图.我想了解它们如何融合在一起,以及类似于"走过去"的东西.

我在网上找到了一些像这个系列的例子:http://timelyportfolio.blogspot.com/2011/06/quantstrat-to-build-on.html但是我正在深入了解一些事情(比如"PerformanceAnalytics"包中的晕影/示例

任何来源?

r quantitative-finance quantstrat financialinstrument

12
推荐指数
1
解决办法
8979
查看次数

将200万行日期字符串加速转换为POSIX.ct

我有一个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而不是其他一些方法,比如设置数据库.话虽如此,我愿意通过任何方法来实现这一目标,以实现最快的转换.

我非常感谢任何帮助.提前致谢.

posix r time-series posixct xts

12
推荐指数
1
解决办法
2075
查看次数

哪个是在R中重复应用脚本到n .csv文件的最佳方法?

我的情况:

  1. 我有许多csv文件都具有相同的后缀.csv,但文件名的前两个字符是不同的(即AA01.csv,AB01.csv,AC01.csv等)
  2. 我有一个R脚本,我想在每个文件上运行.该文件基本上从.csv中提取数据并将它们分配给向量/将它们转换为时间序列对象.(例如,AA01 xts timeseries对象,AB01 xts对象)

我想要实现的目标:

  1. 将脚本嵌入更大的循环(或适当),以顺序运行每个文件并应用脚本
  2. 删除创建的中间对象(请参阅下面的代码段)
  3. 给我留下从每个原始数据文件创建的最终xts对象(即AA01到AC01等作为值/向量等)

在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)

任何有关如何做到这一点的帮助将非常感激.

loops r xts

11
推荐指数
2
解决办法
6166
查看次数

如何通过R中的循环/函数合并大量的xts对象?

我有一个循环,通过调用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,但似乎无法做到正确.

任何帮助非常感谢

r time-series xts

10
推荐指数
1
解决办法
4401
查看次数

R:是否有可能将2000万行CSV中的读取并行/加速到R?

一旦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)

任何想法/想法都非常感激.

csv parallel-processing r bigdata

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

R中的quantstrat:设置基于日期的退出信号

许多量子计和附带的例子似乎是通过交叉某种技术指标来围绕进入和退出交易.

但是,假设你有一个任意指标,你用它来触发交易进入,但是你想在第二天开盘或收盘时解除交易.你最好如何实现这个例子?

我们来看下面的例子:

  • 两种仪器:XYZ和ABC
  • 进入信号:可以是任何东西 - 我们只想在我们的"信号"评估为真时进入交易.对于这个例子,假设任何时候XYZ/ABC的比率在T + 0从开放到关闭的任一方向变化超过1%
  • 退出信号:市场活动,如开盘或平仓.让我们说,在这个例子中,我们想要在第二天开放时解除我们在上面设置的交易.

例如,使用blotter这样的东西写相对容易:

假设ratio用列调用xts对象:

  1. ABC OHLC,
  2. XYZ OHLC,
  3. ABC/XYZ的比率表示为OHLC
  4. 货币OHLC"CCY"(这是一个交叉货币对)
  5. 我们的指标(OpCl(ABC/XYZ)),
  6. "发出信号?" 如果指标> 1%,则评估为1,否则评估为0
  7. "信号dn?" 如果指标<-1%,将评估为1,否则为0

我们的代码将是:

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)

r quantitative-finance xts quantmod quantstrat

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

在R中使用XTS/ZOO等从股票价格时间序列中获取日内交易量数据的最佳方法是什么?

例如,假设您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)

我想要:

  • 获得整个系列的每分钟平均音量(即9:30,9:31,9:32 ...... 16:28,16:29,16:30的所有10年的平均音量)

我该怎么做才能最好:

  • 将数据聚合到一分钟桶中
  • 获得这些桶的平均值
  • 将这些"平均"桶重新组合成单​​个xts/zoo时间序列?

我有一个很好的戳周围aggregate,sapply,period.apply功能等,但只是似乎无法"bin"的数据正确.

用循环解决这个问题很容易,但速度很慢.我宁愿避免使用程序化解决方案并使用利用C++架构的功能(即xts基于解决方案)

有人可以提供一些建议/解决方案吗?

非常感谢提前.

r time-series quantitative-finance zoo xts

6
推荐指数
1
解决办法
1841
查看次数

在R的特定时间自动通过电子邮件发送pdf图形输出

我有一些脚本,我想每天早上6点运行.这些脚本在文件中生成一些图形输出的pdf:foo.pdf

一旦系统运行完脚本Win 7,我希望我的系统(比方说,> = R 2.13)给我发送这些pdf的电子邮件.

哪个是最好的软件包 - 以及最有效的设置方式 - 通过R的附件直接通过电子邮件将这些报告发送给我?

是否有任何"酷"扩展(如将sink()报告文本输出到电子邮件正文中)?

提前感谢任何建议.

pdf email r

5
推荐指数
1
解决办法
714
查看次数

如何将滚动分位数应用于R中的xts时间序列?

我有以下几个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 …

r time-series quantitative-finance xts quantmod

4
推荐指数
1
解决办法
2959
查看次数