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 ビットを使用しているため、Blotter を直接ダウンロードする必要がありましたが、講義からコードをコピーしたにもかかわらず、なぜこれらのエラーが発生するのかわかりません。検索の結果、blotter の一部が FinancialInstrument パッケージに進化したことが示されましたが、メモリをクリアして FinancialInstruments をロードした後でも、同じエラーが発生します。

どんな助けでも大歓迎です。

講義へのリンク: http://www.r-programming.org/files/quantstrat-I.pdf

4

2 に答える 2

9

ブロッターとクアントストラットのパッケージは、ファイルを に保存します.GlobalEnv(これが CRAN にない理由の 1 つです) rm(list=ls(all=TRUE))。すべてが機能するためには、いくつかの環境を globalenv() に戻す必要があります。この 2 行のコードを実行すると、コードが機能するようになります。

.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 に答える