R语言构建配对交易量化模型
R语言构建配对交易量化模型

用IT技术玩金融系列文章,将介绍如何使用IT技术,处理金融大数据r语言 去重混迹多年,已经熟练掌握一些IT技术。单纯r语言保存图片做开发,总觉得使劲的方式不对。要想靠技术养活自己,就要把技术变现。通过“跨界”可以寻找新的机会,创造技术的壁垒。
金融是离钱最近的市场,也是变现的好渠道!今天就开始踏上“用IT技术玩金融”之旅!
本文由金融量化创始人投稿,任何不标明作者及来源和链接转载者,被视为侵权。
散户每天都在经历中国股市的上蹿下跳,赚到钱是运气,赔钱是常态。那么是否有方法可以让赚钱变成常态呢?
我们可以通过“统计套利”的方法,发现市场的无效性。配对交易,就统计套利策略的一种,通过对冲掉绝大部分的市场风险,抓住套利机会,积累小盈利汇聚大收益。
配对交易(r语言遍历)的理念最早r语言底层20年代华尔街传奇交易员Jesse Livermore 的姐妹股票对交易策略。配对交易的基本原理是找到两个相关性较高具备均衡关系的股票或其他金融产品,做空近期相对强势的金融产品,同时做多相对弱势金融产品,等待两者价格重返均衡值时进行平仓,赚取两者的价差变动的收益。
假设两个金融产品在未来的时期会保持良好的均衡关系,一旦两者之间的价格走势出现背离,同时这种背离在未来会被进行修复,那么就可能产生套利的机会。对于配对交易来说,就是找到这样的机会,进行统计套利。
配对交易与传统股票交易的不同之处在于,它的投资标的是两只股票的价差,是一种相对价值而非绝对价值。由于它在股票多头和空头方同时建仓,对冲掉了绝大部分的市场风险,所以它是一种市场的中性策略。无论大盘上涨还是下跌,配对交易策略收益都是相对平稳的,与大盘走势的相关性很低。
在市场无趋势性机会时,可以通过配对交易避免股市系统风险,获取Alpha绝对收益。趋势性的交易策略,可以参考文章 两条均线打天下。
1. 组合筛选:在市场上寻找用于配对的金融产品或者组合,检查历史价格的走势,判断是否可以用来进行配对。主要用下面几个指标来筛选配对组合:相关系数、模型计算的均值回复速度、协整检验、基本面因素等。通过这些因素来寻找出具有稳定相关关系的组合。
2. 风险衡量和动态组合的构建:计算配对组合各自的预期收益、预期风险、交易成本;判断两个组合之间的价差服从何种分布;判断是具有长期均衡特性还是短期均衡特性;价差发生跳跃的频率等。
3. 确定交易规则:根据价差的特性,确定交易的频率(r语言 小数),交易的触发条件和平仓规则等。
4. 执行交易及风险控制:除了按照交易规则执行外,还必须动态跟踪价差走势,如果发现突变,应该及时调整套利模式和交易频率。
? 统计套利的规则都是基于历史数据计算的,但历史不能代表未来,当市场发生变化模型也会失效
? 市场对价格进行修复的时间难以准确判断,只能根据历史大致估计。如果回归的时间过长,对套利者的资金使用成本是个考验,也有可能导致套利失败。
根据配对交易的原理,我们就可以自己设计配对交易的模型了。首先,需要把配对交易涉及的指标都进行量化,比如如何选择不同的两个具备均衡关系金融产品,什么时候做多,什么时候做空,什么时候平仓等。
根据概念,我们生成两个虚拟的金融产品X,Y,包括时间和价格字段。让X和Y的两个产品都价格符合正态分布,生成100个日期的数据。由于是测试程序,日期字段是包括了自然日,暂时理解为连续的日期。
上图中,X轴为时间,Y轴是价格,红色线为X的产品的价格,蓝色线为Y产品的价格。我们可以直观的看出,X,Y两个产品无任何关系。
根据配对交易的假设条件,如果两个金融产品的价差是收敛的。我们用X的产品价格减去Y产品的价格,当差值为正的时候,我们认为X的价格过高,则做空X,同时Y的价格过低,则做多Y;当差值为负的时候,我们认为X的价格过低,则做多X,同时Y的价格过高,则做空Y;当差值为0时,则价格被市场所修复,则全部平仓。
接下来,我们进行模拟交易,取r语言 excel个索引值的点,在2010-01-04时做空X,做多Y。当差价小于0在2010-01-06时,进行平仓。
根据配对交易的假设条件,如果两个金融产品的价差是收敛的,通过协整性检验的方法,我们可验证数据的收敛性。那么如果数据是收敛的,他还会具备均值回归的特性,请参考文章 均值回归,逆市中的投资机会。
画出X,Y的价差图,我们可以明显的看出,价差一直围绕着0上下波动,这是明显收敛的,同时符合均值回归的特性。
这就是市场的规则,通过配对交易的方法,我们找到市场无效性,从而可以赚去套利的收益。
看到上面的赚钱方法,也许大家会很兴奋!但是大部分市场的数据,都不会像我们的假设条件一样,轻而易举就能实现赚钱的目标。我们可以用计算机程序进行全市场的扫描发现交易机会,当然你也可以通过肉眼的方式来观察。
? 股票类,同行业、市值和基本面相似的个股,比如,中国银行(r语言 hist)和农业银行(r语言取整)。
? 基金类,以相同指数作为标的的不同基金,比如,证券B(r语言tapply),券商B(r语言画柱状图)。
? 期货类,同一期货品种的不同合约,比如,铜(r语言排序函数)。
? 混合类,跨市场为标的的金融产品,比如,沪深300指数,IF的期货合约
接下来,以相同品种不同合约的期货为例,我们把配对交易用在cu15和cu16的两个合约上,试试效果如何。由于期货是支持的T+0日内的交易的,而对于套利的操作,通常都不会持仓过夜,所以我们在尽量的短周期上进行操作,而且日内平仓。下面我将以1分钟做为交易周期。
R语言本身提供了丰富的金融函数工具包,时间序列包zoo和xts,指标计算包TTR,可视包ggplot2等,我们会一起使用这些工具包来完成建模、计算和可视化的工作。关于zoo包和xts包的详细使用可以参考文章,R语言时间序列基础库zoo,可扩展的时间序列xts。
通过R语言加载铜的1分钟线数据,因为我们进行日内交易,所以在加载时我就进行了转换,按日期进行分组,生成R语言的list对象,同时把每日的data.frame类型对象转成XTS时间序列类型对象,方便后续的数据处理。
以2016年02月01日为例进行交易,以1分钟线的close价格来计算cu15和cu16的两个合约的价差。下面我们对数据进行操作,合并2个合约在2016年02月01日的数据,并对空值进行处理,最后计算出两个合约的价差。
从价差的结果看,每1分钟cu15合约都小于cu16合约,从-110到-20价差不等,并且以-为均值上下反复震荡。
我们假设以-为均值回归点,当差值为大于-的时候,认为X的价格过高做空X,同时Y的价格过低做多Y;当差值小于-的时候,我们认为X的价格过低做多X,同时Y的价格过高做空Y;当差值为-时,价格被市场所修复,则全部平仓。以cu15和cu16的两个合约按照1:1持仓进行配比,1手多单对1手空单。
定义模型指标,计算价值列为diff,均值回归列为mid,阈值列为top,最小阈值列为bottom。
完成指标的定义后,我们创建配对交易模型,并对合同数据进行回测,产生交易信号后,模拟交易输出清单,并可视化交易结果。
一共出现了24个交易信号,由于我们进行的是配对交易,所以当出现ks(r语言概率)信号时,实际上会进行2笔操作,开仓做空r语言安卓版腿,开仓做多第二腿。
cu15和cu16两个合同是完美地具备均衡关系的两个金融产品,大家常常所说的跨期套利就是基于这个思路实现的。本文介绍的配对交易模型,是统计套利的一个基本模型,原理很简单,当大家都掌握后拼的就是交易速度了。
利用市场的无效性来获取利润,是每个套利策略都在寻找的目标。通过统计方法,我们可以发现市场的无效性,再以对冲的操作方式,规避绝大部分的市场风险,等待市场的自我修复后来赚钱利润。说起来很简单,但市场的无效性,可能会在极短时间内就被修复。
“天下武功为快不破”,通过量化的手段,让计算机来发现机会,进行交易,实现收益。一切就和谐了!!
文章来源大数据,微信公众号dashuju 大数据是一个专注大数据创业、大数据技术与分析、大数据商业r语言条件语句站。分享大数据的干货教程和大数据应用案例,提供大数据分析工具和资料r语言hist,解决大数据产业链上的创业、技术、分析、商业、应用等问题,为大数ja调用r语言和数据行业从业人员提供支持与服务。
相关文章
- 《r语言csv》作者民生银行大数据分析师张丹带你玩转R语言实战量化投资
- 抖音1是什么梗1页明星娱乐八卦汇总pdf文档内容
- SPSS经典教材基于回归法填充缺失值
- k2r语言plot函数j5b微软大数据分析语言ROpen升至3版本
- 数据分享R语言IMDbTOP2电影特征数据挖掘可视化分析受众偏好排名投票、评分
- Meta分析实战R软件操作(r语言 教程)
- 如何用python处理txt文件
- 尝试一文搞懂布林通道(r语言服务器)
- 美媒免费的开放源代码GDP贡献被低估
- 诊断性meta分析-R语言教程
- 互联网科技资讯-互联网科技行业热点-行业资讯-亿速云
- 未在规定时间内缴费确认的视同放弃预录取
- 寒假线上调研世界银行导师教你用R语言进行数据分析
- 中药复方发if5思路技巧分享不容错过
- R语言入门及顶刊论文绘图训练营
- R语言热图怎么实现
- R语言数据特征分析-周期性分析
- R语言构建配对交易量化模型
- 从而实现运气变好
- NBA球员身体数据及位置分析