Skip to content

Repository files navigation

聚宽量化策略集合

基于聚宽(JoinQuant)平台开发的量化交易策略合集,涵盖ETF轮动、股票选股、跨市场套利等多种策略类型。


策略列表

1. ETF 核心资产动量轮动策略

文件ETF_rotation_v1.pyETF_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% 双边佣金

2. 三宽基动量轮动策略

文件three_index_rotation.py

纯宽基动量轮动策略,无止损,无债券防御,简洁高效。

核心逻辑

  • 投资标的:3只宽基ETF(沪深300、中证500、中证1000)
  • 动量因子:基于加权线性回归计算年化收益率和R²判定系数
  • 轮动逻辑:持有动量最强的宽基ETF
  • 风险控制:无止损,依靠轮动换仓

ETF池

代码 名称 特点
510300.XSHG 沪深300ETF 大盘股
510500.XSHG 中证500ETF 中盘股
512100.XSHG 中证1000ETF 小盘股

3. 低估值选股策略

文件Low_Valuation_Stock_Selection.py

基于基本面指标筛选低估值、财务稳健的股票,每季度调仓一次。

选股条件

  1. 市净率 < 2:筛选估值较低的股票
  2. 负债比例 < 市场平均值:财务更稳健,抗风险能力强
  3. 流动比率 > 1.2:流动资产至少是流动负债的1.2倍

调仓规则

  • 每年四次调仓:1月、4月、7月、10月
  • 每月20日执行
  • 最大持仓10只股票,等权重分配资金

策略参数

参数 默认值 说明
stockindex 000905.XSHG 选股范围(中证500成分股)
stocknum 10 最大持仓数量
Transfer_date [1,4,7,10] 调仓月份

4. 红利增强策略

文件dividend_enhanced_strategy.py

基于红利100指数的增强型选股策略,月初调仓,持有30只股票。

核心逻辑

  • 选股范围:红利100指数成分股
  • 选股因子:股息率、盈利能力、财务稳健性
  • 调仓频率:每月初调仓
  • 持仓数量:30只股票等权持有

策略特点

  • 价值投资理念,筛选高股息股票
  • 分散持仓,降低单一股票风险
  • 月度调仓,平衡交易成本与策略效果

5. 小市值轮动策略

文件small_cap.py

小市值因子轮动策略,每5个交易日调仓,持有流通市值最小的5只股票。

核心逻辑

  • 选股范围:主要指数成分股(沪深300、中证500、中证1000等)
  • 核心因子:流通市值最小的股票
  • 调仓频率:每5个交易日

过滤条件

  • ST股票过滤
  • 停牌股票过滤
  • PE > 0(盈利公司)
  • 上市满365天
  • 负债率 < 70%
  • ROE > 5%
  • 经营现金流 > 0

策略参数

参数 默认值 说明
stock_num 5 持仓数量
rebalance_days 5 调仓周期

6. 价值选股与RSRS择时策略

文件rsrs_value_strategy.py

结合财务指标选股与RSRS择时信号,有开仓信号时持有股票,不满足时保持空仓。

核心逻辑

  • 选股:财务指标筛选优质股票
  • 择时:RSRS(阻力支撑相对强度)择时信号
  • 持仓:有开仓信号时持有10只股票,否则空仓

RSRS参数

参数 默认值 说明
N 18 统计周期
M 1100 统计样本长度
stock_num 10 持仓股票数

策略特点

  • 选股与择时结合,降低系统性风险
  • 空仓机制保护,熊市回撤可控

7. A股与H股溢价套利策略

文件ah_premium_strategy.py

跨市场套利策略,利用A股与H股之间的价差进行套利。

核心逻辑

  1. 当A股相对H股存在折价时(h_a_comp较低),买入A股标的
  2. 持有A股直至A股相对H股溢价过高(h_a_comp > 阈值)时平仓

数据来源

使用聚宽内置的 finance.STK_AH_PRICE_COMP

h_a_comp 解读

  • 较低:A股相对H股便宜(买入机会)
  • 较高:A股相对H股贵(卖出信号)

风险提示

  1. AH股价差可能长期存在,不一定会收敛
  2. 汇率波动会影响实际收益
  3. 港股通交易有额度限制和T+0规则差异

8. 低AH溢价选股策略

文件get_ah_premium_data.py

选择AH溢价率最低的股票,基于溢价收敛理论进行投资。

核心筛选条件

  • AH溢价率排序:按溢价率升序排序(溢价最低的股票优先)
  • 停牌过滤:排除当前处于停牌状态的股票
  • ST过滤:排除ST股票
  • 退市过滤:排除名称中包含"退"字的股票
  • 数量限制:选择前5只股票

参数设置

参数 默认值 说明
stocknum 5 持仓数量
调仓频率 每周一9:30
资金分配 等权重 每只股票1/5

理论依据

  • AH股溢价收敛理论:同一公司的A股和H股在长期内价格应趋于一致
  • 价值投资原理:选择相对估值较低的股票

9. 银行股轮动策略

文件bank_rotation.py

始终持有沪深300银行指数成分股中市净率最低的股份制银行。

核心逻辑

  • 选股范围:沪深300银行指数成分股(399951.XSHE)
  • 选股条件:市净率最低的股份制银行
  • 调仓频率:每周检查一次

策略特点

  • 极简策略,逻辑清晰
  • 低估值银行股,安全边际高
  • 低频调仓,交易成本低

10. 平安银行简单策略

文件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 深圳 创业板

ETF代码规则

代码开头 交易所 类型
51xxxx 上海 ETF基金
58xxxx 上海 科创板ETF
15xxxx 深圳 ETF基金
16xxxx 深圳 ETF基金

常用宽基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                       # 本说明文件

快速开始

聚宽平台运行

  1. 登录 聚宽量化平台
  2. 新建策略,复制对应策略代码
  3. 选择回测时间段和初始资金
  4. 点击运行回测

实盘交易

如需实盘交易,需配置实盘交易接口,部分策略需要取消注释:

from redistrade import *

开发指南

本地开发环境

本项目使用 Python 3.12,推荐使用 uv 管理虚拟环境:

# 创建虚拟环境
uv venv

# 激活虚拟环境
source .venv/bin/activate  # macOS/Linux
# .venv\Scripts\activate   # Windows

# 安装依赖(如需本地测试)
uv pip install pandas numpy

注意:聚宽策略代码需要在聚宽平台上运行,本地环境主要用于代码编辑和语法检查。

创建新策略

  1. 复制现有策略模板作为起点
  2. 修改 initialize(context) 函数设置策略参数
  3. 实现选股/择时逻辑
  4. 设置定时任务(run_daily/run_weekly/run_monthly
  5. 在聚宽平台回测验证

策略模板

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元/笔

风险提示

  1. 历史表现不代表未来收益
  2. 量化策略存在模型风险和过拟合风险
  3. 动量策略在趋势反转时可能产生较大回撤
  4. 建议配合其他策略使用,实现策略组合
  5. 需定期监控策略表现,适时调整参数

参考

About

聚宽量化策略集合 - ETF轮动、股票选股、跨市场套利等策略

Resources

Stars

10 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages