PROJECT ROADMAP / 06
Full Project Roadmap
Synchronized directly from the A–R task lists in the bilingual README files. It records progress and constrains the scope of future work.
AProject Structure and Environment (1-15)
12 / 15 complete
+
Project Structure and Environment (1-15)
12 / 15 complete
- 1
Organize repository structure
- 2
Create `src/archer_factor_analyzer` package
- 3
Configure `pyproject.toml`
- 4
Complete editable installation
- 5
Create `data`
- 6
Create `graphy`
- 7
Create `test_main`
- 8
Create data-source module (current access code is in `data/ricequant_data.py`)
- 9
Create backtest package
- 10
Create `signal.py`
- 11
Create `analyzer.py` (file exists; full wrapper incomplete)
- 12
Create `report.py`
- 13
Create `research`
- 14
Create a `result` directory and save formal outputs
- 15
Create `cache`
BMinimum Single-Factor Loop (16-36)
21 / 21 complete
+
Minimum Single-Factor Loop (16-36)
21 / 21 complete
- 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
Complete the first formal momentum research script
- 32
Produce IC mean
- 33
Produce Rank IC mean
- 34
Produce Rank ICIR
- 35
Produce Q1-Q5 mean returns
- 36
Produce the Q5-Q1 cumulative-return plot
CCore Metric Extensions (37-45)
7 / 9 complete
+
Core Metric Extensions (37-45)
7 / 9 complete
- 37
`calculate_icir`
- 38
`calculate_sharpe`
- 39
`calculate_drawdown`
- 40
`calculate_max_drawdown` (interface exists; return value needs correction)
- 41
`calculate_annual_return`
- 42
`calculate_annual_volatility`
- 43
`calculate_win_rate`
- 44
`calculate_summary_metrics` (affected by the custom Max Drawdown issue)
- 45
Test summary metrics on the momentum long-short series
DRiceQuant / rqdatac Integration (46-72)
12 / 27 complete
+
RiceQuant / rqdatac Integration (46-72)
12 / 27 complete
- 46
Verify `rqdatac` import
- 47
Verify `rqsdk` import
- 48
Establish data-source initialization structure
- 49
Establish the RiceQuant data module
- 50
Initialize RiceQuant (currently relies on environment-based automatic initialization)
- 51
Index-component access
- 52
Price-data access through `get_stock_bars`
- 53
Industry data
- 54
Market-cap data
- 55
Data-module cache save
- 56
Data-module cache load
- 57
Download CSI 300 constituents
- 58
Download three years of CSI 300 daily bars
- 59
Build `price_df`
- 60
Validate `price_df` schema
- 61
Download CSI 500 constituents
- 62
Download three years of CSI 500 daily bars
- 63
Build CSI 500 `price_df`
- 64
Download industry classifications
- 65
Download market capitalization
- 66
Validate date range
- 67
Validate security count
- 68
Inspect missing-value ratio
- 69
Check all-empty security columns
- 70
Cache `price_df`
- 71
Cache `industry_df`
- 72
Cache `market_cap_df`
ERerun the Formal Factor on RiceQuant Data (73-88)
12 / 16 complete
+
Rerun the Formal Factor on RiceQuant Data (73-88)
12 / 16 complete
- 73
Establish real-data momentum entry point (currently integrated into the formal research script)
- 74
Use RiceQuant price data
- 75
Calculate 20-day momentum
- 76
Calculate forward 5-day returns
- 77
Winsorize
- 78
Standardize
- 79
Produce real-data IC mean
- 80
Produce real-data Rank IC mean
- 81
Produce real-data ICIR
- 82
Produce real-data Rank ICIR
- 83
Produce Q1-Q5 returns
- 84
Produce Q5-Q1 return
- 85
Produce summary metrics
- 86
Save Rank IC plot
- 87
Save Q5-Q1 cumulative-return plot
- 88
Save formal factor-analysis results
FSignal Generation (89-107)
10 / 19 complete
+
Signal Generation (89-107)
10 / 19 complete
- 89
Create `signal.py`
- 90
`generate_top_n_signal`
- 91
`generate_top_pct_signal` (functionality is integrated into weight generation)
- 92
`generate_quantile_signal`
- 93
`generate_long_only_signal` (current Top 20% target is long-only)
- 94
`generate_long_short_signal`
- 95
Equal-weight logic
- 96
Factor-value weighting
- 97
Generate `weight_df`
- 98
Daily rebalance
- 99
Five-day rebalance
- 100
Twenty-day rebalance
- 101
Generate the first formal momentum target
- 102
Validate a separate `signal_df`
- 103
Validate `weight_df`
- 104
Validate rebalance-date weight sum
- 105
Validate target carry-forward
- 106
Check look-ahead protection and execution lag
- 107
Cache `weight_df`
GLocal RQAlpha Backtesting (108-130)
23 / 23 complete
+
Local RQAlpha Backtesting (108-130)
23 / 23 complete
- 108
Create backtest package
- 109
Create formal RQAlpha workflow (split into runner and executor)
- 110
Configure local RQAlpha
- 111
Configure bundle
- 112
Verify local execution
- 113
Verify A-share data access
- 114
Configure start date
- 115
Configure end date
- 116
Configure benchmark
- 117
Configure initial cash
- 118
Configure commission
- 119
Configure slippage
- 120
Load `weight_df`
- 121
Initialize `init(context)`
- 122
Detect new targets in `handle_bar()`
- 123
Read current target weights
- 124
Execute target portfolio (smart portfolio plus retry)
- 125
Complete the first local RQAlpha backtest
- 126
Extract portfolio value
- 127
Extract daily return (derivable from `portfolio.csv` NAV)
- 128
Extract positions
- 129
Extract trades
- 130
Save formal RQAlpha outputs
HBacktest Result Analysis (131-148)
7 / 18 complete
+
Backtest Result Analysis (131-148)
7 / 18 complete
- 131
Read RQAlpha daily return
- 132
Read portfolio value / NAV
- 133
Analyze daily return with custom summary metrics
- 134
Analyze NAV with custom drawdown
- 135
Analyze NAV with custom maximum drawdown
- 136
Analyze daily return with custom Sharpe
- 137
Analyze daily return with custom annual return
- 138
Analyze daily return with custom annual volatility
- 139
Analyze daily return with custom win rate
- 140
Output Annual Return through RQAlpha
- 141
Output Annual Volatility through RQAlpha
- 142
Output Sharpe through RQAlpha
- 143
Output Maximum Drawdown through RQAlpha
- 144
Output Win Rate through RQAlpha
- 145
Output Final NAV / total value through RQAlpha
- 146
Save the backtest summary (currently `summary.csv`)
- 147
Save backtest NAV (included in `portfolio.csv`)
- 148
Save daily backtest return (derivable from `portfolio.csv`, not split into a separate file)
ITransaction Costs and Turnover (149-158)
0 / 10 complete
+
Transaction Costs and Turnover (149-158)
0 / 10 complete
- 149
Custom `calculate_turnover`
- 150
Custom `calculate_average_turnover`
- 151
Custom `calculate_daily_turnover`
- 152
Custom `plot_turnover`
- 153
Momentum daily turnover (RQAlpha average daily turnover is available)
- 154
Momentum average turnover (RQAlpha turnover metrics are available)
- 155
Compare 1/5/20-day rebalance turnover
- 156
Compare commission assumptions
- 157
Compare slippage assumptions
- 158
Draw transaction-cost sensitivity conclusion
JPlotting System (159-172)
2 / 14 complete
+
Plotting System (159-172)
2 / 14 complete
- 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 default available; custom plot incomplete)
- 168
`plot_backtest_drawdown` (RQAlpha default available; custom plot incomplete)
- 169
`plot_factor_comparison`
- 170
Multi-factor Rank IC plot
- 171
Multi-factor cumulative-return plot
- 172
Automatically save all plots to `graphy`
KAnalyzer Wrapper (173-188)
0 / 16 complete
+
Analyzer Wrapper (173-188)
0 / 16 complete
- 173
Create `analyzer.py` (file exists; full wrapper incomplete)
- 174
`analyze_single_factor`
- 175
Automatic winsorization
- 176
Automatic standardization
- 177
Automatic forward return
- 178
Automatic IC
- 179
Automatic Rank IC
- 180
Automatic ICIR
- 181
Automatic Rank ICIR
- 182
Automatic group return
- 183
Automatic long-short return
- 184
Automatic summary metrics
- 185
Automatic plotting
- 186
Automatic plot saving
- 187
Return result dictionary
- 188
Print summary
LMulti-Factor Expansion and Comparison (189-206)
0 / 18 complete
+
Multi-Factor Expansion and Comparison (189-206)
0 / 18 complete
- 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
Loop over multiple factors
- 198
Compare IC mean
- 199
Compare Rank IC mean
- 200
Compare ICIR
- 201
Compare Rank ICIR
- 202
Compare Sharpe
- 203
Compare Maximum Drawdown
- 204
Factor-comparison table
- 205
Multi-factor Rank IC comparison plot
- 206
Multi-factor cumulative-return comparison plot
MBacktest Wrapper (207-220)
2 / 14 complete
+
Backtest Wrapper (207-220)
2 / 14 complete
- 207
`run_rqalpha_backtest` (formal runner exists; reusable function incomplete)
- 208
Pass `weight_df` path
- 209
Pass start/end date
- 210
Pass initial cash
- 211
Pass benchmark
- 212
Pass commission
- 213
Pass slippage
- 214
Run RQAlpha automatically
- 215
Extract NAV
- 216
Extract daily return
- 217
Extract positions
- 218
Extract trades
- 219
Obtain RQAlpha summary
- 220
Save backtest outputs automatically
NAutomated Report System (221-230)
0 / 10 complete
+
Automated Report System (221-230)
0 / 10 complete
- 221
Create `report.py`
- 222
`generate_factor_report`
- 223
`generate_backtest_report`
- 224
Save factor summary
- 225
Save backtest summary
- 226
Save factor-comparison table
- 227
Save plot paths
- 228
Output Markdown
- 229
Output CSV
- 230
Output PNG
OEnd-to-End Main Script (231-247)
0 / 17 complete
+
End-to-End Main Script (231-247)
0 / 17 complete
- 231
Create `run_full_research.py`
- 232
Initialize RiceQuant
- 233
Obtain stock universe
- 234
Obtain price data
- 235
Obtain industry data
- 236
Obtain market-cap data
- 237
Calculate momentum factor
- 238
Call single-factor analyzer
- 239
Generate signal
- 240
Generate weights
- 241
Call local RQAlpha
- 242
Extract backtest outputs
- 243
Calculate backtest summary
- 244
Plot NAV
- 245
Plot drawdown
- 246
Save complete outputs
- 247
Generate complete report
PFinal System Capabilities (248-258)
7 / 11 complete
+
Final System Capabilities (248-258)
7 / 11 complete
- 248
Local CSV analysis
- 249
RiceQuant data analysis
- 250
Single-factor analysis
- 251
Multi-factor comparison
- 252
Long-only target-signal generation
- 253
`weight_df` generation
- 254
Local RQAlpha backtesting
- 255
Commission and slippage support
- 256
Turnover analysis (RQAlpha metrics available; custom module incomplete)
- 257
Automatic plotting (some plots available; unified saving incomplete)
- 258
Automatic full-report output
QPoint-in-Time Dynamic Universe (259-276)
15 / 18 complete
+
Point-in-Time Dynamic Universe (259-276)
15 / 18 complete
- 259
Build a 20-year trading calendar (4,860 dates)
- 260
Download point-in-time CSI 300 constituents
- 261
Validate daily constituent counts (298-300)
- 262
Normalize 1,457,940 constituent records
- 263
Identify 904 historical securities
- 264
Build batched, resumable downloading
- 265
Download 19 market-data batches
- 266
Save pre-adjusted OHLCV and turnover
- 267
Build point-in-time `member_mask`
- 268
Build all-day `suspended_mask`
- 269
Build historical `st_mask`
- 270
Download and validate listing metadata
- 271
Build the 60-trading-day `listing_age_mask`
- 272
Build the final `eligible_mask`
- 273
Record and exclude the incomplete 2026-08-04 boundary
- 274
Integrate `eligible_mask` into formal factor research
- 275
Generate a dynamic-universe `weight_df`
- 276
Backtest and compare dynamic versus fixed universes
RLearning Reports and Showcase Site (277-286)
7 / 10 complete
+
Learning Reports and Showcase Site (277-286)
7 / 10 complete
- 277
Create an isolated `website/` showcase project
- 278
Present the research pipeline and version timeline
- 279
Present verified backtest metrics and an equity chart
- 280
Present dynamic-universe scale and eligibility rules
- 281
Present real code excerpts and repository structure
- 282
Create bilingual `v0.2.0-dev` update reports
- 283
Synchronize current status across both READMEs
- 284
Automatically add new research results to the site
- 285
Automatically generate Markdown research reports
- 286
Publish the personal project site after review