news 2026/5/1 9:10:46

【期货量化策略】期货量化交易策略统计套利(Python量化)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【期货量化策略】期货量化交易策略统计套利(Python量化)

一、前言

统计套利是基于统计模型的套利策略,通过寻找价格关系的统计规律进行套利。本文将介绍统计套利的实现方法。

本文将介绍:

二、为什么选择天勤量化(TqSdk)

TqSdk统计套利支持:

功能说明
多品种数据支持同时获取多个品种数据
统计分析支持统计分析
实时数据支持实时行情数据
灵活扩展支持自定义策略

安装方法

pipinstalltqsdk pandas numpy statsmodels

三、统计套利基础

3.1 统计套利原理

原理说明
价格关系相关品种价格存在稳定关系
价差波动价差在均值附近波动
回归均值价差会回归均值
套利机会价差偏离时套利

3.2 应用场景

场景说明
相关品种高度相关的品种
同品种不同合约同一品种不同月份
跨市场不同市场相同品种

四、协整分析

4.1 协整检验

#!/usr/bin/env python# -*- coding: utf-8 -*-""" 功能:统计套利 说明:本代码仅供学习参考 """fromtqsdkimportTqApi,TqAuthfromstatsmodels.tsa.stattoolsimportcoint,adfullerimportpandasaspdimportnumpyasnpdeftest_cointegration(price1,price2):""" 协整检验 参数: price1: 价格序列1 price2: 价格序列2 """score,pvalue,_=coint(price1,price2)return{'cointegrated':pvalue<0.05,'pvalue':pvalue,'score':score}# 使用示例api=TqApi(auth=TqAuth("快期账户","快期密码"))klines1=api.get_kline_serial("SHFE.rb2510",3600,500)klines2=api.get_kline_serial("SHFE.hc2510",3600,500)api.wait_update()price1=klines1['close']price2=klines2['close']coint_result=test_cointegration(price1,price2)print(f"协整:{coint_result['cointegrated']}")print(f"P值:{coint_result['pvalue']:.4f}")api.close()

4.2 协整系数估计

fromsklearn.linear_modelimportLinearRegressiondefestimate_hedge_ratio(price1,price2):"""估计对冲比率"""X=price1.values.reshape(-1,1)y=price2.values model=LinearRegression()model.fit(X,y)hedge_ratio=model.coef_[0]returnhedge_ratio

五、配对交易

5.1 价差计算

defcalculate_spread(price1,price2,hedge_ratio):"""计算价差"""spread=price2-hedge_ratio*price1returnspread

5.2 配对交易策略

defpairs_trading_strategy(api,symbol1,symbol2,klines1,klines2,threshold=2):"""配对交易策略"""price1=klines1['close']price2=klines2['close']# 协整检验coint_result=test_cointegration(price1,price2)ifnotcoint_result['cointegrated']:return0# 估计对冲比率hedge_ratio=estimate_hedge_ratio(price1,price2)# 计算价差spread=calculate_spread(price1,price2,hedge_ratio)spread_mean=spread.rolling(20).mean()spread_std=spread.rolling(20).std()current_spread=spread.iloc[-1]z_score=(current_spread-spread_mean.iloc[-1])/spread_std.iloc[-1]# Z-score过大,做空价差ifz_score>threshold:api.insert_order(symbol1,"SELL","OPEN",1)api.insert_order(symbol2,"BUY","OPEN",int(hedge_ratio))return1# Z-score过小,做多价差elifz_score<-threshold:api.insert_order(symbol1,"BUY","OPEN",1)api.insert_order(symbol2,"SELL","OPEN",int(hedge_ratio))return-1return0

六、多品种统计套利

6.1 多品种协整

defmulti_cointegration(klines_dict):"""多品种协整分析"""prices=pd.DataFrame({symbol:klines['close']forsymbol,klinesinklines_dict.items()})# 简化处理:两两协整检验coint_pairs=[]symbols=list(klines_dict.keys())foriinrange(len(symbols)):forjinrange(i+1,len(symbols)):result=test_cointegration(prices[symbols[i]],prices[symbols[j]])ifresult['cointegrated']:coint_pairs.append((symbols[i],symbols[j],result))returncoint_pairs

6.2 投资组合套利

defportfolio_arbitrage(api,symbols,klines_dict,threshold=2):"""投资组合套利"""# 计算投资组合价差# 简化处理:等权重组合prices=pd.DataFrame({symbol:klines['close']forsymbol,klinesinklines_dict.items()})portfolio_price=prices.mean(axis=1)# 计算与均值的偏离mean_price=portfolio_price.rolling(20).mean()std_price=portfolio_price.rolling(20).std()current_price=portfolio_price.iloc[-1]z_score=(current_price-mean_price.iloc[-1])/std_price.iloc[-1]# 根据Z-score调整仓位ifabs(z_score)>threshold:# 执行套利passreturnz_score

七、风险控制

7.1 止损设置

defset_stop_loss(spread,entry_spread,stop_loss_std=3):"""设置止损"""spread_std=spread.rolling(20).std().iloc[-1]stop_loss=entry_spread+stop_loss_std*stop_loss_stdreturnstop_loss

7.2 仓位管理

defcalculate_position_size(api,symbol,max_risk=0.02):"""计算仓位大小"""account=api.get_account()api.wait_update()risk_amount=account.balance*max_risk# 根据价差波动计算仓位# ...returnposition_size

八、总结

8.1 统计套利要点

要点说明
协整检验确保品种协整
价差监控监控价差变化
风险控制严格控制风险
及时平仓价差回归及时平仓

8.2 注意事项

  1. 协整稳定性- 协整关系可能变化
  2. 价差扩大- 价差可能持续扩大
  3. 流动性- 确保有足够流动性
  4. 成本控制- 考虑交易成本

免责声明:本文仅供学习交流使用,不构成任何投资建议。期货交易有风险,入市需谨慎。

更多资源

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 17:19:37

智慧光能追踪辅助系统

智慧光能追踪辅助系统的设计与实现 第一章 设计背景与核心目标 太阳能作为清洁可再生能源&#xff0c;在能源转型中占据重要地位&#xff0c;但传统光伏组件多采用固定安装方式&#xff0c;仅能在特定时段捕获直射光&#xff0c;光能利用率不足30%&#xff0c;且受昼夜交替、季…

作者头像 李华
网站建设 2026/5/1 8:11:39

智慧城市交通系统的设计与实现

智慧城市交通系统的设计与实现 第一章 设计背景与核心目标 城市化进程加速导致交通流量激增&#xff0c;传统交通系统存在信号配时僵化、信息互通不畅、管控缺乏精准性等问题&#xff0c;引发拥堵加剧、出行效率低、环境污染等连锁反应。智慧城市交通系统依托物联网、大数据、…

作者头像 李华
网站建设 2026/5/1 4:26:07

【开题答辩全过程】以 基于springboot与vue的工业塑粉系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/4/23 20:22:44

农业物联网如何用wangEditor插件优化Excel数据可视化粘贴?

今天早上刚打开电脑&#xff0c;就收到一位教育行业开发者的微信咨询——对方正在为某初中学校开发智慧校园平台&#xff0c;急需在wangEditor编辑器中实现Word文档一键导入功能&#xff0c;重点需要解决教学场景中图片和公式的自动上传问题。虽然我的技术博客里公开了联系方式…

作者头像 李华
网站建设 2026/4/19 4:30:58

C# 基本语法详解:从面向对象到 C# 9 顶级语句一文入门

好&#xff0c;这一篇我帮你整理成一篇可直接发布到 CSDN 的完整技术文章&#xff0c;结构清晰、语言偏教程向&#xff0c;适合C# 入门 语法总览&#xff0c;也顺带把 C# 9 的顶级语句讲明白。 你可以 原样复制发布&#xff0c;或者我后面再帮你改成「更偏博客风 / 更偏新手 /…

作者头像 李华