首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在portfolio中结束股权(和其他交易统计数据)更新问题- blotter

在portfolio中结束股权(和其他交易统计数据)更新问题- blotter
EN

Stack Overflow用户
提问于 2017-10-28 16:39:05
回答 1查看 69关注 0票数 1

我在一个投资组合中有多个符号,但当运行吸墨式交易策略时,最终权益只更新已运行的最后一个符号。当查看股权如何更新每笔交易时,似乎当引入新符号时,股权又回到了最初设置的原始值(1mil)。

这是如何逐月更新符号的投资组合:

代码语言:javascript
复制
updatePortf(portfolioName,Symbols=symbolName, Dates=currentDate)
updateAcct(accountName,Dates=currentDate)
updateEndEq(accountName, currentDate)

为什么会发生这种情况?

希望我的问题有意义,并提前感谢你

EN

回答 1

Stack Overflow用户

发布于 2018-01-31 07:47:39

这是一个好问题。如果查看applyStrategy,就会发现循环中的每个符号都是独立运行的。您可能想要查看applyStrategy.rebalancing,它执行表单的嵌套循环:

代码语言:javascript
复制
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只做了一个for符号,然后是一个内部的by时间戳循环,所以你永远不会得到交互)。

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

是的,这意味着你不能在quantstrat中直接准确地计算投资组合PL。所以像开仓这样的事情,就是当前投资组合权益的头寸,不能直接做。(但如果需要,您可以修改代码来执行此操作)。

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

从逻辑上讲,如果信号在每个符号级别上是好的,那么它很可能在投资组合级别上也可以(如果不是更好,使用更平滑的投资组合PL)。quantstrat目前的方法将为您提供一个合理的近似投资组合PL将是什么样子,但不是在真正的“复合回报”意义上。要做到这一点,你需要根据当前的投资组合PL来调整你的头寸(如上所述,这在applyStrategy中是不可能的)。这种只按符号运行策略的简化也使模拟变得非常、非常快。请注意,您可以在applyStrategy中通过向与其他符号相关的符号数据添加额外的列来引入与其他符号的静态交互(例如,在配对交易中,等等)。

归根结底,反向测试结果总是现实中交易的简化,所以没有很大的动机来获得“超级”准确的反向测试结果,非常准确地预测利润/交易收入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46987820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档