【问题标题】:saving and loading blotter portfolio保存和加载吸墨纸组合
【发布时间】:2017-11-28 14:29:29
【问题描述】:

我正在使用记事本来保存和记录一些交易,但我需要每天保存和加载它们。

我无法保存我的交易,我相信这是因为它们位于由吸墨纸 (.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,所以如果我在我的问题中遗漏任何信息,请告诉我,非常感谢您的帮助。

一切顺利,

奥古斯托

【问题讨论】:

    标签: r quantstrat blotter


    【解决方案1】:

    您想要的对象实际上是“portfolio.testport”,而不是“testport”(这是在吸墨纸中设计的)。您可以通过查看 .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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-09
      • 2020-12-16
      • 1970-01-01
      相关资源
      最近更新 更多