AArcher / Quant Research中文

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.

286Total tasks
137Complete
34Partial
112Not started
3Paused
CompletePartialNot startedPaused
A

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`

B

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

C

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

D

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`

E

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

F

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`

G

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

H

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)

I

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

J

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`

K

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

L

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

M

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

N

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

O

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

P

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

Q

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

R

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