比方说,我有一个包含多个规则的策略,该策略可以在同一时间戳下针对同一符号生成多个订单。例如,在2012年5月23日,一条规则可能购买10股IBM股票,而另一条规则可能出售5股IBM股票。在生产中,一个合理的系统将使用净额结算并执行一个买入5股的订单,而不是执行一个买入10股的订单和另一个卖出5股的订单。
是否有办法在quantstrat
中获得这种行为?根据我的实验,quantstrat
不会进行净额结算,例如,它将为两个相反的订单添加交易费用,就像执行了两个单独的订单一样。
如果quantstrat
无法下订单,那么仍然可以通过使用自定义TxnFees
函数在回测中获得所需的PnL。如果这是正确的方法,那么如何定义自定义函数以扣除交易费用呢?
答案 0 :(得分:1)
一个“合理的系统”可能不会做这种事情。对于激进订单,我同时执行报价数据的经验基本上为零。
关于条形数据,是的,内部净额结算是有意义的,并且将由生产订单管理系统处理。或者,例如,针对其他要求另一侧的激进订单或净头寸的信号,内部化内部的内部限价订单。规模不小的投资者是否会使用条形数据?
这似乎错过了quantstrat的用途。您正在寻找一种能够在研究中做出良好预测的策略,并通过编写回溯测试来评估这些预测的质量。
回测不是现实。
此外,净额结算会完全混淆任何确定信号过程是否具有预测能力的能力。
batterter中的帐户将自动对损益进行净额结算,因此在没有费用的情况下,其结果与您的订单净额结算相同。因此,我认为您不需要单独的TxnFees
函数来了解净额收费的可能影响。