基于聚宽(JoinQuant)平台开发的量化交易策略合集,涵盖ETF轮动、股票选股、跨市场套利等多种策略类型。
文件:ETF_rotation_v1.py、ETF_simple_rotation.py
基于动量因子的ETF轮动策略,通过加权线性回归计算动量评分,每周选择动量最强的ETF持有。
- 动量因子:基于加权线性回归计算年化收益率和 R² 判定系数
- 轮动规则:每周三选择动量最强的ETF持有
- 风险控制:动量得分安全区间过滤(0 < score ≤ 5)
综合评分 = 年化收益率 × R²
- 近期数据权重更高(线性递增权重 1→2)
- R² 衡量趋势稳定性,过滤不稳定的高收益
| 参数 | 默认值 | 说明 |
|---|---|---|
m_days |
25 | 动量参考天数(约1个月) |
target_num |
3 | 持仓ETF数量 |
| 交易时间 | 每周三 14:50 | 尾盘交易 |
| 滑点 | 0.3% | 固定滑点 |
| 佣金 | 0.02% | 双边佣金 |
文件:three_index_rotation.py
纯宽基动量轮动策略,无止损,无债券防御,简洁高效。
- 投资标的:3只宽基ETF(沪深300、中证500、中证1000)
- 动量因子:基于加权线性回归计算年化收益率和R²判定系数
- 轮动逻辑:持有动量最强的宽基ETF
- 风险控制:无止损,依靠轮动换仓
| 代码 | 名称 | 特点 |
|---|---|---|
| 510300.XSHG | 沪深300ETF | 大盘股 |
| 510500.XSHG | 中证500ETF | 中盘股 |
| 512100.XSHG | 中证1000ETF | 小盘股 |
文件:Low_Valuation_Stock_Selection.py
基于基本面指标筛选低估值、财务稳健的股票,每季度调仓一次。
- 市净率 < 2:筛选估值较低的股票
- 负债比例 < 市场平均值:财务更稳健,抗风险能力强
- 流动比率 > 1.2:流动资产至少是流动负债的1.2倍
- 每年四次调仓:1月、4月、7月、10月
- 每月20日执行
- 最大持仓10只股票,等权重分配资金
| 参数 | 默认值 | 说明 |
|---|---|---|
stockindex |
000905.XSHG | 选股范围(中证500成分股) |
stocknum |
10 | 最大持仓数量 |
Transfer_date |
[1,4,7,10] | 调仓月份 |
文件:dividend_enhanced_strategy.py
基于红利100指数的增强型选股策略,月初调仓,持有30只股票。
- 选股范围:红利100指数成分股
- 选股因子:股息率、盈利能力、财务稳健性
- 调仓频率:每月初调仓
- 持仓数量:30只股票等权持有
- 价值投资理念,筛选高股息股票
- 分散持仓,降低单一股票风险
- 月度调仓,平衡交易成本与策略效果
文件:small_cap.py
小市值因子轮动策略,每5个交易日调仓,持有流通市值最小的5只股票。
- 选股范围:主要指数成分股(沪深300、中证500、中证1000等)
- 核心因子:流通市值最小的股票
- 调仓频率:每5个交易日
- ST股票过滤
- 停牌股票过滤
- PE > 0(盈利公司)
- 上市满365天
- 负债率 < 70%
- ROE > 5%
- 经营现金流 > 0
| 参数 | 默认值 | 说明 |
|---|---|---|
stock_num |
5 | 持仓数量 |
rebalance_days |
5 | 调仓周期 |
文件:rsrs_value_strategy.py
结合财务指标选股与RSRS择时信号,有开仓信号时持有股票,不满足时保持空仓。
- 选股:财务指标筛选优质股票
- 择时:RSRS(阻力支撑相对强度)择时信号
- 持仓:有开仓信号时持有10只股票,否则空仓
| 参数 | 默认值 | 说明 |
|---|---|---|
N |
18 | 统计周期 |
M |
1100 | 统计样本长度 |
stock_num |
10 | 持仓股票数 |
- 选股与择时结合,降低系统性风险
- 空仓机制保护,熊市回撤可控
文件:ah_premium_strategy.py
跨市场套利策略,利用A股与H股之间的价差进行套利。
- 当A股相对H股存在折价时(h_a_comp较低),买入A股标的
- 持有A股直至A股相对H股溢价过高(h_a_comp > 阈值)时平仓
使用聚宽内置的 finance.STK_AH_PRICE_COMP 表
- 较低:A股相对H股便宜(买入机会)
- 较高:A股相对H股贵(卖出信号)
- AH股价差可能长期存在,不一定会收敛
- 汇率波动会影响实际收益
- 港股通交易有额度限制和T+0规则差异
文件:get_ah_premium_data.py
选择AH溢价率最低的股票,基于溢价收敛理论进行投资。
- AH溢价率排序:按溢价率升序排序(溢价最低的股票优先)
- 停牌过滤:排除当前处于停牌状态的股票
- ST过滤:排除ST股票
- 退市过滤:排除名称中包含"退"字的股票
- 数量限制:选择前5只股票
| 参数 | 默认值 | 说明 |
|---|---|---|
stocknum |
5 | 持仓数量 |
| 调仓频率 | 每周一9:30 | |
| 资金分配 | 等权重 | 每只股票1/5 |
- AH股溢价收敛理论:同一公司的A股和H股在长期内价格应趋于一致
- 价值投资原理:选择相对估值较低的股票
文件:bank_rotation.py
始终持有沪深300银行指数成分股中市净率最低的股份制银行。
- 选股范围:沪深300银行指数成分股(399951.XSHE)
- 选股条件:市净率最低的股份制银行
- 调仓频率:每周检查一次
- 极简策略,逻辑清晰
- 低估值银行股,安全边际高
- 低频调仓,交易成本低
文件:pingan_bank_strategy.py
简单的单股策略示例,基于5日均线进行平安银行(000001.XSHE)的交易。
- 标的:平安银行(000001.XSHE)
- 信号:当前价格与5日均线比较
- 买入:价格上穿5日均线
- 卖出:价格下穿5日均线
- 教学示例策略
- 逻辑简单易懂
- 适合学习聚宽API
| 后缀 | 交易所 | 英文全称 | 特点 |
|---|---|---|---|
| XSHG | 上海证券交易所 | Shanghai Stock Exchange | 主板、科创板(688开头) |
| XSHE | 深圳证券交易所 | Shenzhen Stock Exchange | 主板、创业板(300开头) |
| 代码开头 | 交易所 | 类型 |
|---|---|---|
| 60xxxx | 上海 | 主板 |
| 688xxx | 上海 | 科创板 |
| 00xxxx | 深圳 | 主板/中小板 |
| 30xxxx | 深圳 | 创业板 |
| 代码开头 | 交易所 | 类型 |
|---|---|---|
| 51xxxx | 上海 | ETF基金 |
| 58xxxx | 上海 | 科创板ETF |
| 15xxxx | 深圳 | ETF基金 |
| 16xxxx | 深圳 | ETF基金 |
| 代码 | 名称 | 特点 |
|---|---|---|
| 510300.XSHG | 沪深300ETF | 大盘价值股 |
| 510500.XSHG | 中证500ETF | 中盘股 |
| 512100.XSHG | 中证1000ETF | 小盘股 |
| 562660.XSHG | 中证2000ETF | 微盘股 |
| 159915.XSHE | 创业板ETF | 成长股 |
| 588000.XSHG | 科创50ETF | 科创板龙头 |
| 512890.XSHG | 红利低波ETF | 红利策略 |
python_jointquant/
├── ETF_rotation_v1.py # ETF动量轮动策略(完整版)
├── ETF_simple_rotation.py # ETF简单轮动策略
├── three_index_rotation.py # 三宽基动量轮动策略
├── Low_Valuation_Stock_Selection.py # 低估值选股策略
├── dividend_enhanced_strategy.py # 红利增强策略
├── small_cap.py # 小市值轮动策略
├── rsrs_value_strategy.py # 价值选股与RSRS择时策略
├── ah_premium_strategy.py # AH溢价套利策略
├── get_ah_premium_data.py # 低AH溢价选股策略
├── bank_rotation.py # 银行股轮动策略
├── pingan_bank_strategy.py # 平安银行简单策略(示例)
├── jq_api_reference.md # 聚宽API速查手册
└── README.md # 本说明文件
- 登录 聚宽量化平台
- 新建策略,复制对应策略代码
- 选择回测时间段和初始资金
- 点击运行回测
如需实盘交易,需配置实盘交易接口,部分策略需要取消注释:
from redistrade import *本项目使用 Python 3.12,推荐使用 uv 管理虚拟环境:
# 创建虚拟环境
uv venv
# 激活虚拟环境
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windows
# 安装依赖(如需本地测试)
uv pip install pandas numpy注意:聚宽策略代码需要在聚宽平台上运行,本地环境主要用于代码编辑和语法检查。
- 复制现有策略模板作为起点
- 修改
initialize(context)函数设置策略参数 - 实现选股/择时逻辑
- 设置定时任务(
run_daily/run_weekly/run_monthly) - 在聚宽平台回测验证
def initialize(context):
# 设置基准
set_benchmark('000905.XSHG')
# 使用真实价格
set_option('use_real_price', True)
# 设置交易成本
set_order_cost(OrderCost(
close_tax=0.001,
open_commission=0.0003,
close_commission=0.0003,
min_commission=5
), type='stock')
# 设置滑点
set_slippage(FixedSlippage(0.002))
# 定时任务
run_daily(my_trade, time='14:50')
def my_trade(context):
# 在此实现交易逻辑
pass| 文档 | 说明 |
|---|---|
| jq_api_reference.md | 聚宽API速查手册 |
| 聚宽官方文档 | 聚宽API官方文档 |
| 聚宽数据字典 | 财务数据字段说明 |
| 类型 | 股票 | ETF |
|---|---|---|
| 买入佣金 | 0.03% | 0.02% |
| 卖出佣金 | 0.03% | 0.02% |
| 印花税 | 0.1%(仅卖出) | 无 |
| 最低佣金 | 5元/笔 | 5元/笔 |
- 历史表现不代表未来收益
- 量化策略存在模型风险和过拟合风险
- 动量策略在趋势反转时可能产生较大回撤
- 建议配合其他策略使用,实现策略组合
- 需定期监控策略表现,适时调整参数