Quantstrat:在同一个栏上执行

时间:2016-05-27 16:47:35

标签: r quantstrat

我知道在here之前已经问过这个问题,但我想进一步扩展这个问题。

让我们说我的入场价是50,所以在当天开始时我会将限价单50的出价设为1手。在交易日期间,市场崩溃,我得到了我的报价。在现实世界的实时交易场景中,我的执行将以50的价格出现在同一日线上。即使我使用1分钟柱并且实际上在14:00实时填充,数据和价格在14:01与交易和填补完全无关。

此外,如果我已经处于交易中(比如简短的50美元),我会在80年代设置一个止损订单并且市场在80年代交易 - 我会在那里和那里停下来关于80年代的价格给予或采取一些滑点。下一个栏,无论是每日,每小时还是1分钟,可能会在150开盘。在下一个柱的开盘处执行该交易的回测现在可能与以下栏中发生的事情不同步。实时直播场景。

据我所知,任何根据酒吧关闭计算其交易信号的策略都可能会受到巨大的偏见,而不会执行下一个柱执行。但是对于具有预定义进入/退出信号的策略(我认为这将是大多数),在同一个柱上执行的能力至关重要!

在上面链接的帖子中,Josh Ulrich提到将allowMagicalThinking=TRUE添加到a​​pplyStrategy和applyRules的调用中。但是,我似乎无法找到任何文档,我的实现没有任何影响。我错过了什么?

致电applyRules:

 test <- applyRules(strategy=strategy.st,portfolio=portfolio.st, symbol = symbols, mktdata=mktdata , allowMagicalThinking=TRUE)

或者,请致电策略:

out <- applyStrategy(strategy=strategy.st,portfolios=portfolio.st, allowMagicalThinking=TRUE)

1 个答案:

答案 0 :(得分:4)

allowMagicalThinking = TRUE导致执行与订单输入在同一观察中发生。没有办法强制命令在与导致它们的信号相同的观察中输入。

如果您的信号确实是预先定义的,您可以将它们包含在mktdata对象中并充分移动它们,以便在您认为应该执行时执行。

我提醒任何执行此操作的人要对结果进行双重检查和三重检查,因为您只是侧重于所有quantstrat的内置安全措施,以避免在后测中产生前瞻性偏差。