投资组合中的最终权益(和其他交易数据)更新问题 - 吸墨纸
我在投资组合中有多个符号,但是在运行吸墨纸交易策略时,最终权益只会更新已运行的最后一个符号。当研究股票如何更新每笔交易时,似乎在引入新符号时,股权会回到原始价值(1mil)。投资组合中的最终权益(和其他交易数据)更新问题 - 吸墨纸
这是怎样的投资组合为符号逐月得到更新:
updatePortf(portfolioName,Symbols=symbolName, Dates=currentDate)
updateAcct(accountName,Dates=currentDate)
updateEndEq(accountName, currentDate)
这究竟是为什么?
希望我的问题是有道理的,谢谢你提前
这是一个很好的问题。如果您查看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)也可以。 quantstrat目前的方法会给你一个合理的近似PL组合的样子,但不是真正的“复利回报”意义。为此,您需要根据当前投资组合PL来调整您的头寸(如上所述,applyStrategy
不可能)。这种为每个符号运行策略的简化也使模拟更加快速。请注意,您可以在applyStrategy
中引入与其他符号的交互,方法是在符号数据中添加与其他符号相关的附加列(例如,成对交易等)。
在一天结束时,回溯测试结果总是简化了现实交易,因此获得非常准确的“超级”准确回溯测试结果并不能很好地预测利润/交易收入。