果仁策略内部有两个交易模型, 模型I和模型II。这两种模型最终生成的调仓指令的格式都是一样的。 所以跟随策略的用户,不必理解模型I和模型II的差别, 只需要查看策略的调仓指令即可。

阅读下文, 进一步了解交易模型及其预备调仓指令的不同含义。 


模型I调仓
模型I是一个定期调仓并且重新平衡仓位的交易模型。模型I对持仓股票的最大数量做出了规定, 比如最多持有5只股票, 意思就是在每个调仓日策略都试图买入或持有5只股票, 每只股票的仓位是20%, 当可以买入的股票数小于5只时,比如只有3只,策略会按照33%的个股仓位买入3只股票。 (用户可以改变个股最大买入仓位100%的设置,设为比如20%, 在这种情况下,即便只能买入3只股票,策略依然会按照20%的个股仓位买入3只股票,空出40%的仓位为现金。)

调仓指令有5个信号, 卖出, 持有,买入,持有(备选),买入(备选)。 仓内的股票如果不符合选股条件, 就要被卖出, 如果依然符合选股条件,则继续持有。卖出股票空出来的资金就可以买入新的符合条件的股票。两个备选信号的目的是为了应对由于停牌或涨跌停而引起的股票不能买卖的情况。信号是买入的股票有可能停牌或一字涨停而无法买入, 这时策略将会试图买入排在前列的备选股票,标记为买入(备选)。 如果被持仓的股票也在备选名单里,这只股票的信号就是持有(备选), 意思是如果排在它前面的股票可以被买入,则卖出这只股票, 如果排在前面的股票不能被买入,则可以继续持有这只股票。

备选股票的数量默认是5只, 用户可以在0只(也就是不要备选)和20只之间做调整。


模型I调仓指令首先列出需要卖出的股票, 然后按排名顺序列出需要买入或持有的股票, 排在最大持有只数以外的股票会标记为备选。 举个例子, 一个模型I策略最多持有2只股票, 备选股票数为5只。当前持仓的股票为
股票A(60%)和股票B(40%)。调仓日的调仓指令是:
1. 股票A 卖出
2. 股票C 买入
3. 股票D 买入
4. 股票B 持有(备选)
5. 股票E 买入(备选)
6. 股票F 买入(备选)
7. 股票H 买入(备选)
8. 股票G 买入(备选)

以上调仓指令,如果没有停盘和涨跌停这些复杂的因素,调仓结果就是卖出A和B, 买入C和D, C和D的仓位各是50%。

以下例子列出一些停牌情况的调仓结果:
停牌情况      调仓后持有股票
C停牌            B(50%)和D(50%) --卖出A, 无法买入C,顺位买入D和继续持有B。B和D的仓位重平衡。
B和C停牌      B(40%)和D(60%) --卖出A, 无法买入C,顺位买入D和继续持有B。B的仓位不变。
C和D停牌      B(50%)和E(50%) --卖出A,无法买入C 和D, 顺位继续持有B和买入E。 B和E的仓位重平衡。
A停牌            A(60%)和C(40%) --无法卖出A,只有一个空位,卖出B, 买入C。 A的仓位不变。
B停牌            B(40%)和C (60%) --无法卖出B, 只有一个空位,卖出A买入C。 B的仓位不变。

以上策略,在调仓后,仓内两只股票的仓位将尽量调整为50%,即便是A和B一直持有下去它们的仓位也会每次重平衡为50%。 当A和B有停牌的情况时, 停牌股票的仓位不变。模型I仓位总的原则是:当仓内股票停牌时,这只股票的仓位保持不变, 余下的资金平均买入或持有股票。

一字涨跌停会使一只股票不能买或不能卖,处理方式和停牌一样。 比如,当A一字跌停时,无法卖出,按照A停牌处理。当C和D一字涨停时,无法买入, 按照C和D停牌处理。当B一字跌停时, 无法卖出, 按照B停牌处理, B一字涨停时,无法买入补平仓位。


模型II调仓
模型II定期卖出符合卖出条件的股票,再用空下的资金按顺序买入在清单里的股票。和模型I不同, 模型II不规定最多持仓股票数,而是规定个股理想仓位。 比如想持有两只股票的策略可以设定理想仓位为50%。当策略买入新股票时,将尽量按照50%的总仓位买入新股票,如果仓内资金不足50%, 则能买多少是多少。当仓内资金小于理想仓位的十分之一时,则不再买入新股票,以避免造成碎片化持股。比如理想仓位是50%时, 仓内资金小于5%, 则不再买入新股票。 

和模型I的一个重要区别是模型II有仓位偏离比例概念, 也就是说只要股票仓位在理想仓位的偏离范围之内,在调仓日就可以保持现有仓位,不作重新平衡。 如果股票仓位在偏离范围之外, 在调仓日就需要减仓或补仓。 比如理想仓位是50%,仓位偏离范围是30%, 则这只股票的最低合理仓位是 50% * (1 - 30%) = 35%,最高合理仓位 50% * (1 + 30%) = 65%。 当股票仓位高于65%时, 策略会减仓这只股票到理想仓位;当股票仓位低于35%时, 而且被策略选中时,会尽量加仓至理想仓位。

模型II的调仓信号有5个, 卖出,减仓至目标仓位, 持有, 买入,加仓至目标仓位。 (目标仓位也就是理想仓位。)当仓内股票符合一个卖出条件时, 就被卖出; 当仓内股票不符合卖出条件时, 有三种情况, 第一种情况是仓位里偏离范围之内, 维持原有仓位不变, 标记为持有;第二种情况是仓位高于最高合理仓位, 减仓至理想仓位,标记为减仓至目标仓位; 第三种情况是仓位低于最低合理仓位而且被策略选中,加仓至理想仓位, 标记为加仓至目标仓位。一只新股票被策略选中时,将按理想仓位买入, 标记为买入

模型II也有备选股票的概念, 备选只数固定5只。 比如调仓日需要买入1只股票,模型II会推荐 1+5 = 6只买入(或加仓)的股票。 意思是如果排在前面的股票能买入, 就买入, 如果不能买入,就试图买入排在后一名的股票,直到可以买入股票为止或者扫描完买入清单为止。 当策略有较严格的买入条件时, 比如在新股买入限制里设定排名名次小于等于3, 备选股票可能小于5只股票。

使用一个和模型I类似的例子,一个模型II策略的理想仓位是50%,仓位偏离范围是30%。 备选股票数为5只。当前持仓的股票为
股票A(60%)和股票B(40%)。调仓日的调仓指令是:
1 股票A 卖出
2 股票B 持有
3 股票C 买入
4 股票D 买入
5 股票E 买入
6 股票F 买入
7 股票H 买入
8 股票G 买入

模型II调仓指令首先列出需要卖出和减仓的股票, 然后列出继续持有的股票, 最后列出需要买入和加仓的股票。

上例中股票A满足卖出条件, 需要卖出。 股票B的仓位是40%, 在合理的仓位范围(35%到65%)之内,所以仓位不变,继续持有。 接下会有6股票按先后顺序在买入清单里。 如果所有的股票都可以买卖,调仓的结果是 B(40%),C(50%), D(10%)。也就是卖掉股票A后,将得到60%资金, 用50%买入C,用剩下的10%买入D。 (这里需要注意的是个股的仓位权重是按照调仓日前一天的收盘价算出, 在调仓日, 由于股票价格波动,股票的仓位会变化, 所以股票A被卖出后,得到的资金有可能比60%多,也有可能比60%少, 所以C和D 的仓位,尤其的是D的仓位,会根据调仓日的实际情况作出决定。 这里只是为了说明方便, 忽略价格波动引起的仓位变化。)

以下列出一些停牌情况和调仓结果的例子:
停牌情况      调仓后持有股票
C停牌          B(40%),D(50%), E(10%) --卖出A, 无法买入C,顺位买入D和E。
A 停牌         A(60%), B(40%) --无法卖出A, 无法调仓。
C和D停牌    B(40%),E(50%),F(10%) --卖出A,无法买入C 和D, 顺位买入E和F。

以上例子表明, 模型II会尽量按理想仓位买入新的股票, 当资金不足时, 也会买入部分仓位的股票,而不是让资金闲置。比如用50%的仓位买入C, 用10%的仓位买入D,这时D的仓位小于最小合理仓位35%,所以到下一个调仓日,如果有足够资金而且D排在股票清单前列,将被加仓。

模型II另一特点是不会频繁自动平衡仓位,只要个股仓位在合理范围之内,仓位就保持不变,这和模型I在每个调仓日重平衡仓位很不一样。

以上所介绍的都是果仁量化引擎如何去执行调仓指令,果仁的调仓历史和实盘收益是按照这一套规则计算出来的。 用户在实际执行调仓指令时,在仓位和买卖价格方面必然会有一些差别, 最后的结果可能比果仁的结果好也有可能比果仁的结果差。