VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 14
声望: 0

在读套利模块源码时,有几个有疑惑的地方

问题一:
在legData.update_trade()里,为什么不需要处理new_pos<0的情况?
如果trade没有完全把旧仓位给平掉,那么不是会产生new_pos < 0的情况吗?
还是说直接默认了算法里会直接把旧仓位给全平?

description

问题二:
1.leg.net_position是根据contract.net_pos来获得的,而contract.net_pos包含了账户其他策略的净持仓,这样是否会跟其他策略的持仓混淆?
2.leg.net_pos_price是根据position.price来获得的,同样的也包含了账户其他策略的持仓的持仓价,这样是否会跟其他策略的持仓混淆?

问题三:关于套利模块的设计
为什么不采用类似CTA的递进层级设计(st_engine - st_strategy - st_algo),而是使用平行式的层级设计?
stengine - dataengine

     - strategyEngine - st_strategy
     - algoEngine - st_algo

我在使用过程中感觉第一种更容易管理和理解,而第二种虽然稍微灵活一点但是更加复杂且容易出错,所以有点疑惑为什么要采用这种设计?

Administrator
avatar
加入于:
帖子: 4510
声望: 322
  1. 这个是净仓位模式下,账户盈亏计算的标准逻辑,如果new_pos还是小于0,则此时说明老仓位没有平完,因此持仓价格不变
  2. 价差交易涉及到账户底层仓位的配对控制,因此不像CTA策略维护自身的逻辑持仓,所以如果同时跑其他策略,是会混淆的
  3. 因为价差算法很多情况下是需要手动调用的,价差交易并不都是全自动的
© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】