研究型系统 不做实盘下单 v1.0

A股研究型量化交易系统

价值因子选股 × 多维度择时打分 × 胜率统计 × 双周回测
2026-08-21
Wallstreet小白 × Sniper的AI实验室
📁 /root/quant-research/ 🐍 Python 3.8+ 📊 12个模块 ⏱️ 4个定时任务

一、系统架构总览

🏗️ 四大模块
模块1: 价值因子选股池 → 模块2: 多维度择时打分 → 模块3: 每日胜率统计 → 模块4: 双周回测评估
模块频率输入输出核心文件
价值因子选股池每月1日全A股行情+财报80只候选股pool_builder.py
多维度择时打分工作日16:10股票池+K线+消息BUY/HOLD/SELL信号signal_engine.py
每日胜率统计工作日16:30历史信号记录5/10/20日胜率stats_tracker.py
双周回测评估每14个交易日2年历史数据年化/回撤/夏普backtester.py
📂 文件结构
/root/quant-research/ ├── config.py # 全局配置(权重/阈值/参数) ├── pool_builder.py # 模块1:价值因子股票池 ├── signal_engine.py # 模块2:多维度择时打分 ├── macro_scorer.py # 模块2:宏观面评分 ├── news_scorer.py # 模块2:消息面评分 ├── stats_tracker.py # 模块3:每日胜率统计 ├── backtester.py # 模块4:双周回测 ├── main.py # 主调度入口(CLI) ├── utils/ │ ├── data_fetcher.py # 数据获取(腾讯API海外可用) │ ├── factor_utils.py # 因子标准化工具 │ └── technical_utils.py # 技术指标计算(12项) └── data/ ├── value_pool.json # 当前价值股票池 ├── daily_signals.json # 当日择时信号 ├── signal_log.json # 全量信号记录 ├── macro_daily.json # 每日宏观得分 └── backtest_result.json # 最新回测结果

二、模块1:价值因子初选股票池

🔧 硬性过滤条件
#条件阈值说明
F1市场范围沪深主板+科创+创业仅A股
F2ST/*ST全部剔除排除风险股
F3上市天数≥120个交易日排除次新股
F4日均成交额≥1亿元流动性保障
F5资产负债率≤90%排除高负债
F6扣非净利润非连续两年为负排除持续亏损
F7停牌/无报价当日无有效报价排除停牌
📊 价值因子定义与权重
价值综合得分 = EP×0.30 + PB×0.25 + 股息率×0.20 + FCF_Yield×0.15 + ROE×0.10
EP盈利收益率
30%
PB市净率
25%
股息率
20%
FCF Yield
15%
ROE
10%
因子计算公式方向标准化
EP1 / PE_TTM越高越好截面百分位排名0-100
PB总市值 / 归属净资产越低越好反向百分位排名
股息率近12月每股分红 / 股价越高越好截面百分位排名
FCF Yield自由现金流 / 总市值越高越好截面百分位排名
ROE归属净利润 / 加权净资产越高越好截面百分位排名
📌 行业约束:单一申万一级行业不超过候选池总数×20%(80只→每行业最多16只)

三、模块2:多维度交易择时打分

⚖️ 三维度权重
综合交易得分 = 技术面×0.55 + 宏观面×0.25 + 消息面×0.20
技术面(量价时空)
55%
宏观面
25%
消息面
20%
📈 技术面子指标(权重55%)
技术面得分 = T1×0.25 + T2×0.20 + T3×0.15 + T4×0.15 + T5×0.15 + T6×0.10
子指标权重核心计算评分逻辑
T1 均线系统25%MA5/MA18/MA60/MA120/MA250MA18站稳(+25) + 多头排列(+15) + MA18方向(±8)
T2 量价配合20%量比 + OBV趋势放量上涨(+20) / 缩量回调(+5) / 放量下跌(-15)
T3 波动率/布林15%布林位置 + RSI(14)超卖区(+10) / 超买区(-8)
T4 K线形态15%7种反转形态 + MACD早晨之星(+12) / MACD金叉(+10) / 黄昏之星(-12)
T5 支撑压力15%52周分位 + 风险收益比 + 斐波那契低位(+12) / RR>3(+15) / 0.618回撤(+8)
T6 趋势结构10%趋势强度 + 加速度 + ADX强上升趋势(+8) / 趋势加速(+8)
🌍 宏观面指标(权重25%,全池统一)
宏观得分 = M1×0.30 + M2×0.25 + M3×0.20 + M4×0.15 + M5×0.10
指标权重数据源评分标准
M1 沪深300估值分位30%沪深300 PE_TTM历史<20%→95分 / >80%→15分
M2 北向资金流向25%近20日累计净流入>300亿→90分 / <-300亿→10分
M3 国债收益率变化20%10年期国债60日ΔΔ<-30bp→85分 / Δ>+30bp→20分
M4 PMI15%制造业PMI>52→85分 / <48→15分
M5 市场情绪10%成交额活跃度比值1.5-2.0→75分
📰 消息面评分(权重20%,个股独立)
类型事件分值衰减
正向业绩预增/扭亏+125日衰减50%
重大中标/战略合作+1010日衰减50%
股份回购+810日衰减50%
行业重大利好+815日衰减50%
高管增持+65日衰减50%
分红预案(股息率>3%)+6永久
机构密集调研+5永久
负向业绩预减/首亏/续亏-1510日衰减50%
财报非标审计意见-15永久
限售股解禁(30天内)-12解禁日后恢复
监管处罚/立案-12永久
大股东减持-1010日衰减50%
行业重大利空-1015日衰减50%
质押比例>70%-8永久
消息面得分 = max(0, min(100, 50 + Σ(单次分值 × 衰减系数))) 衰减系数 = max(0.5, 1 - 距今天数 / 衰减周期)
🎯 信号阈值
看多信号 (BUY)
≥70
综合交易得分
中性/观望 (HOLD)
40-69
不操作
看空/回避 (SELL)
<40
回避或离场

四、模块3:每日胜率统计

📊 统计输出字段
字段说明
total_signals历史信号总数
buy_signals历史看多信号数
open_positions当前持仓中信号数
win_rate_5d / 10d / 20dN日上涨概率(%)
avg_return_5d / 10d / 20dN日平均收益(%)
profit_loss_ratio_NdN日盈亏比
sample_count_NdN日有效样本数
score_groups按得分分组统计(high/mid/low)

五、模块4:双周回测评估

🔄 回测参数
参数值说明
回测周期最近2年约500个交易日
初始资金100万元虚拟资金
单票仓位上限5%最多20只
最大持仓天数60天超期强制平仓
止损线8%单票浮亏>8%平仓
手续费万三(单边)买卖各收
印花税千一(卖出)仅卖出
滑点万二每笔
📈 回测评估指标
年化收益率
核心
最大回撤
核心
夏普比率
核心
Calmar比率
核心
胜率
核心
盈亏比
核心
附加:信号质量分析 / 维度归因(IC值) / 失效场景识别 / 权重调整建议

六、Cron定时任务

⏰ 调度配置
任务频率时间Job ID
月度股票池更新每月1日09:00 BJTf39d9eac0fe6
每日全流程工作日16:10 BJT4b8e43bdb12d
双周回测每14天10:00 BJT922fb0e54928
📌 所有任务输出通过飞书推送

七、系统潜在缺陷与风险

⚠️ 已知限制

1
截面百分位排名的行业偏差 — PB/EP跨行业统一排序,银行股天然PB低会霸榜。缓解:行业约束20%上限。
2
消息面量化精度有限 — 关键词匹配无法准确判断消息力度和预期差。缓解:衰减机制+正负标签分离。
3
宏观指标滞后性 — PMI月度发布,宏观面变化缓慢。缓解:权重仅25%,不主导个股决策。
4
价值因子的周期性 — 成长股行情中价值因子可能持续失效。缓解:价值池仅提供候选,择时信号可过滤。
5
回测过拟合风险 — 2年数据可能过度拟合特定环境。缓解:每两周滚动回测+样本外验证。
6
海外服务器数据源限制 — akshare的SSE/SZSE API不可用。缓解:已用腾讯API替代,部分宏观数据用默认值。
7
单票5%仓位的局限 — A股涨跌停限制下,5%仓位贡献有限。缓解:通过信号阈值自然控制集中度。
8
流动性冲击未建模 — 小市值股票实际建仓有冲击成本。缓解:F4过滤日均成交额≥1亿。

八、使用指南

💻 命令行接口
cd /root/quant-research # 查看帮助
python3 main.py --help # 构建价值股票池(月度)
python3 main.py pool # 每日全流程(宏观→信号→统计)
python3 main.py daily # 单独运行各模块
python3 main.py macro     # 宏观面评分
python3 main.py signal    # 择时打分
python3 main.py stats     # 胜率统计
python3 main.py backtest  # 双周回测
python3 main.py list      # 查看股票池
python3 main.py status    # 系统状态