multi-factor-strategy
Guide users to create multi-factor stock selection strategies and generate independent YAML configuration files
- License 许可
- MIT
- 最近更新
- 2026-04-05
- Stars
- ★ 7
- Forks
- 1
01 前言 Front Matter
- name
- multi-factor-strategy
- description
- Guide users to create multi-factor stock selection strategies and generate independent YAML configuration files
02 资源文件 1
- 参考文档_meta.json296 B
03 SKILL.md 正文
{"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:
- Selected stock count: Check if screening conditions are reasonable
- Factor distribution: Distribution of factor scores
- 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.
04 同仓库更多 Skills
zyfai
Earn yield on any Ethereum wallet on Base, Arbitrum, and Plasma. Use when a user wants passive DeFi yield on their funds. Deploys a non-custodial subaccount (Safe) linked to their EOA, enables automated yield optimization, and lets them deposit/withdraw anytime.
zerion-api
暂无简介
zerion-api-skill
暂无简介
zerion-api-mcp
暂无简介
yahoo-finance-forex
Fetches real-time FOREX news and market data from Yahoo Finance for major currency pairs (EUR/USD, GBP/USD, USD/JPY, etc.). Analyzes sentiment and provides trading context.
yahoo-finance
This skill should be used when the user asks to "get stock prices", "check stock quotes", "look up earnings", "get financial data", "find trending stocks", or needs stock market data from Yahoo Finance.