trading/doc_08_personal_investor_gu...

18 KiB
Raw Blame History

个人投资者量化交易实操指南

从 Demo 到实盘的完整路径

定位:本文档基于对整个 Demo 系列的代码审计和策略评估,为个人投资者回答三个核心问题——做什么策略、怎么做策略、用什么平台做。
前置阅读:建议已通读完 7 篇 Demo 后阅读本文。
目标读者:有 Python 基础的量化入门者,关注 A 股实操。


目录

  1. 代码库总览与知识体系
  2. ETF 轮动 Demo 深度评估
  3. 个人投资者的现实策略频谱
  4. 中低频策略的核心范式
  5. 情绪因子与突发事件量化
  6. 从 Demo 到实盘:平台与工具链
  7. 推荐学习与实践路径

1. 代码库总览与知识体系

1.1 项目定位

这是一个A 股量化交易教学 Demo 项目,定位为零基础入门到中级的渐进式学习系列。项目以纯 Python + numpy/pandas/scipy/matplotlib 构建,通过合成模拟数据演示完整的量化投研工作流。

1.2 七篇递进式模块

序号 文件 主题 核心技能
1 quant_data_pipeline_demo.py (920行) 数据管道 价格复权、收益计算、缺失值处理、异常值检测(MAD/Z-score/Winsorize)、涨跌停标记、交易日历对齐、DataPipeline 类
2 quant_strategy_backtest_demo.py (912行) 策略回测 SMA/EMA/RSI/MACD/Bollinger Band 技术指标、双均线策略、RSI 均值回归、向量化回测引擎、绩效指标(Sharpe/Sortino/Calmar/Win Rate/Profit Factor)、滚动前向验证
3 quant_event_driven_backtest_demo.py (1532行) 事件驱动回测 事件队列架构(Market/Signal/Order/Fill 四事件)、五大组件解耦(DataHandler/Strategy/Portfolio/SimulatedBroker/BacktestEngine)、滑点+佣金+最低佣金模型、与向量化回测的精确对比
4 quant_alpha_factor_demo.py (1023行) Alpha 因子研究 隐藏因子生成模型、5 因子构建(MOM/REV/LVOL/BAB/ILLIQ)、三段预处理(去极值→Z-score→市值中性化)、IC/ICIR 分析、五分位分层回测、等权与 IC 加权因子合成、多空组合
5 quant_portfolio_optimization_demo.py (950行) 组合优化 Ledoit-Wolf 收缩协方差、有效前沿、5 策略对比(等权/MinVar/MaxSharpe/RiskParity/Black-Litterman)、带行业约束+换手率约束的优化、滚动回测
6 doc_06_astock_practice_guide.md A 股实盘指南 Demo 到实盘的差距清单、A 股特殊规则(涨跌停/T+1/融券限制/印花税)、回测七大陷阱(前视偏差/幸存者偏差/过拟合等)、风险管理、工具推荐
7 quant_etf_rotation_demo.py (849行) ETF 轮动 相对动量轮动、双动量策略(含国债 ETF 避险)、A 股交易成本模型、持仓热力图、换手率分析

1.3 架构特点

  • 合成数据驱动:全部使用几何布朗运动/因子模型生成模拟价格,无需外部数据源即可运行
  • 纯数值计算栈:依赖仅 numpy/pandas/scipy/matplotlib/sklearn无量化框架依赖
  • 双语教学:代码注释中英文对照,函数 docstring 包含公式推导和直观解释
  • 可视化输出:每个脚本生成对应的 PNG 图表,共 6 张(约 3MB
  • 教学级代码:结构清晰但非生产级——缺少错误处理、性能优化、模块间复用

2. ETF 轮动 Demo 深度评估

2.1 代码审计结论

quant_etf_rotation_demo.py 是系列第 7 篇,定位为"入门者可快速用于 A 股实战的策略模板"。以下是分维度评估:

做得好的方面

  1. 策略设计务实。 选择 ETF 轮动而非个股选股——ETF 规避了个股黑天鹅(财务造假、退市等),对个人投资者远比 Alpha 选股更可行。双动量策略在熊市自动切换至国债 ETF 避险,契合 A 股"牛短熊长"的特征。

  2. 成本模型贴近 A 股实情。 AShareCostModel 区分了买入成本(佣金+滑点)和卖出成本(佣金+滑点+印花税),双边合计约 0.22%,年化约 2.6% 的成本拖拽是实盘中不可忽视的数字。

  3. 多窗口动量合成减少过拟合。 使用 12-1、6-1、3-1 三个月度动量窗口的等权合成,比固定单一窗口更稳健。

  4. 持仓热力图信息密度高。 一眼就能看出策略何时从行业 ETF 切换到国债 ETF避险阶段以及哪些行业被频繁选中。

  5. 代码结构清晰。 数据生成、因子计算、回测引擎、绩效评估四个模块分离干净,通过 strategy 参数切换三种策略避免了代码重复。

需要改进的方面

问题 严重程度 说明
合成数据过于理想化 A 股行业 ETF 普遍成立于 2019 年后,历史不足 6 年。Demo 设定的收益/波动参数与真实情况可能存在大幅偏差。合成数据的回测结果数字不可直接采信
动量崩溃风险未量化 文档提到了动量崩溃,但代码中无专门分析场景。趋势反转当月是最危险的时刻
top_k=3 缺乏敏感性分析 选 2 只和选 4 只的结果可能差异巨大,未展示参数稳健性
再平衡日期未考虑日历效应 A 股月末/季末存在基金调仓压力,与月中微观结构不同
双动量绝对阈值=0 是最简设定 阈值设为无风险利率或滚动均线可能更优
无统计显著性检验 未判断双动量是否显著优于等权基准

2.2 总体评价

这是一篇质量不错的 ETF 轮动教学 Demo——策略逻辑清晰、成本模型务实、图表信息量大。适合作为入门者理解"动量轮动"概念的起点。但它仍然是教学级而非生产级代码

如果要在 A 股实盘使用这个策略,第一步是用 AKShare/Tushare 拉取真实 ETF 日线数据替换合成数据,重新跑一遍——合成数据给的回测结果,一个字都不要信。


3. 个人投资者的现实策略频谱

3.1 按交易频率分层的可行性

频率 持仓周期 个人可行性 瓶颈
高频 (HFT) 毫秒~秒 不可行 需要 colocation、FPGA、专线年成本百万级
日内短线 分钟~小时 很难 需要极低延迟、全职盯盘、A 股 T+1 限制做空
中频 天~周 可行 数据可得,决策时间充裕,成本可控
低频 月~季度 最可行 成本极低,逻辑清晰,适合业余管理

结论:周频或月频换仓的策略是个人投资者的甜点区——交易成本可控,不需要盯盘,决策可以批量处理。

3.2 不同资金量级的推荐策略

资金量 推荐策略 标的 换仓频率
< 10万 ETF 轮动(动量+估值) 行业 ETF + 国债 ETF 月度
10-50万 ETF 轮动 + 股债配置 行业 ETF + 宽基 ETF + 国债 ETF + 可转债 ETF 月度/季度
> 50万 多因子选股 + 资产配置 + 风控层 个股(50-100只池) + ETF + 固收 周度/月度

4. 中低频策略的核心范式

中低频策略可以归纳为三类,本项目的 Demo 已经覆盖了其中两类。

4.1 因子选股 / ETF 轮动(截面策略)

每月/每周对候选池排序,买入排名最高的 N 只,卖出跌出排名的。信号来源包括:

因子类型 代表性因子 A 股有效性证据
动量 (Momentum) 过去 12-1 个月收益 中等,行业层面比个股层面更有效
价值 (Value) PE/PB 分位数 A 股中低 PE 策略长期有效
质量 (Quality) ROE、毛利率稳定性 中等偏强
低波动 (Low Vol) 60/120 日已实现波动率 中等A 股低波异象存在但有争议
流动性 (Liquidity) Amihud 非流动性指标 较弱,小市值拥挤

实际运行流程:每月最后一个交易日收盘后 → 计算因子排名 → 生成调仓信号 → 次日开盘执行 → 持有到下次调仓。

4.2 资产配置 / 风险平价(时序策略)

不是选哪只股票,而是决定股票 vs 债券 vs 商品各配多少。常见做法是每季度再平衡一次,回归目标权重。代表模型:

  • 风险平价 (Risk Parity):桥水全天候策略的理论基础
  • Black-Litterman贝叶斯框架混合市场均衡 + 主观观点

4.3 宏观择时(时序策略)

根据宏观指标决定整体仓位。几组实用指标:

  • 利率趋势10 年期国债收益率方向)→ 利率下行利好股票
  • 信贷脉冲(社融增速变化)→ 信贷扩张期股票表现好
  • CPI 方向 → 高通胀环境利好商品/价值股

这类策略一个月看一次数据即可,和日常生活节奏完全兼容。


5. 情绪因子与突发事件量化

5.1 情绪因子:可以量化,而且是重要的 Alpha 来源

Demo 中用的价格/成交量/波动率都是"硬数据",但"软数据"在很多场景下提供了独立于价格的预测信息。

数据源 因子示例 数据获取
北向资金流向 每日净买入额及其滚动均值 沪深港通公开数据AKShare 直接获取
融资融券余额 融资余额变化率(反映散户杠杆情绪) 交易所每日发布AKShare 直接获取
涨停/跌停家数 市场宽度指标(涨跌比) 全市场统计,可自行计算
成交量比率 放量/缩量程度,量价背离 价格数据可算
50ETF 期权隐含波动率 中国版 VIX 恐慌指标 期权数据 API
龙虎榜数据 机构 vs 游资买卖方向 交易所盘后披露
股指期货升贴水 基差率反映市场多空情绪 CFFEX 数据
新闻文本情绪(进阶) NLP 对财经新闻标题做情感打分 大模型 API / 本地模型

务实建议:个人投资者从北向资金流向融资余额变化率两个情绪因子起步——数据免费、逻辑直观、A 股文献支持多。NLP 新闻分析属于锦上添花,初期不必碰。

5.2 突发事件的量化处理

突发事件(政策发布会、国际冲突、突发新闻)很难用传统量价因子捕捉,但有三种处理思路:

  1. 事后过滤而非事前预测(最务实):不试图预测事件发生,而是在事件发生后检测异常波动并自动暂停策略。本项目 quant_data_pipeline_demo.py 中的涨跌停标记就是一种"flag and skip"模式——标的触发涨跌停 → 标记 → 策略层跳过该标的。

  2. 波动率缩放:当已实现波动率突然放大(说明有事件冲击),自动降低仓位。实现简单、效果扎实:

    目标仓位 = 基础仓位 × (目标波动率 / 近期已实现波动率)
    
  3. 文本情绪监控:用大模型对财经新闻标题做情感分析,构建日频情绪指数。当前有大模型后门槛大幅降低——可以用本地模型批量打分。属于"另类数据因子"的范畴,初期可选。


6. 从 Demo 到实盘:平台与工具链

6.1 三条实现路径

Demo 代码在本地跑跑看图表是"研究阶段"。实盘涉及三个层次:

┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│  研究平台     │ ──▶ │  执行平台     │ ──▶ │  券商终端     │
│  因子→回测    │     │  信号→订单     │     │  成交回报     │
└──────────────┘     └──────────────┘     └──────────────┘

路径一Python 开源框架 + 券商 API最主流推荐

框架 定位 特点
vnpy 全栈交易框架 对接国内券商 CTP/XTP 接口,支持 A 股/期货/期权实盘,社区活跃
Backtrader 回测为主 灵活的事件驱动架构,实盘对接需自行开发
Qlib (微软) 因子研究 AI 驱动的因子挖掘和模型训练,适合因子研究阶段
Zipline-Reloaded 回测引擎 事件驱动架构完善,但 A 股生态较弱

典型工作流:

  1. 在 Qlib 或自定义代码中做因子研究 ← 你现在的阶段
  2. 用 Backtrader 做精细回测(含滑点/冲击成本模型)
  3. 用 vnpy + 券商仿真环境做模拟交易(纸交易,至少跑 1-2 个月)
  4. 确认策略行为正常后,接入小资金实盘(不是全仓!)
  5. 策略稳定运行 3-6 个月后,逐步增加资金

路径二:在线量化平台(低门槛)

平台 特点
聚宽 (JoinQuant) 网页端写 Python 策略,内置回测 + 模拟交易,社区教程丰富
米筐 (RiceQuant) 类似聚宽,数据质量和覆盖更优但偏机构
掘金 (MyQuant) 支持本地化部署 + 实盘,灵活度更高
BigQuant AI 导向,可视化拖拽搭建,适合不想写代码的投资者

优点:数据现成、回测环境标准、模拟交易一键启动。
缺点:策略代码运行在平台上,灵活性受限;实盘通常走指定券商。

路径三:券商自带量化终端

券商 平台 特点
华泰证券 MATIC 内置因子库 + 策略模板,适合入门
中泰证券 XTP 极速交易接口,面向程序化交易
国信证券 iQuant 类似聚宽的在线平台
中信建投 蜻蜓点金 量化策略商城模式

6.2 Demo 代码到实盘需要增补的模块

quant_etf_rotation_demo.py 为例,从 Demo 到可实盘运行,至少需要做:

步骤 内容 优先级
1. 替换数据源 合成数据 → AKShare/Tushare 真实 ETF 日线 必须
2. 接入交易日历 使用 exchange_calendars 或 A 股专用日历 必须
3. 信号与执行分离 run_rotation_backtest() 拆成"信号计算"+"订单执行" 必须
4. 仓位校验 检查涨跌停、停牌、流动性、最小交易单位 必须
5. 风控层 单只 ETF 最大仓位、最大回撤止损线、连续亏损暂停机制 强烈建议
6. 日志与告警 调仓清单输出、异常情况推送(企业微信/钉钉/邮件) 强烈建议
7. 模拟交易验证 在真实券商仿真环境跑 1-2 个月 强烈建议
8. 参数稳健性检验 对 top_k、回望期、再平衡频率做敏感性分析 建议
9. 绩效归因 Brinson 归因 / 因子归因,确认收益来源 进阶

7. 推荐学习与实践路径

7.1 推荐的策略选型(最可行的组合)

核心仓位:月频 ETF 行业轮动
   ├── 信号:动量 (12-1M) × 估值 (PE 分位数) 双信号过滤
   ├── 避险:绝对动量为负 → 切换至国债 ETF
   ├── 增强:北向资金流向 + 融资余额变化作为情绪因子
   └── 风控:波动率放大时自动减仓(波动率缩放)

再平衡频率:月度(每月最后一个交易日出信号,次日开盘执行)
预期年换手6-10 次双边
预期年化成本:约 1.5%-2.5%(含佣金+印花税+滑点)

7.2 分阶段学习路线

阶段 时间 目标 对应 Demo
① 概念建立 1-2 周 理解数据→信号→回测→优化的完整链条 全部 7 篇 Demo
② 数据实战 1 周 用 AKShare 拉取真实 ETF 数据,替换合成数据重新验证 Demo 1 + 7
③ 因子研究 2-4 周 在真实数据上计算因子 IC找到有效的因子组合 Demo 4
④ 回测验证 2-4 周 在 Backtrader/vnpy 中实现完整回测,含交易成本 + 参数敏感性 Demo 2 + 3
⑤ 模拟交易 1-2 月 在券商仿真环境中每日自动运行,记录所有交易和意外情况
⑥ 小资金实盘 3-6 月 用总资金的 10-20% 试跑,严格记录绩效
⑦ 规模扩大 持续 策略稳定后逐步加仓,持续监控绩效归因和风格漂移

7.3 最重要的提醒

如果一个策略你不能用三句话解释清楚为什么它会赚钱,就不要投钱进去。

量化策略的核心不是代码有多复杂,而是你理解策略赚的是谁的钱、在什么市场环境下会失效、最大可能亏损是多少

Demo 给你的是知识地图,不是提款机密码。实盘中最重要的是仓位管理和风险控制——一个夏普比率一般的策略配合严格的仓位纪律,远好于一个夏普很高的策略加上随意的主观干预。


附录:关键术语速查

术语 英文 含义
截面策略 Cross-Sectional Strategy 在同一时间点横跨多只股票比较和选择
时序策略 Time-Series Strategy 对单一资产做择时(何时进、何时出)
动量崩溃 Momentum Crash 趋势突然逆转导致动量策略大幅亏损
换手率 Turnover 组合中资产被替换的比例,越高成本越大
纸交易 Paper Trading 使用真实行情但虚拟资金进行模拟交易
前视偏差 Look-Ahead Bias 用"未来数据"做回测决策导致的虚假高收益
幸存者偏差 Survivorship Bias 只用当前存活的股票回测,忽略了已退市的股票
风格漂移 Style Drift 策略实际持仓偏离了其宣称的投资风格