跨期套利模型 2017-2019年白银跨期实盘年化7%-15%策略 策略开发
分享本人2017-2019年白银跨期实盘年化7%-15%策略.
比较基础的跨期套利模型,需要注意的重点是:确保双腿交易的速度以及瘸腿的追单处理。
本模型不涉及交易细节的处理,主要是核心逻辑模块。
采用白银品种做跨期主要是基差非常平稳,同时采用众数对上下轨进行控制。
模型代码如下
import time
import numpy as np
from collections import Counter####
class timer():def __init__(self):self._keep_time_list=[]def keep(self,sec):self._keep_time_list.append(time.time())if self._keep_time_list[-1]-self._keep_time_list[0]>=sec:self._keep_time_list = []self._keep_time_list.append(time.time())return 1else:return 0class arbitrage_model():def __init__(self):self._turn_smaller_spread_list=[]self._turn_smaller_spread_basket=[]self._turn_bigger_spread_list=[]self._turn_bigger_spread_basket=[]self._lastprice_list=[]self._mytimer=timer()self._UPdata_time_span=60*5self._turn_smaller_most_spread_list=[]self._turn_bigger_most_spread_list=[]self._min_tick=1#ma runself._ma_turn_bigger_data_dict={}self._ma_turn_smaller_data_dict={}self._min_turn_bigger_data_list=[]self._min_turn_smaller_data_list=[]def run(self,highdata_askprice,highdata_bidprice,data_lastprice,lowdata_askprice,lowdata_bidprice):# signal# turn to smallerself._turn_smaller_spread_list.append(highdata_bidprice - lowdata_askprice)self._turn_smaller_spread_basket.append(highdata_bidprice - lowdata_askprice)# turn to biggerself._turn_bigger_spread_list.append(highdata_askprice - lowdata_bidprice)self._turn_bigger_spread_basket.append(highdata_askprice - lowdata_bidprice)# get quote_stdself._lastprice_list.append(data_lastprice)if len(self._lastprice_list) > 200:quote_std = np.std(self._lastprice_list)del self._lastprice_list[0]else:quote_std = 10if self._mytimer.keep(self._UPdata_time_span):turn_smaller_most_spread = Counter(self._turn_smaller_spread_basket).most_common(1)[0][0]self._turn_smaller_most_spread_list.append(turn_smaller_most_spread)turn_bigger_most_spread = Counter(self._turn_bigger_spread_basket).most_common(1)[0][0]self._turn_bigger_most_spread_list.append(turn_bigger_most_spread)self._turn_smaller_spread_basket = []self._turn_bigger_spread_basket = []if len(self._turn_smaller_most_spread_list) > 12 * 2:del self._turn_smaller_most_spread_list[0]if len(self._turn_bigger_most_spread_list) > 12 * 2:del self._turn_bigger_most_spread_list[0]#signal to smallerif len(self._turn_smaller_most_spread_list)>0 and max(self._turn_smaller_most_spread_list) <= self._turn_smaller_spread_list[-1] and self._turn_smaller_most_spread_list[-1] + 3 * self._min_tick <= self._turn_smaller_spread_list[-1]:signal_smaller=1else:signal_smaller=0#signal to biggerif len(self._turn_bigger_most_spread_list)>0 and self._turn_bigger_spread_list[-1] <= min(self._turn_bigger_most_spread_list) and self._turn_bigger_spread_list[-1] <=self._turn_bigger_most_spread_list[-1] - 3 * self._min_tick:signal_bigger=1else:signal_bigger=0return quote_std,signal_bigger,signal_smallerdef ma_run(self, highdata_askprice, highdata_bidprice, data_lastprice, lowdata_askprice, lowdata_bidprice):#signal#dataself._ma_turn_bigger_data_dict[time.time()]=(highdata_askprice-lowdata_bidprice)self._ma_turn_smaller_data_dict[time.time()]=(highdata_bidprice-lowdata_askprice)# get quote_stdself._lastprice_list.append(data_lastprice)if len(self._lastprice_list) > 200:quote_std = np.std(self._lastprice_list)del self._lastprice_list[0]else:quote_std = 10bigger_keys_list=list(self._ma_turn_bigger_data_dict.keys())#smaller_keys_list=list(self._ma_turn_smaller_data_dict.keys())if bigger_keys_list[-1]-bigger_keys_list[0]>60*1:self._min_turn_bigger_data_list.append(sum(list(self._ma_turn_bigger_data_dict.values()))/len(list(self._ma_turn_bigger_data_dict.values())))self._min_turn_smaller_data_list.append(sum(list(self._ma_turn_smaller_data_dict.values()))/len(list(self._ma_turn_smaller_data_dict.values())))self._ma_turn_bigger_data_dict = {}self._ma_turn_smaller_data_dict = {}signal_bigger=0signal_smaller=0min_span=20if len(self._min_turn_bigger_data_list)>min_span and len(self._min_turn_smaller_data_list)>min_span:if self._min_turn_bigger_data_list[-1]-sum(self._min_turn_bigger_data_list[-(1+min_span):-1])/min_span<-1.5:signal_bigger=1if self._min_turn_smaller_data_list[-1]-sum(self._min_turn_smaller_data_list[-(1+min_span):-1])/min_span>1.5:signal_smaller=1return quote_std,signal_bigger,signal_smaller
跨期套利模型 2017-2019年白银跨期实盘年化7%-15%策略 策略开发相关推荐
- ICCV 2019丨基于跨视角信息融合的三维人体姿态估计
点击我爱计算机视觉标星,更快获取CVML新技术 52CV曾经在该论文刊出的第一时间对其报道:ICCV 2019 | 微软开源跨视图融合的3D人体姿态估计算法,大幅改进SOTA精度,该文为原作者解读. ...
- 2017⇆2019,用了这款减肥App,我胖了30斤...
文章授权转载自创业邦,ID:ichuangyebang,作者:夏弢,视觉绘图:啊Q 前段时间,"2017--2019"的对比挑战在朋友圈刷屏了. 从2017年的"油腻&q ...
- 华为云故事汇:2019年第01期(附pdf资料)
点击下载附件:华为云故事汇2019年第01期.pdf 云上赋能,开启企业数字化蜕变之旅 03 华为云仿真使能模具企业,降本增效言而有信☜ 当模具的发展给我们生活带来无数便利的同时,云技术的发展也为模具 ...
- 怎么用matlab分析跨期决策,何谓跨期决策
59 http://www.doczj.com/doc/74dde19d951ea76e58fafab069dc5022aaea46d8.html 何谓跨期决策 □砳□之 在现实生活中,同样的结果,在 ...
- 2019年第5期《单片机与嵌入式系统应用》电子刊新鲜出炉!
2019年第5期电子刊精彩内容抢先看: 1.5G,带给嵌入式系统的机会在哪里? 2.基于可穿戴设备的人体情绪识别系统研究 3.一种提高的代码复用的C++序列化框架设计 4.ARMv7树莓派的智能控制器 ...
- SQL Server 2014 Win7 Win10 安装详解 SQL Server 2017 2019 Linux及SQL TSQL ETL实用案例
SQL Server 2014安装图解与问题分析 简介 SQL Server2014 是Microsoft 公司推出的关系 型数据库管理系统.它用于大规模联机事务处理(OLTP).数据 仓库和 ...
- SQL Server 2017 2019 Linux(Centos、Unbuntu16.04、Unbuntu18.04、Unbuntu20.04)安装过程详解
SQL Server 2017 2019 Linux安装手册 1简介 SQL Server是微软的数据库平台,而SQL Server 2017 linux是运行在linux服务器上的版本.本文的安装采 ...
- 学校开展计算机教学的简报,教学工作简报(2019年第5期)
教学工作简报(2019年第5期) 1.教务处召开新学期工作会议 8月30日,教务处召开了新学期工作会议.我校教务处处长孙街亭.副处长宣凤琴.教务处全体工作人员参加了会议.处长孙街亭总结了上学期教务处工 ...
- JAVA跨考_考研人的2019——一战跨考清华计算机的血泪史
2019已经过去好多天了,看到大师傅们纷纷秀出了他们的年终总结,而每年都有积极参与的我,却到现在还迟迟没有写下这段时光,我无法原谅我自己,抱歉,俺太迟了. 考研人的 2019 终究是苦逼的一年,从确定 ...
- 2017江苏高职计算机分数线,2017—2019江苏高考招生投档分数线(体育高职专科院校).docx...
2017-2019江苏高考招生投档分数线(体育高职专科院校) 院校代号 院校名称 性质 计划数 录取数 投档线 线差 投档线 类别 省控线 (征平) 1156 江苏经贸职业技术学院 ( 南京) 79 ...
最新文章
- Machine Learning - Andrew Ng on Coursera (Week 1)
- NumPy 百题大冲关,冲鸭!
- JAXB和java.util.Map
- 简述linux系统的安全性,Linux操作系统的安全性有哪些过人之处
- mogonvue账户密码存储的位置
- python变量详解_python基础教程-03-变量详解
- 使用原理视角看 Git
- 购物搜索引擎架构的变与不变
- 503 service unavailable php,503service unavailable错误提示解决方法
- JavaScript BOM编程
- python添加pip环境变量win7_windows环境下面配置pip环境变量
- matlab 线性拟合(好像也可以由两点得出直线)
- linux mentohust dhcp,更换IP后,linux下mentohust无法认证成功?
- 统一社会信用代码及其校验规则
- Windows系统盘瘦身指南
- 【嵌入传播】Embedding Propagation: Smoother Manifold for Few-Shot Classification
- 简易的打折与累加计算器
- 0成本涨粉过万详细复盘,新手也可100%实操上手!
- 08 JavaScript-BOM
- MSO文件怎么打不开