news 2026/5/30 22:08:10

【期货量化策略】期货量化交易策略统计套利(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/5/30 16:16:01

AI Agent部署架构对比与选择:一篇搞定,建议收藏

AI Agent 的部署架构没有万能解法&#xff0c;选择对了能事半功倍&#xff0c;选择错了则可能付出高昂的性能或成本代价。不同架构会直接影响性能表现、成本结构、延迟体验和适用场景。目前主流的四种部署模式包括批量部署、流式部署、实时部署和边缘部署。 1.批量部署 Agent 以…

作者头像 李华
网站建设 2026/5/28 15:59:15

想让 Git 忽略这个文件夹怎么办 ---- .gitignore Git文件使用教程

通过idea里的快捷操作添加&#xff08;最直接&#xff09;idea中右键文件夹 “添加到 .gitignore” 的选项&#xff0c;直接点击它&#xff0c;这个文件夹就会被自动写入项目的 .gitignore 文件&#xff0c;Git 之后就不会再追踪它了。手动编辑 .gitignore 文件&#xff08;如果…

作者头像 李华
网站建设 2026/5/29 0:15:00

赶deadline必备! 10个AI论文网站深度测评:自考毕业论文+格式规范全攻略

在当前快节奏的学术环境中&#xff0c;无论是高校师生还是自考学员&#xff0c;都面临着论文写作时间紧、格式要求高、内容质量把控难等多重挑战。尤其是在临近毕业的关键阶段&#xff0c;如何高效完成一篇符合规范、逻辑严谨的论文&#xff0c;成为许多人的燃眉之急。为此&…

作者头像 李华