news 2026/2/24 16:10: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/2/22 9:43:11

CI自动化:跑脚本+签名+归档全搞定

你要是做过 Unity、iOS、Android、或者任何需要“打包交付”的活&#xff0c;大概率都经历过这种人生惨剧&#xff1a; 早上 10 点&#xff1a;产品说“给测试一个包看看”中午 12 点&#xff1a;测试说“再来一个修复版”下午 3 点&#xff1a;运营说“渠道包要十个&#xff0…

作者头像 李华
网站建设 2026/2/24 0:53:37

大模型微调+提示词工程:AI如何重塑我的后端开发工作流

在AI技术爆发前,我的后端开发日常充斥着“重复造轮子”:写相似的CRUD接口、维护冗长的接口文档、花1小时调试一个简单的参数校验Bug。但现在,基于大模型微调+提示词工程的定制化AI助手,已经把我的工作效率提升了60%——这就是AI对后端开发工作流的重塑。 一、痛点:传统后…

作者头像 李华
网站建设 2026/2/22 6:55:24

springboot-vue汽车维修保养服务信息系统

目录 系统概述技术架构核心功能系统优势应用场景 开发技术路线结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 系统概述 SpringBoot-Vue汽车维修保养服务信息系统是一个基于前后端分离架构的现代化管理平台&#xff0c;旨在为汽车维…

作者头像 李华
网站建设 2026/2/24 4:56:02

springboot-vue社区志愿者服务系统

目录系统概述核心功能技术亮点应用价值开发技术路线结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 SpringBoot-Vue社区志愿者服务系统是一个基于前后端分离架构的现代化管理平台&#xff0c;旨在优化志愿者服务流程、提升社…

作者头像 李华
网站建设 2026/2/21 11:13:38

导师又让重写?10个AI论文工具深度测评:研究生毕业论文写作必备神器

面对日益繁重的学术任务与高标准的论文要求&#xff0c;研究生群体在写作过程中常面临文献检索效率低、逻辑结构混乱、格式规范不统一等问题。尤其是在论文修改阶段&#xff0c;反复返工不仅消耗时间&#xff0c;更影响研究进度与质量。为帮助广大研究生高效应对这些挑战&#…

作者头像 李华
网站建设 2026/2/24 2:30:47

Transformer自注意力机制核心原理解析:Q/K/V与token相似度的关系

大家都知道Transfomer的自注意力核心是 “通过Q/K/V计算token间关联权重&#xff0c;融合全局上下文”。 那为什么计算多次Q*K的点积&#xff0c;就能得到得到token之间的相似度呢&#xff1f;WQ, Wk, Wv权重矩阵又是怎么来的&#xff1f; 在回答这个问题之前&#xff0c;再温…

作者头像 李华