AArcher / Quant ResearchEN

PROJECT ROADMAP / 06

完整项目路线图

直接同步中英文 README 的 A–R 任务表。它既是进度记录,也是后续研究范围的约束。

286全部任务
137完成
34部分完成
112未开始
3暂缓
完成部分完成未开始暂缓
A

项目结构与基础环境(1—15)

12 / 15 完成

+
  • 1

    整理项目结构

  • 2

    建立 `src/archer_factor_analyzer` package

  • 3

    配置 `pyproject.toml`

  • 4

    完成 editable install

  • 5

    建立 `data` 文件夹

  • 6

    建立 `graphy` 文件夹

  • 7

    建立 `test_main` 文件夹

  • 8

    建立 `data_source` 模块(当前数据接入位于 `data/ricequant_data.py`)

  • 9

    建立 `backtest` 文件夹

  • 10

    建立 `signal.py`

  • 11

    建立 `analyzer.py`(文件存在,总封装未完成)

  • 12

    建立 `report.py`

  • 13

    建立 `research` 文件夹

  • 14

    建立 `result` 文件夹并保存正式结果

  • 15

    建立 `cache` 文件夹

B

单因子分析最小闭环(16—36)

21 / 21 完成

+
  • 16

    `winsorize`

  • 17

    `standardize`

  • 18

    `apply_each_day`

  • 19

    `calculate_return`

  • 20

    `calculate_future_return`

  • 21

    `calculate_cumulative_return`

  • 22

    `calculate_momentum_factor`

  • 23

    `align_factor_and_return`

  • 24

    `calculate_ic`

  • 25

    `calculate_rank_ic`

  • 26

    `assign_quant_group`

  • 27

    `calculate_group_return`

  • 28

    `calculate_long_short_return`

  • 29

    `plot_rank_ic`

  • 30

    `plot_long_short_cumulative_return`

  • 31

    完成第一个正式动量因子研究脚本

  • 32

    跑出 IC mean

  • 33

    跑出 Rank IC mean

  • 34

    跑出 Rank ICIR

  • 35

    跑出 Q1—Q5 分组平均收益

  • 36

    跑出 Q5−Q1 多空累计收益图

C

基础指标增强(37—45)

7 / 9 完成

+
  • 37

    `calculate_icir`

  • 38

    `calculate_sharpe`

  • 39

    `calculate_drawdown`

  • 40

    `calculate_max_drawdown`(接口存在,返回值仍需修正)

  • 41

    `calculate_annual_return`

  • 42

    `calculate_annual_volatility`

  • 43

    `calculate_win_rate`

  • 44

    `calculate_summary_metrics`(接口存在,受 Max Drawdown 返回问题影响)

  • 45

    使用 momentum long-short 测试 summary metrics

D

RiceQuant / rqdatac 数据接入(46—72)

12 / 27 完成

+
  • 46

    确认 `rqdatac` 可以 import

  • 47

    确认 `rqsdk` 可以 import

  • 48

    建立 data source 初始化结构

  • 49

    建立 RiceQuant 数据模块

  • 50

    初始化 RiceQuant(当前依赖环境配置自动初始化)

  • 51

    获取指数成分股功能

  • 52

    获取价格数据功能(当前为 `get_stock_bars`)

  • 53

    获取行业数据

  • 54

    获取市值数据

  • 55

    数据模块保存缓存

  • 56

    数据模块读取缓存

  • 57

    拉取沪深 300 成分股

  • 58

    拉取沪深 300 三年日 K

  • 59

    整理成 `price_df`

  • 60

    验证 `price_df` 格式

  • 61

    拉取中证 500 成分股

  • 62

    拉取中证 500 三年日 K

  • 63

    整理中证 500 `price_df`

  • 64

    拉取行业分类

  • 65

    拉取市值

  • 66

    检查日期范围

  • 67

    检查股票数量

  • 68

    检查缺失值比例

  • 69

    检查整列全空股票

  • 70

    保存 `price_df` 到 cache

  • 71

    保存 `industry_df`

  • 72

    保存 `market_cap_df`

E

用 RiceQuant 真实数据重跑正式因子(73—88)

12 / 16 完成

+
  • 73

    建立真实数据动量研究入口(当前功能合并在正式研究脚本)

  • 74

    使用 RiceQuant 行情数据

  • 75

    计算 momentum 20 日因子

  • 76

    计算未来 5 日收益

  • 77

    去极值

  • 78

    标准化

  • 79

    输出真实数据 IC mean

  • 80

    输出真实数据 Rank IC mean

  • 81

    输出真实数据 ICIR

  • 82

    输出真实数据 Rank ICIR

  • 83

    输出 Q1—Q5 分组收益

  • 84

    输出 Q5−Q1 多空收益

  • 85

    输出 summary metrics

  • 86

    保存 Rank IC 图

  • 87

    保存 Q5−Q1 累计收益图

  • 88

    保存正式因子分析结果

F

信号生成模块(89—107)

10 / 19 完成

+
  • 89

    建立 `signal.py`

  • 90

    `generate_top_n_signal`

  • 91

    `generate_top_pct_signal`(功能包含在权重生成器中)

  • 92

    `generate_quantile_signal`

  • 93

    `generate_long_only_signal`(当前 Top 20% 权重为 long-only)

  • 94

    `generate_long_short_signal`

  • 95

    等权功能

  • 96

    因子值加权

  • 97

    生成 `weight_df`

  • 98

    每日调仓

  • 99

    5 日调仓

  • 100

    20 日调仓

  • 101

    生成第一个正式动量目标组合

  • 102

    单独的 `signal_df` 格式验证

  • 103

    `weight_df` 格式验证

  • 104

    调仓日权重和验证

  • 105

    非调仓日目标延续验证

  • 106

    未来数据检查与执行延迟

  • 107

    保存 `weight_df`

G

本地 RQAlpha 回测模块(108—130)

23 / 23 完成

+
  • 108

    建立 backtest package

  • 109

    建立正式 RQAlpha 回测流程(当前拆分为 runner + executor)

  • 110

    配置本地 RQAlpha

  • 111

    配置 bundle

  • 112

    确认本地运行

  • 113

    确认读取 A 股数据

  • 114

    设置 start date

  • 115

    设置 end date

  • 116

    设置 benchmark

  • 117

    设置 initial cash

  • 118

    设置 commission

  • 119

    设置 slippage

  • 120

    读取 `weight_df`

  • 121

    `init(context)` 初始化

  • 122

    `handle_bar()` 判断新目标

  • 123

    读取当日目标权重

  • 124

    执行目标组合(已升级为 smart portfolio + retry)

  • 125

    跑通第一个本地 RQAlpha 回测

  • 126

    提取 portfolio value

  • 127

    提取 daily return(可由 `portfolio.csv` 净值计算)

  • 128

    提取 positions

  • 129

    提取 trades

  • 130

    保存正式回测结果

H

回测结果分析(131—148)

7 / 18 完成

+
  • 131

    读取 RQAlpha daily return

  • 132

    读取 portfolio value / NAV

  • 133

    用自定义 summary metrics 分析回测日收益

  • 134

    用自定义 drawdown 分析 NAV

  • 135

    用自定义 max drawdown 分析 NAV

  • 136

    用自定义 Sharpe 分析 daily return

  • 137

    用自定义 annual return 分析 daily return

  • 138

    用自定义 annual volatility 分析 daily return

  • 139

    用自定义 win rate 分析 daily return

  • 140

    输出 Annual Return(RQAlpha summary)

  • 141

    输出 Annual Volatility(RQAlpha summary)

  • 142

    输出 Sharpe(RQAlpha summary)

  • 143

    输出 Max Drawdown(RQAlpha summary)

  • 144

    输出 Win Rate(RQAlpha summary)

  • 145

    输出 Final NAV / total value(RQAlpha summary)

  • 146

    保存回测摘要(当前文件名为 `summary.csv`)

  • 147

    保存回测净值(包含在 `portfolio.csv`)

  • 148

    保存回测日收益(可由 `portfolio.csv` 计算,尚未拆分独立文件)

I

交易成本与换手率(149—158)

0 / 10 完成

+
  • 149

    自定义 `calculate_turnover`

  • 150

    自定义 `calculate_average_turnover`

  • 151

    自定义 `calculate_daily_turnover`

  • 152

    自定义 `plot_turnover`

  • 153

    momentum 每日换手率(RQAlpha 已返回 avg daily turnover)

  • 154

    momentum 平均换手率(RQAlpha 已返回 turnover 指标)

  • 155

    比较 1/5/20 日调仓换手率

  • 156

    比较不同手续费假设

  • 157

    比较不同滑点假设

  • 158

    成本敏感性结论

J

图表系统(159—172)

2 / 14 完成

+
  • 159

    `plot_rank_ic`

  • 160

    `plot_long_short_cumulative_return`

  • 161

    `plot_drawdown`

  • 162

    `plot_factor_distribution`

  • 163

    `plot_ic_distribution`

  • 164

    `plot_group_mean_return`

  • 165

    `plot_group_cumulative_return`

  • 166

    `plot_turnover`

  • 167

    `plot_backtest_nav`(RQAlpha 默认图可用,自定义图未完成)

  • 168

    `plot_backtest_drawdown`(RQAlpha 默认图可用,自定义图未完成)

  • 169

    `plot_factor_comparison`

  • 170

    多因子 Rank IC 图

  • 171

    多因子累计收益图

  • 172

    所有图片自动保存到 `graphy`

K

Analyzer 总封装(173—188)

0 / 16 完成

+
  • 173

    建立 `analyzer.py`(文件存在,总封装未完成)

  • 174

    `analyze_single_factor`

  • 175

    自动 winsorize

  • 176

    自动 standardize

  • 177

    自动 future return

  • 178

    自动 IC

  • 179

    自动 Rank IC

  • 180

    自动 ICIR

  • 181

    自动 Rank ICIR

  • 182

    自动 group return

  • 183

    自动 long-short return

  • 184

    自动 summary metrics

  • 185

    自动画图

  • 186

    自动保存图

  • 187

    自动返回 result

  • 188

    自动打印 summary

L

多因子扩展与比较(189—206)

0 / 18 完成

+
  • 189

    reversal factor

  • 190

    volatility factor

  • 191

    low-volatility factor

  • 192

    quality momentum factor

  • 193

    volume momentum factor

  • 194

    moving-average factor

  • 195

    breakout factor

  • 196

    `analyze_multiple_factors`

  • 197

    自动循环多个 factor

  • 198

    比较 IC mean

  • 199

    比较 Rank IC mean

  • 200

    比较 ICIR

  • 201

    比较 Rank ICIR

  • 202

    比较 Sharpe

  • 203

    比较 Max Drawdown

  • 204

    factor comparison table

  • 205

    多因子 Rank IC 对比图

  • 206

    多因子累计收益对比图

M

Backtest 总封装(207—220)

2 / 14 完成

+
  • 207

    `run_rqalpha_backtest`(当前有正式 runner,但未封装成可复用函数)

  • 208

    传入 `weight_df` 路径

  • 209

    传入 start/end date

  • 210

    传入 initial cash

  • 211

    传入 benchmark

  • 212

    传入 commission

  • 213

    传入 slippage

  • 214

    自动运行 RQAlpha

  • 215

    自动提取 NAV

  • 216

    自动提取 daily return

  • 217

    自动提取 positions

  • 218

    自动提取 trades

  • 219

    获得 RQAlpha summary

  • 220

    自动保存 backtest result

N

Report 自动报告系统(221—230)

0 / 10 完成

+
  • 221

    建立 `report.py`

  • 222

    `generate_factor_report`

  • 223

    `generate_backtest_report`

  • 224

    保存 factor summary

  • 225

    保存 backtest summary

  • 226

    保存 factor comparison table

  • 227

    保存图片路径

  • 228

    自动输出 Markdown

  • 229

    自动输出 CSV

  • 230

    自动输出 PNG

O

完整主脚本(231—247)

0 / 17 完成

+
  • 231

    建立 `run_full_research.py`

  • 232

    初始化 RiceQuant

  • 233

    获取股票池

  • 234

    获取价格数据

  • 235

    获取行业数据

  • 236

    获取市值数据

  • 237

    计算 momentum factor

  • 238

    调用 single-factor analyzer

  • 239

    生成 signal

  • 240

    生成 weight

  • 241

    调用本地 RQAlpha

  • 242

    提取回测结果

  • 243

    计算回测 summary

  • 244

    画净值曲线

  • 245

    画回撤曲线

  • 246

    保存完整结果

  • 247

    生成完整报告

P

最终系统能力(248—258)

7 / 11 完成

+
  • 248

    支持本地 CSV 数据分析

  • 249

    支持 RiceQuant 数据分析

  • 250

    支持单因子分析

  • 251

    支持多因子比较

  • 252

    支持生成 long-only 目标信号

  • 253

    支持生成 `weight_df`

  • 254

    支持本地 RQAlpha 回测

  • 255

    支持手续费和滑点

  • 256

    支持换手率分析(RQAlpha 指标可用,自定义模块未完成)

  • 257

    支持自动画图(部分图可用,统一保存未完成)

  • 258

    支持自动输出完整报告

Q

历史时点动态股票池(259—276)

15 / 18 完成

+
  • 259

    建立 20 年历史交易日历(4,860 日)

  • 260

    下载历史时点沪深 300 成分

  • 261

    验证每日成分数量(298—300)

  • 262

    整理 1,457,940 条历史成分记录

  • 263

    汇总 904 只历史股票

  • 264

    建立分批下载和断点续传

  • 265

    下载 19 个价格批次

  • 266

    保存前复权 OHLCV 和成交额

  • 267

    建立历史成分 `member_mask`

  • 268

    建立全天停牌 `suspended_mask`

  • 269

    建立历史 ST `st_mask`

  • 270

    下载并验证证券上市信息

  • 271

    建立上市满 60 个交易日 `listing_age_mask`

  • 272

    建立最终 `eligible_mask`

  • 273

    记录并排除 2026-08-04 未完整行情边界

  • 274

    把 `eligible_mask` 接入正式因子研究

  • 275

    生成动态股票池 `weight_df`

  • 276

    运行动态股票池回测并与固定股票池比较

R

学习报告与展示网站(277—286)

7 / 10 完成

+
  • 277

    建立独立 `website/` 展示项目

  • 278

    展示研究流程和版本时间线

  • 279

    展示真实回测指标与净值图

  • 280

    展示动态股票池数据规模与资格规则

  • 281

    展示真实代码片段和目录讲解

  • 282

    建立中英文 `v0.2.0-dev` 更新报告

  • 283

    中英文 README 同步当前状态

  • 284

    自动把新研究结果生成网页条目

  • 285

    自动生成 Markdown 研究报告

  • 286

    评审后发布个人项目网站