关于量化交易:量化合约对冲策略系统的开发构建方案

45次阅读

共计 1929 个字符,预计需要花费 5 分钟才能阅读完成。

量化,是指利用统计办法、数学模型来领导投资,其本质是定性投资的数量化实际,争取通过模型构建出能够继续跑赢市场的投资组合,从而获取超额利润收益。

对冲,是指同时进行两笔行情相干、方向相同、数量相当、盈亏相抵的交易,通过对冲策略升高组合系统性危险,取得对冲后的相对收益。

咱们举个例子:
假如某一股票某年的收益可分为两局部:
A:利用量化办法进行选股构建的股票组合,当年收益 10%
B:市场调整引起的上涨幅度 -15%
在没有对冲的状况下,尽管选出的股票组合跑赢了市场,但并未实现增值。收益率为 -5%
假如使用对冲工具,对冲掉市场稳定导致的投资组合收益变动,只赚取 A 局部的投资收益,那么同样的市场环境,该股票仍能实现 10% 左右正收益。

量化合约对冲交易系统开发个别领有以下特点:

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) # 以市价单开多仓到仓位




正文完
 0