量化,是指利用统计方法、数学模型来指导投资,其本质是定性投资的数量化实践,争取通过模型构建出可以持续跑赢市场的投资组合,从而获取超额利润收益。
对冲,是指同时进行两笔行情相关、方向相反、数量相当、盈亏相抵的交易,通过对冲策略降低组合系统性风险,获得对冲后的绝对收益。
量化合约对冲交易系统就是由两者之间构成的组合,一般拥有以下特点:
1、投资范围广泛,投资策略灵活;
2、无论市场上涨还是下跌,均以获取绝对收益为目标;
3、更好的风险调整收益,长期中对冲基金在获取稳定收益的同时提供了更好的防御性;
4、与主要市场指数相关性低,具备资产配置价值。
量化合约对冲策略系统的开发构建:
1、α策略:用量化选股模型确定股票组合,同时买入股票组合,做空股指期货以对冲股票组合的市场风险(β),获取股票组合超越市场指数的超额预期年化预期收益,即α预期年化预期收益。
2、套利策略:是指利用同一资产标的在不同市场或不同时间的双重定价,低买高卖获取差价的投资策略。可以用来套利的标的资产包括金融指数、商品、基金、期权和外汇等。套利策略常见的子策略有期现套利、跨期套利、分级基金套利和ETF基金套利等。
3、量化CTA基金:说白了就是投向期货市场的期货基金,只不过用量化投资方法研究期货品种的价格变化趋势,以程序化实现交易。以沪深300股指期货为例,沪深300股指期货上涨时做多,下跌时做空,涨跌都盈利。
量化合约对冲交易系统开发源码演示示例:
obj = ext.NewPositionManager() # 使用量化交易类库
此处用来获取持仓信息
positions = exchange.GetPosition() # 获取持仓数组
if len(positions) == 0: # 如果持仓数组的长度是0
return 0 # 证明是空仓,返回0
for i in range(len(positions)): # 遍历持仓数组
if (positions[i]['Type'] == PD_LONG) or (positions[i]['Type'] == PD_LONG_YD):
position_long = 1 # 将position_long标记为1
elif (positions[i]['Type'] == PD_SHORT) or (positions[i]['Type'] == PD_SHORT_YD):
position_short = -1 # 将position_short标记为-1
bar = bars[0]
根据价格落在(-40,-3],(-3,-2],(-2,2],(2,3],(3,40]的区间范围来获取最新收盘价所在的价格区间
grid = pd.cut([close_01], context.band, labels=[0, 1, 2, 3, 4])[0]
若无仓位且价格突破则按照设置好的区间开仓
if not position_long and not position_short and grid != 2:
# 大于3为在中间网格的上方,做多
if grid >= 3:
obj.OpenLong("rb2005", 1) # 以市价单开多仓到仓位
if grid <= 1:
obj.OpenShort("rb2005", 1) # 以市价单开空仓到仓位
持有多仓的处理
elif position_long:
if grid >= 3:
obj.OpenLong("rb2005", 1) # 以市价单调多仓到仓位
# 等于2为在中间网格,平仓
elif grid == 2:
obj.closebuy("rb2005", 1) # 以市价单全平多仓
# 小于1为在中间网格的下方,做空
elif grid <= 1:
obj.closebuy("rb2005", 1) # 以市价单全平多仓
obj.OpenShort("rb2005", 1) # 以市价单开空仓到仓位
持有空仓的处理
elif position_short:
# 小于1为在中间网格的下方,做空
if grid <= 1:
obj.OpenShort("rb2005", 1) # 以市价单调空仓到仓位
# 等于2为在中间网格,平仓
elif grid == 2:
obj.closesell("rb2005", 1) # 以市价单全平空仓
# 大于3为在中间网格的上方,做多
elif grid >= 3:
obj.closesell("rb2005", 1) # 以市价单全平空仓
obj.OpenLong("rb2005", 1) # 以市价单开多仓到仓位