合约对冲高频量化交易机器人软件开发源代码(支持测试)

发布于: 雪球转发:0回复:0喜欢:0

什么是量化合约交易?    

1、量化合约交易是指买卖双方对约定未来某个时间按指定价格接收一定数量的某种资产的协议进行交易。合约交易的买卖对象是由交易所统一制定的标准化合约,交易所规定了其商品种类,交易时间,数量等标准化信息。合约代表了买卖双方所拥有的权利和义务。    

简单点说就是现在约好未来某个时间地点交易一定数量的某种商品。    

2、合约交易是一种金融衍生品,相对于现货市场的交易,用户可以在合约交易中通过判断涨跌,选择买入做多或卖出做空合约,来获得价格上涨或者下跌带来的收益。 kubeadm init \ --apiserver-advertise-address=192.168.233.135 \ #apiserver入口,填写master节点的内网地址 --image-repository registry.aliyuncs.com/google_containers \ # 镜像仓库 --kubernetes-version v1.19.4 \ # 启动版本,即要下载的k8s版本 --service-cidr=10.96.0.0/12 \ # 对外service的私网地址,不能与下面的地址或本机网络有冲突 --pod-network-cidr=10.244.0.0/16 # 创建新的pod时分配的地址,不能与上面的地址或本机网络有冲突 #注意事项:此步有可能报错docker service未启动,可以尝试重启 reboot    该处使用的url网络请求的数据。     

3.修改example.env为.env并修改配置   原因:kubernetes的service要通过iptables来做后端pod的转发和路由 cat > /etc/sysctl.d/k8s.conf <<EOF net.bridge.bridge-nf-call-ip6tables=1 net.bridge.bridge-nf-call-iptables=1 EOF       

合约交易的规则    

1、交易时间    合约交易是7*24小时交易,只有在每周五16:00(UTC+8)结算或交割期间会中断交易。合约在交割前最后10分钟,只能平仓,不能开仓。    

2、交易类型    交易类型分为两类,开仓和平仓。开仓和平仓,又分买入和卖出两个方向:    

买入开多(看涨)是指当用户对指数看多、看涨时,新买入一定数量的某种合约。进行“买入开多”操作,撮合成功后将增加多头仓位。    

卖出平多(多单平仓)是指用户对未来指数行情不再看涨而补回的卖出合约,与当前持有的买入合约对冲抵消退出市场。进行“卖出平多”操作,撮合成功后将减少多头仓位。    卖出开空(看跌)是指当用户对指数看空、看跌时,新卖出一定数量的某种合约。进行“卖出开空”操作,撮合成功后将增加空头仓位。    

买入平空(空单平仓)是指用户对未来指数行情不再看跌而补回的买入合约,与当前持有的卖出合约对冲抵消退出市场。    

进行“买入平空”操作,撮合成功后将减少空头仓位。   import quandl    import pandas as pd    import numpy as np    import matplotlib.pyplot as plt    quandl.ApiConfig.api_key='INSERT YOUR API KEY HERE'    selected=['CNP','F','WMT','GE','TSLA']    data=quandl.get_table('WIKI/PRICES',ticker=selected,    qopts={'columns':['date','ticker','adj_close']},    date={'gte':'2011-1-1','lte':'2021-07-31'},paginate=True)    clean=data.set_index('date')    table=clean.pivot(columns='ticker')    returns_daily=table.pct_change()    returns_annual=returns_daily.mean()*250    cov_daily=returns_daily.cov()    cov_annual=cov_daily*250    port_returns=[]    port_volatility=[]    sharpe_ratio=[]    stock_weights=[]    num_assets=len(selected)    num_portfolios=90000    np.random.seed(101)    for single_portfolio in range(num_portfolios):    weights=np.random.random(num_assets)    weights/=np.sum(weights)    returns=np.dot(weights,returns_annual)    volatility=np.sqrt(np.dot(weights.T,np.dot(cov_annual,weights)))    sharpe=returns/volatility    sharpe_ratio.append(sharpe)    port_returns.append(returns)    port_volatility.append(volatility)    stock_weights.append(weights)