金融市场量化交易配对策略(一):寻找配对股票(基于聚宽python2.7平台)
需要基础金融理论知识、python numpy、pandas库知识
量化交易
以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,极大地减少了投资者情绪波动的影响,避免在市场极度狂热或悲观的情况下作出非理性的投资决策。以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,极大地减少了投资者情绪波动的影响,避免在市场极度狂热或悲观的情况下作出非理性的投资决策。
配对交易
是指八十年代中期华尔街著名投行Morgan Stanley的数量交易员Nunzio Tartaglia成立的一个数量分析团队提出的一种市场中性投资策略,,其成员主要是物理学家、数学家、以及计算机学家。
Ganapathy Vidyamurthy在《Pairs Trading: Quantitative Methods and Analysis》一书中定义配对交易为两种类型:一类是基于统计套利的配对交易,一类是基于风险套利的配对交易。
基于统计套利的配对交易策略是一种市场中性策略,具体的说,是指从市场上找出历史股价走势相近的股票进行配对,当配对的股票价格差(Spreads)偏离历史均值时,则做空股价较高的股票同时买进股价较低的股票,等待他们回归到长期均衡关系,由此赚取两股票价格收敛的报酬。
——MBA智库
配对交易的原理
配对交易策略的基本原理是基于两个相关性较高的股票或者其他证券,如果在未来时期保持着良好的相关性,一旦两者之间出现了背离的走势,且这种背离在未来是会得到纠正的,那么就可能产生套利的机会。对于配对交易的实践而言,如果两个相关性较高的股票或者其他证券之间出现背离,就应该买进表现相对较差的,卖出表现相对较好的。当未来两者之间的背离得到纠正,那么可以进行相反的平仓操作来获取利润。
由于配对交易利用配对间的短期错误定价,通过持有相对低估,卖空相对高估,因此其本质上是一个反转投资策略,其核心是学术文献中的股票价格均值回复。尽管配对交易策略非常简单,但却被广泛应用,其之所以能被广泛应用的主要原因是:首先,配对交易的收益与市场相独立,即市场中性,也就是说它与市场的上涨或者下跌无关;其次,其收益的波动性相对较小;第三,其收益相对稳定。
——MBA智库
最小距离法
P ti(t=0,1,2…T)表示股票i在第t天的价格,则单期收益率:
t天内积累的收益率:
标准化价格偏差平方和:
完成代码
计算SSD函数
def SSD(priceX,priceY): #都为pd.dataframe if priceX is None or priceY is None: print('缺少价格序列') returnX=(priceX-priceX.shift(1))/priceX.shift(1)[1:] returnY=(priceY-priceY.shift(1))/priceY.shift(1)[1:] standardX=(returnX+1).cumprod() standardY=(returnY+1).cumprod() SSD=np.sum((standardX-standardY)**2) return(SSD)选取“酒、饮料和精制茶制造业” 行业成分股的几十支股票
stocks = get_industry_stocks('C15')对某两支股票过去360个交易日内收盘价进行统计
h1 = attribute_history(stocks[i], 360, '1d', ('close')) h2 = attribute_history(stocks[j], 360, '1d', ('close'))在股票池中循环比较、排序输出
完整代码
import jqdata def initialize(context): stocks = get_industry_stocks('C15') ssds={} for i in range(len(stocks)-1): for j in range(i+1,len(stocks)): h1 = attribute_history(stocks[i], 360, '1d', ('close')) h2 = attribute_history(stocks[j], 360, '1d', ('close')) dis=SSD(h1,h2)['close'] ssds[stocks[i]+','+stocks[j]]=dis #print dis['close'] #print type(dis['close']) for k,v in sorted(ssds.items(),key = lambda x:x[1]): print k+' '+str(v) def SSD(priceX,priceY): if priceX is None or priceY is None: print('缺少价格序列') returnX=(priceX-priceX.shift(1))/priceX.shift(1)[1:] returnY=(priceY-priceY.shift(1))/priceY.shift(1)[1:] standardX=(returnX+1).cumprod() standardY=(returnY+1).cumprod() SSD=np.sum((standardX-standardY)**2) return(SSD) def handle_data(context,data): pass
部分结果:
得到最适合用来配对的为 中葡股份600084 和 养元饮品603156
接着即可以进行进一步工作。
- 金融市场量化交易配对策略(二):跑赢沪深300十个点(基于聚宽python2.7平台)
- python基于windows平台锁定键盘输入的方法
- 基于ARIMA的股票预测 Python实现 附Github
- 基于Python2.7进行的列表排序
- 使用Python2.7 GET Onenet平台的数据
- 基于KNN算法的约会网站配对效果 python3.2
- python2.7基于selenium的web自动化测试项目--finance
- (京东量化)基于相关性的配对交易策略
- 【数据平台】基于pymysql库python连接mysql
- 基于WIN7(64位)的PyCharm + OpenCV3 + Python2.7 环境构建及测试
- 工作记录: 如何通过virtualenv创建基于某个python版本的虚拟平台
- 如何基于Python构建一个可扩展的运维自动化平台
- 边缘检测,肖像胶卷色彩cameo.py/filters.py/utils.py文件内容,基于python2.7,IDE:spyder
- centos7 下搭建Python2.7 + PyQt4.11.3 + Eric4.0开发平台
- python2.7基于selenium的web自动化测试项目--框架设计
- Windows Azure真实案例:FullArmor 解决方案提供商以基于云的平台提供了灵活的策略解决方案
- windows平台python 2.7环境编译安装zbar
- (京东量化)基于相关性的配对交易策略
- 在python 2.7平台下访问mysql 5.0数据库
- Python中关于URL的处理(基于Python2.7版本)