R-保存和加载墨水投资组合



我正在使用blotter持有并进行某些交易的核算,但是我需要每天保存和加载它们。

我没有能够保存我的交易,我相信这是因为它们处于墨水(.blotter)创建的另一个环境中 - 从我可以通过搜索我的问题来拿起的东西。<<<<<<<<<<<<<<

我设置了交易的示例:

require(quantstrat)
currency("USD")
stock(primary_id = "SB1", currency = "USD", multiplier=1120, tick_size = 0.01)
initPortf(name="testport", symbols="SB1", initDate = "2017-11-01")
initAcct(name="testacct", portfolio="testport", initDate = "2017-11-01", initEq = 100000)
ls_instruments()
addTxn(Portfolio="testport", Symbol="SB1", TxnDate="2017-11-22", TxnPrice=15.00, TxnQty = 2 , verbose=TRUE)
getPos(Portfolio="testport", Symbol="SB1", "2017-11-22", Columns=c("Pos.Qty"))

然后,我尝试保存它(这是不起作用的),并且正在考虑如下代码中的加载:

save("testport", file="C:/Users/augus/Dropbox/Trading/R/Trading/Dados/test.RData", envir=.blotter)
load(file="C:/Users/augus/Dropbox/Trading/R/Trading/Dados/test.RData", verbose=TRUE)

我非常知道R和Stackoverflow,所以请让我知道我是否缺少问题中的任何信息,并非常感谢您的帮助。

最好,

奥古斯托

您想要的对象实际上是" portfolio.testport",而不是" testport"(这是在blotter中设计的)。您可以查看.blotter环境中的内容:

ls(.blotter)
#[1] "account.testacct"   "portfolio.testport"

您可以做到这一点:

save("portfolio.testport", file="test.RData", envir=.blotter)
save("testport", file="C:/Users/augus/Dropbox/Trading/R/Trading/Dados/test.RData", envir=.blotter)
load(file="test.RData", verbose=TRUE)

不过,您可能不想将所有内容存储在此产品组合中,因此它有助于了解构成投资组合的原因。

p <- getPortfolio("testport")
class(p)
#[1] "blotter_portfolio" "portfolio"   

基本上是一个列表,包含摘要(XTS)和符号对象(另一个列表):

ls(p)
#[1] "summary" "symbols"

符号列表的内容是:

ls(p$symbols)
#[1] "SB1"

,每个符号对象也是一个列表,包含3个XTS对象:

ls(p$symbols$SB1)
#[1] "posPL"     "posPL.USD" "txn"  

txn是对象之一(XTS对象本身):

head(p$symbols$SB1$txn)
# Txn.Qty Txn.Price Txn.Value Txn.Avg.Cost Pos.Qty Pos.Avg.Cost Gross.Txn.Realized.PL Txn.Fees Net.Txn.Realized.PL Con.Mult
# 2017-11-01       0         0         0            0       0            0                     0        0                   0        0
# 2017-11-22       2        15     33600           15       2           15                     0        0                   0     1120

您可能只想保存上述投资组合对象的子部分。

这是您可能发现的另一种方法:

p <- getPortfolio("testport")
saveRDS(p, "test2.rds")
p <- readRDS("test2.rds")

相关内容

  • 没有找到相关文章

最新更新