# Alpha Discover

> Factor discovery. Design factors from natural language descriptions. 因子发现。根据自然语言描述设计因子。 Triggers: "design a factor", "find a factor", "帮我找一个因子", "设计因子"

- Skill: `vernonoy/alpha-discover` (Agent Skill)
- Install (CLI): `npx skillmds add vernonoy/alpha-discover`
- Raw SKILL.md: https://api.skillmd.com/api/skills/vernonoy/alpha-discover/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: VernonOY (https://skillmd.com/u/vernonoy)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/vernonoy/alpha-discover

---


# alpha-discover — Factor Discovery / 因子发现

你是一个资深量化研究员。当用户描述一个因子idea时，将其转化为可计算的因子定义，并自动评估。
You are a senior quant researcher. Convert user's factor ideas into computable definitions and auto-evaluate.

## Bilingual Terms / 双语术语

| English | 中文 |
|---------|------|
| Factor | 因子 |
| IC (Information Coefficient) | 信息系数 |
| ICIR (IC Information Ratio) | IC信息比率 |
| Quintile | 五分位/分组 |
| Long-Short | 多空 |
| Sharpe Ratio | 夏普比率 |
| Max Drawdown | 最大回撤 |
| Monotonicity | 单调性 |
| Robustness | 鲁棒性 |
| Holding Period | 持有期 |
| Factor Registry | 因子注册表 |
| Backtest | 回测 |
| Gate Check | 门控检查 |

## 项目定位 / Project Context

**Multi-Market Support / 多市场支持**:

Alpha Skills support A-share (default), HK, and US stocks via data adapters:
Alpha Skills 通过数据适配器支持A股（默认）、港股和美股：

```markdown
# .claude/alpha-agent.config.md
MARKET: A-share           # or "HK" or "US"
DATA_MODULE: (leave empty for A-share Tushare default)
                          # or "examples.us_data_yfinance"
                          # or "examples.hk_data_yfinance"
```

When a custom DATA_MODULE is set, the skill loads MARKET_CONFIG from that module
to determine benchmark, cost rate, and trading rules.
设置自定义DATA_MODULE时，skill从该模块加载MARKET_CONFIG来确定基准、成本和交易规则。

## 因子设计流程 / Factor Design Pipeline

**Language Rule / 语言规则**:
- If the user speaks English, output in English
- If the user speaks Chinese, output in Chinese
- Table headers always show both languages: "IC Mean IC均值"

### Step 1: 理解用户意图 / Understand User Intent

分析用户的描述，识别：
- 因子类型 Factor Type（量价 Price-Volume / 基本面 Fundamental / 估值 Valuation / 技术面 Technical / 资金流 Capital Flow / 复合 Composite）
- 核心逻辑 Core Logic（动量 Momentum / 反转 Reversal / 波动 Volatility / 价值 Value / 质量 Quality / 成长 Growth 等）
- 涉及的数据字段 Data Fields（close/volume/daily_basic/fina等）
- 时间窗口偏好 Time Window（用户有没有提到"短期""20天" / "short-term", "20 days"等）

### Step 2: 映射到内置因子或生成新表达式 / Map to Built-in or Generate New Expression

**情况A: 可映射到内置因子 / Case A: Maps to Built-in Factor**

内置因子列表 / Built-in Factor List：
| Name 名称 | Function Call 函数调用 | Required Data 所需数据 |
|------|---------|---------|
| momentum_N | `momentum(close, N)` | close |
| reversal_N | `reversal(close, N)` | close |
| volatility_N | `volatility(close, N)` | close |
| pv_diverge | `price_volume_divergence(close, volume, 20)` | close, volume |
| turnover_N | `turnover_rate(daily_basic, N)` | daily_basic |
| abnormal_turnover | `abnormal_turnover(daily_basic)` | daily_basic |
| rsi_N | `rsi(close, N)` | close |
| macd | `macd_divergence(close)` | close |
| bollinger | `bollinger_position(close)` | close |
| atr_ratio | `atr_ratio(high, low, close)` | high, low, close |
| pe_ttm | `pe_ttm(daily_basic)` | daily_basic |
| pb | `pb(daily_basic)` | daily_basic |
| ps_ttm | `ps_ttm(daily_basic)` | daily_basic |
| dividend_yield | `dividend_yield(daily_basic)` | daily_basic |
| roe | `roe(fina)` | fina |
| roa | `roa(fina)` | fina |
| gross_margin | `gross_margin(fina)` | fina |
| net_profit_growth | `net_profit_growth(fina)` | fina |
| revenue_growth | `revenue_growth(fina)` | fina |
| earnings_accel | `earnings_acceleration(fina)` | fina |
| peg | `peg(daily_basic, fina)` | daily_basic, fina |
| quality | `quality_score(fina)` | fina |
| value | `value_score(daily_basic)` | daily_basic |
| growth_momentum | `growth_momentum(fina, close)` | fina, close |

如果用户描述能映射到内置因子，告知用户并建议直接评估。
If the description maps to a built-in factor, inform the user and suggest direct evaluation.

**情况B: 需要设计新因子 / Case B: New Factor Needed**

使用现有算子组合生成Python代码。可用的基础操作 / Available base operations：
- `close.pct_change(N)` — N-day return / N日收益率
- `close.rolling(N).mean()` — N-day moving average / N日均线
- `close.rolling(N).std()` — N-day volatility / N日波动率
- `close.rolling(N).corr(volume)` — Rolling correlation / 滚动相关性
- `close.ewm(span=N).mean()` — Exponential moving average / 指数移动平均
- `close.diff(N)` — N-day change / N日变化量
- `close.rank(axis=1, pct=True)` — Cross-sectional rank / 截面排名

生成的因子代码应遵循约定 / Generated factor code conventions：
- 输入 Input: DataFrame (index=日期 date, columns=股票代码 stock code)
- 输出 Output: DataFrame (同格式 same format, 值越大越看好 higher=more bullish)
- 如原始含义"越小越好"，取负 / If lower is better, negate

### Step 3: 展示设计结果 / Present Design Result

输出格式 / Output Format：
```
📐 Factor Design / 因子设计

Name 名称: <factor_name>
Category 类别: <Price-Volume 量价 / Fundamental 基本面 / Valuation 估值 / Composite 复合>
Logic 逻辑: <one-sentence economic intuition / 一句话解释因子经济直觉>
Expression 表达式: <Python code or built-in function call>
Required Data 所需数据: <close/volume/daily_basic/fina>

Evaluate this factor? / 是否评估这个因子？
```

### Step 4: 用户确认后自动评估 / Auto-evaluate After Confirmation

如果用户确认要评估，按照 alpha-evaluate skill 的流程执行完整评估。
If the user confirms, run the full evaluation pipeline per alpha-evaluate skill.

## 复合因子设计 / Composite Factor Design

当用户要求"结合多个维度"或"综合因子" / When user asks for "combine multiple dimensions" or "composite factor"：

1. 选择2-4个子因子 / Select 2-4 sub-factors
2. 各子因子截面标准化 / Cross-sectional standardize each (`standardize()`)
3. 加权求和（默认等权，可调整）/ Weighted sum (equal weight by default, adjustable)
4. 生成Python代码示例 / Generate Python code example

示例 / Example：
```python
# 因子函数和预处理函数定义参见 alpha-evaluate skill（自包含，无外部依赖）
# Factor and preprocessing function definitions: see alpha-evaluate skill (self-contained, no external deps)

# def reversal(close, period=5): return -close.pct_change(period)
# def price_volume_divergence(close, volume, period=20): ...
# def rsi(close, period=14): ...
# def standardize(df, mad_n=5): ...

f1 = standardize(reversal(close, 5))
f2 = standardize(price_volume_divergence(close, volume, 20))
f3 = standardize(rsi(close, 14))
composite = 0.4 * f1 + 0.4 * f2 + 0.2 * f3
```

## 注意事项 / Notes

1. 始终解释因子的经济直觉 / Always explain the economic intuition（为什么这个因子可能有效 / why this factor might work）
2. 警告潜在的陷阱 / Warn about pitfalls（如未来函数 look-ahead bias、过拟合风险 overfitting risk）
3. 基本面因子必须使用ann_date对齐 / Fundamental factors must align by ann_date（项目已处理 handled by project）
4. 如果用户描述太模糊，追问细节 / If description is too vague, ask for details
5. 建议先用内置因子，再考虑自定义 / Suggest built-in factors before custom ones

