问答交流

发现trade函数可能有个奇怪的问题

由nusfighter创建,最终由nusfighter 被浏览 20 用户

发现trade函数可能有个奇怪的问题


同一个代码,我先买后卖,持仓一天就没有任何问题。改为先卖后买的话,我发现问题出在买回清仓的金额不能大于初始金额的50%。买回平仓的金额在初始金额50%以内的时候,就正常,超过了就不行。

我用cash_for_sell = context.portfolio.cash/3 来控制第一天卖空的量,如果设置为与portfolio.cash相等或者1/2,第二天就没法买回平仓。设为1/3,前几天可以(初始投资金额50%以内),超过了就不行。设为1/10,第二天买回平仓金额一直在50%以内就没问题,运行正常。

#context.order(context.symbol(e), -p)

#context.order_target(context.symbol(e), 0)

context.order_target_percent(context.symbol(e), 0)


这三种order方法都试过了,没有问题。也没有控制单个股票持仓比例,单次下单金额之类的限制。这是我的代码链接。

https://bigquant.com/experimentshare/bff85ed417d547d4a18d71fe1cc3ff16

\

标签

函数
评论
  • 这个我们看了一下确实是会有这个问题,目测是在开空和平仓标的的时候资金没有释放的问题。目前这个模块不做维护了,所以目前trade模块上的这种操作建议不要以总资金的一定比例计算开仓手数,以开仓后有一定剩余资金比例的特定手数开仓是没有问题的。
  • 那在维护的回测模块是哪一个呢?
  • HFtrade模块
  • 是的,但是在HFTrade模块中没有设置可以空仓股票的设定。如果需要当日T0回测,可以设置 context.set*_stock_t1(0)*
{link}