3

我一直在阅读 Guy 的 quantstrat 讲座(下面的链接),在反复尝试重新执行代码后,我遇到了一些初始错误,这些错误阻止了讲座中的大部分后续代码运行。

这是代码(从讲座中复制并进行了非常小的重新安排):

rm(list=ls(all=TRUE)) #added this to delete memory

library(quantstrat)
library(blotter) #added this hoping it would rectify the errors
library(FinancialInstrument) #added this hoping it would rectify the errors

# initialize portfolio, accounts and orders
qs.strategy <- "qsFaber"
initPortf(qs.strategy, 'SPY', initDate = '1997-12-31')
initAcct(qs.strategy, portfolios = qs.strategy, initDate = '1997-12-31', initEq= 1e6)

以下是我得到的错误:

1)

> initPortf(qs.strategy, 'SPY', initDate = '1997-12-31')
Error in exists(paste("portfolio", name, sep = "."), envir = .blotter,  : 
object '.blotter' not found

2)

> initAcct(qs.strategy, portfolios = qs.strategy, initDate = '1997-12-31', initEq= 1e6)
Error in exists(paste("account", name, sep = "."), envir = .blotter, inherits = TRUE) : 
object '.blotter' not found

当我使用 Windows 64 位时,我不得不直接下载 blogger,但尽管复制了讲座中的代码,但我不确定为什么会出现这些错误。我的搜索工作表明,部分吸墨纸演变成了 FinancialInstrument 包,但即使在清除内存并加载 FinancialInstruments 之后,我仍然遇到同样的错误。

任何帮助将不胜感激。

讲座链接:http ://www.r-programming.org/files/quantstrat-I.pdf

4

2 回答 2

9

blogger 和 quantstrat 包将东西存储在 中.GlobalEnv(这是它们不在 CRAN 上的原因之一。)当您运行时rm(list=ls(all=TRUE)),您正在删除那些包希望能够在您的工作区中找到的东西。为了让一切正常工作,您必须在 globalenv() 中放回几个环境。运行这两行代码后,我认为你的代码会工作。

.blotter <- new.env()
.strategy <- new.env()

过去,FinancialInstrument 用于创建.instrument环境.GlobalEnv(后来期望它存在)。几年前,我对其进行了更改,.instrument现在存储在 FinancialInstrument 命名空间中。由于在 Guy 的幻灯片之后进行了更改,因此代码不兼容。幻灯片 14-15 应更改为

currency("USD")
getInstrument("USD")
stock("SPY", "USD")
getInstrument("SPY")

或者更紧密地遵循他的原始代码,

get("USD", envir=FinancialInstrument:::.instrument)
get("SPY", envir=FinancialInstrument:::.instrument)

通过将包级对象存储在包的命名空间中,用户可以自由地从中删除所有内容,而globalenv()不会破坏任何包的代码。

于 2013-06-15T19:31:47.913 回答
4

Guy Yollin 的表格是极好的学习材料,但不幸的是它们有些过时(2011 年)。在过去的 2 年中,对blotter、quantstrat 和其他软件包进行了许多更改,Guy 工作表中的大部分代码将不再这样运行。

就 quantstrat 软件包而言,您可能想看看芝加哥 2013 年 R/Finance 会议的表格;您可以在http://www.rinfinance.com/agenda/2013/workshop/Humme+Peterson.pdf获得一份副本。

更新: Guy Yollin 已将他的幻灯片更新为截至 2013 年 8 月的最新 quantstrat,可在此处获取 http://www.r-programming.org/papers

于 2013-06-15T15:52:51.063 回答