近期突发奇想,想对统计套利在商品期货市场的应用进行一些初步尝试,不是什么新方法,如《圣经》中的一句老话:太阳底下没有新鲜事。只希望能抛砖引玉,得到更多前辈的指导。废话不多,直入正题:

一、基本原理

原理很简单,对于服从正态分布的随机序列,两端属于小概率区域,中间属于大概率区域。那么问题就简单了,只需要寻找或构建一个满足正态分布的期货品种或者套利组合,在价格出现在下图灰色区间时介入,在价格回归到白色区域时获利退出。概率分布图组合走势图

二、构建组合

期货市场单一品种容易出现单边走势,并不适合该方法,因此选择利用对冲套利组合。套利很多模式,跨期、跨品种、跨市场皆可。由于数据量庞大,需要借助工具,选择了Python(matlab也可以)。以ag1906和au1906为例,构建基本分析框架代码如下:

import pandas as pd

import numpy as np

import time

import matplotlib.pyplot as plt

from sklearn.linear_model import Lasso,LassoCV,LassoLarsCV

import statsmodels.tsa.stattools as ts

path01=r'file:///D:/chenbin.zeng/privacy/test_data/ag1906.csv'

data01=pd.read_csv(path01,encoding='gb18030',header =0,names =['time','open','high','low','close','volume','oi'],engine='python',sep=',')

path02=r'file:///D:/chenbin.zeng/privacy/test_data/au1906.csv'

data02=pd.read_csv(path02,encoding='gb18030',header =0,names =['time','open02','high02','low02','close02','volume02','oi02'],engine='python',sep=',')

data01['time']=pd.to_datetime(data01['time'])

data01.set_index(data01['time'],inplace=True)

data01=data01.drop(['time'],axis=1)

data02['time']=pd.to_datetime(data02['time'])

data02.set_index(data02['time'],inplace=True)

data02=data02.drop(['time'],axis=1)

data=pd.concat([data01,data02],axis=1)

data=data.dropna(axis=0,how='any')

data['价差']=data['close']-data['close02']

data=data.drop(['open','high','low','volume','oi','open02','high02','low02','volume02','oi02','close','close02'],axis=1)

data=data['2019-01-01':'2019-04-03']

data.index=data.index.strftime('%Y-%m-%d-%H-%M')

mean=data.mean().values

std = data.std().values

def normfun(x,mu,sigma):

pdf = np.exp(-((x - mu)**2)/(2*sigma**2)) / (sigma * np.sqrt(2*np.pi))

return pdf

x=data['价差'].values

y=normfun(x,mean,std)

plt.plot(x,y)

测试结果如下图:

貌似效果不错,但是我们再来看一下该价差的时间的序列图:

data.plot()

可以看出该组合的协整性并不强,因此在组合选择前,我们还需要先做一步协整性检验。

stationary_test_p = ts.adfuller(data['价差'])

print(stationary_test_p)

(-0.47209833187081945, 0.8973472782402288, 16, 31116, {'1%': -3.4305601761006317, '5%': -2.8616328922776977, '10%': -2.5668194437034035}, 100090.26246500436)

可见P值较大,说明该组合并不适合该套利策略。理想的状态应该是非常接近下面这种图形的。这就要看大家构建组合的本事了,而且组合也会具有一定的时效性,一个组合也很难做到长期如此。

三、本章总结

经实践,对于组合选取上的一些个人理解如下:

1、统计套利属于利用大概率赚小钱的策略,因此如何预防黑天鹅,即如何止损,是一个还没有想得太透彻的问题。

2、单一组合套利入场时机出现并不多,为了提高资金利用率应该建立多对套利组合的组合。

3、套利幅度的选取直接关系到套利机会出现次数的频率(幅度越大,频率越小)。为达到总收益最大化,还应对套利幅度进行优化。

4、如果采取高频套利,那么交易成本不容忽视。为保证成交,按市价挂单,来回一轮交易滑点至少在4个点,手续费也是单边交易的两倍。因此,基本要6个点以上的价差才会有利润。如何低成本的减少滑点(。。。请不要告诉我自己搭建物理网络这样的办法,如果有人肯给我融资倒可以考虑考虑)也是目前一个重要挑战。

—————————————————分割线——————————————————

按照上述思路,建立组合并搭建了一个利用API接口的自动交易程序。回测效果还挺满意,不过这种资金曲线什么的太虚了,就不贴出来了。初步准备实盘测试一年。(注:该账号中后续会陆续加入新的策略,因此不能完全反应上诉方案的效果。)2019-03-28~~2019-04-03

python统计套利_统计套利初步尝试——组合建立(一)相关推荐

  1. python统计套利_统计套利(二),利用协整关系进行配对交易【原文】

    之前我们谈到了利用两只股票之间的相关系数进行配对交易,但我们能通过两只相关性较高的股票对之间的差价图看出,相关性高他们之间的价差并不一定会是一个平稳序列,简单来说我们无法利用这个不收敛的价差来进行套利 ...

  2. split函数python统计英文单词_统计一篇英文文章单词个数,取出出现频次前10的单词(Python实现)...

    题目: 用python实现统计一篇英文文章内每个单词的出现频率,并返回出现频率最高的前10个单词及其出现次数. 常规解法 怎么判定单词? 1 不是字母的特殊字符作为分隔符分割字符串 (避免特殊字符的处 ...

  3. 数据统计 测试方法_统计测试:了解如何为数据选择最佳测试!

    数据统计 测试方法 This post is not meant for seasoned statisticians. This is geared towards data scientists ...

  4. adobe怎么统计字数_统计数据显示,6 月份桌面 Linux 市场份额攀升至历史新高 | Linux 中国...

    新的一个月,也带来了网络分析公司 NetMarketshare 的新的 Linux 市场份额统计,它们显示 Linux 和 Ubuntu 的使用量连续第四个月上升. 来源:https://linux. ...

  5. mysql数据库统计人数_统计人数 数据库

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  6. python统计套利_清华编程高手尹成带你基于算法实践python量化交易

    清华编程高手尹成带你基于算法实践python量化交易 量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种"大概率"事件以制定策 ...

  7. python词频统计代码_机器学习必备宝典-《统计学习方法》的python代码实现及课件...

    <统计学习方法>可以说是机器学习的入门宝典,许多机器学习培训班.互联网企业的面试.笔试题目,很多都参考这本书.本站根据网上资料用python复现了课程内容,并提供本书的代码实现.课件下载. ...

  8. python 数据分析论文_数据分析-任务:论文作者统计

    2.1 任务说明 任务主题:论文作者统计,统计所有论文作者出现评率Top10的姓名: 任务内容:论文作者的统计.使用 Pandas 读取数据并使用字符串操作: 任务成果:学习 Pandas 的字符串操 ...

  9. python不及格人数_下面 if语句统计“成绩(score)优秀的男生以及不及格的男生”的人数,正确的语句是____________。_学小易找答案...

    [多选题]常用的经济结构分析方法有( ) [多选题]计量经济学检验主要是检验模型是否符合计量经济方法的基本假定.检验内容包括( ) [填空题]Python语言是一种解释型 语言,它不需要编译,它的执行 ...

最新文章

  1. shell脚本将命令的输出结果赋值给变量
  2. 录音文件下载_音频转文字怎么转?大家都说好用的手机APP:录音转文字助手
  3. 硬核!一文梳理经典图网络模型
  4. SpringMVC系列(二): SpringMVC各个注解的使用
  5. MapReduce V1:Job提交流程之JobTracker端分析
  6. 【软件开发底层知识修炼】十五 快速学习GDB调试二 使用GDB进行断点调试
  7. C/C++判断操作系统(Win10,Win8.1WinServer等等)-完整源码及思路
  8. dd实现Linux转移,linux命令-dd {拷贝并替换}
  9. 计算机硬件专业知识西瓜视频,2019年中电脑硬件榜单,空调西瓜+电脑助你当个快乐肥宅...
  10. 计算机应用基础教材提纲,《计算机应用基础》课程教学大纲
  11. 防止浏览器嗅探音视频--blob对象在audio和video标签中的使用
  12. 微星小飞机怎么显示帧数?方法介绍
  13. 输入法里打出特殊符号
  14. CentOS安全运维检查命令
  15. 在计算机上配置dns,常见设备和系统上配置DNS的方法DNS服务器 -电脑资料
  16. 全国青少年软件编程(Scratch)一级2019考试测试卷最后一道编程题!
  17. ros android 方案,ROS + Android
  18. 阻塞队列(一):ArrayBlockingQueue
  19. java中常用的加密工具
  20. 详解 masm + textpad 编译环境的搭建

热门文章

  1. 恍然大悟!顺其自然就是最高的智慧
  2. chown命令应用和chmod命令应用
  3. 行为树 Behavior3go
  4. 【Python基础】面向对象封装 案例(一)
  5. [翻译] 微软正式宣布 .NET 5版本
  6. Unity 法线贴图、高光贴图、Cube Map shader
  7. 解决:谷歌浏览器任务栏图标变白
  8. 仿照利用android系统源码资源文件,修改SeekBar颜色 前景与背景
  9. element-ui组件Popover 弹出框,el-popover样式、定位以及二次确认弹出框自动关闭 问题
  10. 记 vant-popup 安卓样式折叠/样式错误问题(大坑)