当前位置: 首页 > news >正文

A股量化,单策略真的不够用了:我开源了一个双策略自动切换框架

一、为什么做单策略量化的人,最后都沉默了

做 A 股量化有个很真实的困境:

  • 趋势策略在 2020 年白马行情里赚麻了,到了 2023 年震荡市,回撤 30% 起步。
  • 均值回归策略在震荡市里高抛低吸很爽,遇到 2024 年 9 月底那种逼空行情,直接空仓踏空。

单策略的本质是押注市场永远配合你。但 A 股的市场风格切换,比变脸还快。

所以我一直在想:能不能让程序自己判断"现在是什么市",然后自动切换策略?

二、Dual-Strategy Quant 的设计思路

这个项目的核心就三层:

1. 行情雷达(Market Radar)

不是看大盘涨跌,而是给市场环境打分(0-100):

维度

权重

说明

趋势状态(均线+ADX)

40%

判断多头/空头/震荡

波动率分位数

25%

低波动加分,高波动减分

量价关系健康度

20%

价升量增 vs 放量滞涨

市场情绪

15%

量比与趋势确认

评分映射:

  • 70-100:动量趋势策略(抓主升浪)
  • 40-69:均值回归策略(高抛低吸)
  • 0-39:空仓或轻仓(保命)

2. 双策略独立运行

  • 策略一:均值回归— 布林带+量能确认,震荡市高胜率(55-65%)
  • 策略二:多因子动量— 价格动量+趋势强度+成交量确认,趋势市高盈亏比(2:1~3:1)

两条策略逻辑完全独立,互不干扰。

3. 因子引擎(Factor Engine)

这是基础设施,提供:

  • 100+ 技术指标(MA, RSI, MACD, KDJ, BOLL, ATR...)
  • 类 SQL 的因子表达式:close < BOLL(close, 20, 2)[2]
  • 逐日回测 + 参数网格扫描

三、一个 YAML 就能跑回测

不需要写 Python,配个 YAML 就能自定义策略:

name: "我的RSI策略"
capital: 100000
start_date: "20260101"
select_buy:
- "RSI(close, 14) < 30"
- "volume > TS_MEAN(volume, 5) * 1.5"
buy_at_least_count: 2
select_sell:
- "RSI(close, 14) > 70"
sell_at_least_count: 1
order_by_signal: "RETURNS(close, 5)"
order_by_topK: 5
hold_days_max: 10
loss_stop_pct: -5.0

然后一行命令:

python scripts/run_strategy.py --config config/my_strategy.yaml

四、技术栈与项目结构

  • Python 3.8+,依赖极简(akshare + pandas + numpy + pyyaml)
  • 数据源支持 akShare + 东方财富,带 SQLite 本地缓存和降级策略
  • 自动过滤科创板、创业板、北交所、ST 股

dual-strategy-quant/
├── config/ # YAML 策略配置
├── src/
│ ├── factors/ # 因子引擎(核心)
│ ├── strategies/ # 双策略封装
│ ├── radar/ # 行情雷达
│ ├── backtest/ # 回测引擎 + 报告
│ └── database.py # SQLite 缓存
├── scripts/
│ ├── run_strategy.py # 回测入口
│ └── run_param_scan.py # 参数网格扫描

五、免责声明(重要)

⚠️本项目仅供学习研究,不构成任何投资建议。股市有风险,投资需谨慎。

回测不等于实盘,任何框架都无法预测黑天鹅。

六、为什么开源

做这个框架花了不少业余时间,但一个人的思路总有盲区。

我想把它开源出来,看看社区里有没有同样在做 A 股量化的朋友,一起完善:

  • 行情雷达的评分权重是否合理?
  • 双策略切换的阈值是否需要动态调整?
  • 能不能加入更多数据源(如 tushare、jqdata)?

如果你也在做 A 股量化,或者对因子引擎的设计感兴趣,欢迎来仓库交流。

👉 https://github.com/chenhe81/dual-strategy-quant

http://www.gsyq.cn/news/1602618.html

相关文章:

  • 星皓 MDM.Plus 是什么?面向手机租赁和企业设备管理的一站式 MDM 解决方案
  • 5分钟零基础入门:Kafka-UI可视化集群管理终极指南
  • 技术写作的价值与技巧
  • Kafka集群管理太复杂?这款开源Web UI让你5分钟上手
  • Jellyfin Bangumi插件完整指南:打造智能动漫库的终极方案
  • 3分钟掌握B站缓存视频转换:m4s转MP4完整教程
  • LeetCode 287. 寻找重复数:从直觉到 Floyd 判圈的完整推导
  • Python的__init_subclass__验证
  • 操作系统内存管理
  • 猫抓:如何解决网页视频无法下载的三大难题?
  • 哈夫曼编码和香农-范诺编码的性能对比 P124302171陈新阳
  • 欺诈检测化技术行为分析模型与实时规则引擎
  • Bitget发布Web3人才报告:54%求职者受困「经验门槛」,AI与区块链融合成最热职业方向
  • 深度掌控AMD Ryzen:专业级SMU调试工具完全指南
  • TestDisk终极指南:5步快速恢复丢失分区与数据
  • Paperclip - 多Agent编排管理平台详细介绍
  • Hermes - AI Agent 运行时框架详细介绍
  • 零食折扣店收银系统哪个牌子好?扫码快、上手简单才是关键
  • esp32开发与应用(esp和wch芯片的配合)
  • AFE5808A超声模拟前端芯片ADC与VCA寄存器配置实战指南
  • 为什么选择OmenSuperHub?一个免费开源工具彻底解决惠普游戏本性能限制问题
  • Nginx从入门到精通:一文搞懂这款高性能Web服务器的核心原理与实战配置
  • 完成发射班的焊接及调试
  • 【Flutter零基础入门 | Day03】常用功能与滚动组件
  • 安全组网建设怎么选
  • Burp Suite Repeater实战指南:HTTP请求精细调试与渗透测试技巧
  • 推荐系统基础算法简介
  • 【RuoYi-Vue-Plus】源码探秘:OSS配置从数据库到Redis的缓存同步机制
  • Win11Debloat:免费快速的Windows系统优化终极方案
  • Qt 铁甲阅读器-搜索