← Back to Coding Agents & IDEs
Coding Agents & IDEs by @wumu2013

multi-factor-strategy

Guide users to create multi-factor stock

0
Source Code

{"homepage":"https://gitcode.com/datavoid/quantcli","user-invocable":true}

Multi-Factor Strategy Assistant

Guide you to create multi-factor stock selection strategies and generate independent YAML configuration files.

Install quantcli

# Install from PyPI (recommended)
pip install quantcli

# Or install from source
git clone https://gitcode.com/datavoid/quantcli.git
cd quantcli
pip install -e .

Verify installation:

quantcli --help

Quick Start

A complete multi-factor stock selection strategy YAML example:

name: Value-Growth Hybrid Strategy
version: 1.0.0
description: ROE + Momentum factor stock selection

screening:
  fundamental_conditions:    # Stage 1: Financial condition screening
    - "roe > 0.10"           # ROE > 10%
    - "pe_ttm < 30"          # P/E < 30
    - "pe_ttm > 0"           # Exclude losses
  daily_conditions:          # Stage 2: Price condition screening
    - "close > ma10"         # Above 10-day MA
  limit: 100                 # Keep at most 100 stocks

# Factor configuration (supports two methods, factors at top level)
factors:
  # Method 1: Inline factor definition
  - name: ma10_deviation
    expr: "(close - ma(close, 10)) / ma(close, 10)"
    direction: negative
    description: "10-day MA deviation"

  # Method 2: External reference (reference factor files in factors/ directory, include .yaml suffix)
  - factors/alpha_001.yaml
  - factors/alpha_008.yaml

ranking:
  weights:                   # Weight fusion
    ma10_deviation: 0.20     # Inline factor
    factors/alpha_001.yaml: 0.40  # External reference factor
    factors/alpha_008.yaml: 0.40
  normalize: zscore          # Normalization method

output:
  limit: 30                  # Output top 30 stocks
  columns: [symbol, name, score, roe, pe_ttm, close, ma10_deviation]

Factor Configuration Methods

Factor configuration supports two methods (can be mixed):

Method Type Example Description
Inline dict {name: xxx, expr: "..."} Define expression directly in YAML
External str factors/alpha_001.yaml Load factor file from factors/ directory

Example: Mixed usage

factors:
  # Inline: Custom factor
  - name: custom_momentum
    expr: "close / delay(close, 20) - 1"
    direction: positive

  # External: Alpha101 factor library (include .yaml suffix)
  - factors/alpha_001.yaml
  - factors/alpha_005.yaml
  - factors/alpha_009.yaml

ranking:
  weights:
    custom_momentum: 0.3
    factors/alpha_001.yaml: 0.3
    factors/alpha_005.yaml: 0.2
    factors/alpha_009.yaml: 0.2

Run strategy:

quantcli filter run -f your_strategy.yaml

Invocation

/multi-factor-strategy

Available Expression Functions

Data Processing Functions

Function Usage Description
delay delay(x, n) Lag n periods
ma ma(x, n) Simple moving average
ema ema(x, n) Exponential moving average
rolling_sum rolling_sum(x, n) Rolling sum
rolling_std rolling_std(x, n) Rolling standard deviation

Technical Indicator Functions

Function Usage Description
rsi rsi(x, n=14) Relative strength index
correlation correlation(x, y, n) Correlation coefficient
cross_up cross_up(a, b) Golden cross (a crosses above b)
cross_down cross_down(a, b) Death cross (a crosses below b)

Ranking & Normalization Functions

Function Usage Description
rank rank(x) Cross-sectional ranking (0-1)
zscore zscore(x) Standardization
sign sign(x) Sign function
clamp clamp(x, min, max) Clipping function

Conditional Functions

Function Usage Description
where where(cond, t, f) Conditional selection
if if(cond, t, f) Conditional selection (alias)

Base Fields

Field Description
open, high, low, close OHLC prices
volume Trading volume
pe, pb P/E ratio, P/B ratio
roe Return on equity
netprofitmargin Net profit margin

Guided Workflow

Step 1: Strategy Goal定位

I will first understand your strategy needs:

  • Strategy Type: Value, Growth, Momentum, Volatility, Hybrid
  • Selection Count: Concentrated(10-30), Medium(50-100), Diversified(200+)
  • Holding Period: Intraday, Short-term(week), Medium-term(month), Long-term(quarter)

Step 2: Factor Selection

Based on your strategy goals, recommend suitable factor combinations:

Common Fundamental Factors:

Factor Expression Direction Description
roe roe positive Return on equity
pe pe negative Lower P/E is better
pb pb negative Price-to-book ratio
netprofitmargin netprofitmargin positive Net profit margin
revenue_growth revenue_yoy positive Revenue growth rate

Common Technical Factors:

Factor Expression Direction Description
momentum (close/delay(close,20))-1 positive N-day momentum
ma_deviation (close-ma(close,10))/ma(close,10) negative MA deviation
ma_slope (ma(close,10)-delay(ma(close,10),5))/delay(ma(close,10),5) positive MA slope
volume_ratio volume/ma(volume,5) negative Volume ratio

Alpha101 Built-in Factors (can reference {baseDir}/alpha101/alpha_XXX):

QuantCLI includes 40 WorldQuant Alpha101 factors that can be directly referenced:

Factor Category Description
alpha101/alpha_001 Reversal 20-day new high then decline
alpha101/alpha_002 Reversal Down volume bottom
alpha101/alpha_003 Volatility Low volatility stability
alpha101/alpha_004 Capital Flow Net capital inflow
alpha101/alpha_005 Trend Uptrend
alpha101/alpha_008 Capital Flow Capital inflow
alpha101/alpha_009 Momentum Long-term momentum
alpha101/alpha_010 Reversal MA deviation reversal
alpha101/alpha_011 ~ alpha_020 Extended Volatility, momentum, price-volume factors
alpha101/alpha_021 ~ alpha_030 Extended Price-volume, trend, strength factors
alpha101/alpha_031 ~ alpha_040 Extended Position, volatility, capital factors

View all built-in factors:

quantcli factors list

Usage Example:

factors:
  - alpha101/alpha_001   # Reversal factor
  - alpha101/alpha_008   # Capital inflow
  - alpha101/alpha_029   # 5-day momentum
ranking:
  weights:
    alpha101/alpha_001: 0.4
    alpha101/alpha_008: 0.3
    alpha101/alpha_029: 0.3

Screening Conditions Example:

screening:
  conditions:
    - "roe > 0.10"              # ROE > 10%
    - "netprofitmargin > 0.05"  # Net profit margin > 5%

Step 3: Weight Configuration

Allocate weights based on factor importance, 0 means only for screening, not scoring:

ranking:
  weights:
    # Fundamental factors
    roe: 0.30
    pe: 0.20
    # Technical factors
    ma_deviation: 0.30
    momentum: 0.20
  normalize: zscore

Step 4: Generate Strategy File

I will generate a complete strategy YAML file for you:

name: Your Strategy Name
version: 1.0.0
description: Strategy description

# Stage 1: Fundamental screening
screening:
  conditions:
    - "roe > 0.10"
    - "pe < 30"
  limit: 200

# Stage 2: Technical ranking
ranking:
  weights:
    roe: 0.30
    pe: 0.20
    ma_deviation: 0.30
    momentum: 0.20
  normalize: zscore

output:
  columns: [symbol, score, rank, roe, pe, momentum]
  limit: 30

Step 5: Run & Evaluate

Run strategy:

quantcli filter run -f your_strategy.yaml --top 30

Evaluation points:

  1. Selected stock count: Check if screening conditions are reasonable
  2. Factor distribution: Distribution of factor scores
  3. Industry diversification: Avoid over-concentration

FAQ

Q: How to allocate factor weights? A: Core factors 0.3-0.4, auxiliary factors 0.1-0.2, ensure weights sum close to 1

Q: Screening conditions too strict resulting in empty results? A: Gradually relax conditions, first see how many stocks meet each condition

Q: What expression syntax is supported? A: Supports 40+ built-in functions: ma(), ema(), delay(), rolling_sum(), rsi(), rank(), zscore(), etc.