最终股权(和其他交易统计数据)更新投资组合中的问题 - 吸墨纸

时间:2017-10-28 08:39:05

标签: r symbols trading blotter

我在投资组合中有多个符号,但在运行吸墨纸交易策略时,最终股权仅更新已运行的最后一个符号。当研究股权如何更新每笔交易时,似乎当引入新的符号时,股权会回到其开头(1mil)设定的原始价值。

这是投资组合逐月更新符号的方式:

updatePortf(portfolioName,Symbols=symbolName, Dates=currentDate)
updateAcct(accountName,Dates=currentDate)
updateEndEq(accountName, currentDate)

为什么会这样?

希望我的问题有道理,并提前感谢你

1 个答案:

答案 0 :(得分:0)

这是一个很好的问题。如果你看applyStrategy,你会看到循环中的每个符号都是独立运行的。您可能想要查看applyStrategy.rebalancing,它执行以下形式的嵌套循环:

for(i in 2:length(pindex)){

            #the proper endpoints for each symbol will vary, so we need to get
            #them separately, and subset each one
            for (symbol in symbols){
                #sret<-ret[[portfolio]]

这意味着它遍历一段时间戳,然后为每个符号循环,当你想要符号之间的某些交互时,这就是你想要的(applyStrategy只是为符号做一个,然后是一个内在的时间戳循环,因此,在权益方面,你永远不会进行互动。

当我第一次开始使用quantstrat时,我最初也有同样的挫败感。我的解决方案是修改applyStrategy.rebalancing成为(慢)双循环,对于每个时间戳,然后是每个符号的内循环。

是的,这意味着您无法在quantstrat中准确地直接计算投资组合PL。因此,开仓等当前投资组合头寸的位置无法直接完成。 (但如果需要,可以修改代码来执行此操作)。

为什么quantstrat默认采用这种方式?作者会给你很好的理由。简而言之,我的观点是(在与作者进行一些简短的讨论之后),如果一个信号具有预测能力,并且在策略中给你一个优势,那么无论你以后如何将它与其他符号结合起来,它都会起作用。 quantstrat是关于识别信号是否与传递给它的mktdata有关。

逻辑上,如果信号在每个符号级别上是好的,那么它在组合级别上也可能正常(如果不是更好,则组合PL更平滑)。量子流的当前方法将给出一个合理的近似值PL看起来的样子,但不是真正的复合回报&#34;感。要做到这一点,您需要根据当前的投资组合PL来扩展您的头寸(如上所述applyStrategy是不可能的)。每个符号运行策略的这种简化也使得模拟更快,更快。请注意,您可以通过在与其他符号相关的符号数据中添加其他列(例如,成对交易等),在applyStrategy中引入与其他符号的静态交互。

在一天结束时,回测结果总是简化现实交易,所以没有一个很大的动力来获得超级&#34;准确的回测结果非常准确地计划利润/交易收入。