分享本人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%策略 策略开发相关推荐

  1. ICCV 2019丨基于跨视角信息融合的三维人体姿态估计

    点击我爱计算机视觉标星,更快获取CVML新技术 52CV曾经在该论文刊出的第一时间对其报道:ICCV 2019 | 微软开源跨视图融合的3D人体姿态估计算法,大幅改进SOTA精度,该文为原作者解读. ...

  2. 2017⇆2019,用了这款减肥App,我胖了30斤...

    文章授权转载自创业邦,ID:ichuangyebang,作者:夏弢,视觉绘图:啊Q 前段时间,"2017--2019"的对比挑战在朋友圈刷屏了. 从2017年的"油腻&q ...

  3. 华为云故事汇:2019年第01期(附pdf资料)

    点击下载附件:华为云故事汇2019年第01期.pdf 云上赋能,开启企业数字化蜕变之旅 03 华为云仿真使能模具企业,降本增效言而有信☜ 当模具的发展给我们生活带来无数便利的同时,云技术的发展也为模具 ...

  4. 怎么用matlab分析跨期决策,何谓跨期决策

    59 http://www.doczj.com/doc/74dde19d951ea76e58fafab069dc5022aaea46d8.html 何谓跨期决策 □砳□之 在现实生活中,同样的结果,在 ...

  5. 2019年​第5期《单片机与嵌入式系统应用》电子刊新鲜出炉!

    2019年第5期电子刊精彩内容抢先看: 1.5G,带给嵌入式系统的机会在哪里? 2.基于可穿戴设备的人体情绪识别系统研究 3.一种提高的代码复用的C++序列化框架设计 4.ARMv7树莓派的智能控制器 ...

  6. SQL Server 2014 Win7 Win10 安装详解 SQL Server 2017 2019 Linux及SQL TSQL ETL实用案例

    SQL Server 2014安装图解与问题分析 简介 SQL Server2014 是Microsoft 公司推出的关系    型数据库管理系统.它用于大规模联机事务处理(OLTP).数据  仓库和 ...

  7. 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服务器上的版本.本文的安装采 ...

  8. 学校开展计算机教学的简报,教学工作简报(2019年第5期)

    教学工作简报(2019年第5期) 1.教务处召开新学期工作会议 8月30日,教务处召开了新学期工作会议.我校教务处处长孙街亭.副处长宣凤琴.教务处全体工作人员参加了会议.处长孙街亭总结了上学期教务处工 ...

  9. JAVA跨考_考研人的2019——一战跨考清华计算机的血泪史

    2019已经过去好多天了,看到大师傅们纷纷秀出了他们的年终总结,而每年都有积极参与的我,却到现在还迟迟没有写下这段时光,我无法原谅我自己,抱歉,俺太迟了. 考研人的 2019 终究是苦逼的一年,从确定 ...

  10. 2017江苏高职计算机分数线,2017—2019江苏高考招生投档分数线(体育高职专科院校).docx...

    2017-2019江苏高考招生投档分数线(体育高职专科院校) 院校代号 院校名称 性质 计划数 录取数 投档线 线差 投档线 类别 省控线 (征平) 1156 江苏经贸职业技术学院 ( 南京) 79 ...

最新文章

  1. Machine Learning - Andrew Ng on Coursera (Week 1)
  2. NumPy 百题大冲关,冲鸭!
  3. JAXB和java.util.Map
  4. 简述linux系统的安全性,Linux操作系统的安全性有哪些过人之处
  5. mogonvue账户密码存储的位置
  6. python变量详解_python基础教程-03-变量详解
  7. 使用原理视角看 Git
  8. 购物搜索引擎架构的变与不变
  9. 503 service unavailable php,503service unavailable错误提示解决方法
  10. JavaScript BOM编程
  11. python添加pip环境变量win7_windows环境下面配置pip环境变量
  12. matlab 线性拟合(好像也可以由两点得出直线)
  13. linux mentohust dhcp,更换IP后,linux下mentohust无法认证成功?
  14. 统一社会信用代码及其校验规则
  15. Windows系统盘瘦身指南
  16. 【嵌入传播】Embedding Propagation: Smoother Manifold for Few-Shot Classification
  17. 简易的打折与累加计算器
  18. 0成本涨粉过万详细复盘,新手也可100%实操上手!
  19. 08 JavaScript-BOM
  20. MSO文件怎么打不开

热门文章

  1. onblur属性详解
  2. session 对象的绑定、解绑和钝化、活化
  3. PS快捷键大全,记住这些就够了!
  4. 2022年茶艺师(中级)证考试及茶艺师(中级)模拟考试题库
  5. 怎么连接vm的远程服务器,vm虚拟机连接远程服务器(vm虚拟机搭建服务器)
  6. Users用户类默认值及各属性可能的值
  7. win10 如何修改 C:\Users\用户名文件夹
  8. 搭建一个属于自己的服务器,并实现内网穿透(外网访问本地服务器功能)
  9. SQL- With as 用法
  10. 人脸识别技术和人脸识别特征