# BRAIN论坛Alpha模板精华总结

本文档旨在系统性地整理和总结优秀Alpha模板,它是一种可复用的标准化框架性表达式，它承载着特定的经济逻辑，并预留出若干 “配置项”（包括数据字段、运算符、分组方式、衰减规则、中性化方案等），用于生成多个候选阿尔法因子。其典型流程为：数据清洗（数据回填、缩尾处理）→ 跨时间或跨标的维度进行转换 / 对比 → 排序 / 中性化处理 →（可选步骤）衰减调整 / 换手率优化。这种模板模式能够推动系统化的因子挖掘、复用与多元化配置，同时确保每一个因子都具备清晰可追溯的经济逻辑支撑。
以下每个模板都附有其核心思想、变量说明、适用场景及原帖链接，方便您理解、应用和进一步探索。
使用时请思考如何将下列模板与有的Alpha表达式结合，创造出新的模板来捕捉和发现市场规律，找到”好“公司和”坏“公司
**使用前请注意：**
*   **过拟合风险**：部分模板可能存在过拟合风险，请谨慎使用，并结合IS-Ladder测试、多市场回测等方法进行验证。
*   **参数调整**：模板中的参数（如时间窗口、数据集字段）需要根据您的具体研究目标和数据特性进行调整。
*   **持续学习**：最好的模板是您自己创造的。希望本文档能激发您的灵感，而不是限制您的思维。

---

## From: Alpha Examples from Learn101

### Momentum after news
**Hypothesis**: After news is released, if a stock takes a longer time to rise, it may show strong evidence of upward momentum, and it could be beneficial to take a long position in it.
**Expression**: `ts_backfill(vec_avg(nws12_prez_4l),504)`
**Settings**: Region: USA, Universe: TOP500, Delay: 1, Decay: 0, Neutralization: INDUSTRY, Truncation: 0.08, Pasteurization: ON
**逻辑链深度解析**:
*   **时序相对性 (Step 4)**: 这是一个典型的时序信号。`ts_backfill` 的使用暗示了新闻数据是稀疏的（Step 4.2.4），需要填补空白以维持信号连续性。
*   **运算符深意**: `vec_avg` 用于聚合多维新闻向量，提取核心情绪/强度；`ts_backfill` 确保在无新闻日也能维持上一次的观点，直到新消息到来。
**优化方向**:
*   **去噪 (Step 0)**: 新闻情绪可能存在极端噪音，建议在 `vec_avg` 后增加 `winsorize` 或 `rank`。
*   **从属信号 (Subordinate)**: 叠加 `Social Media Effect`。若新闻情绪好但社媒热度低（噪音少），则放大权重；若社媒过热，可能反转。
*   **门限交易 (Step 5)**: 仅在新闻情绪显著偏离均值时交易，如 `trade_when(abs(zscore(news)) > 1.5, ...)`。

### Pretax Income
**Hypothesis**: Pretax income is a good measure of a company's financial health and profitability.
**Expression**: `quantile(ts_rank(pretax_income,250))`
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 4, Neutralization: MARKET, Truncation: 0.01, Pasteurization: ON
**逻辑链深度解析**:
*   **时序相对性 (Step 4)**: `ts_rank(..., 250)` 比较当前收入与过去一年的水平，寻找“自身改善”而非“绝对高收入”。
*   **分布重塑 (Step 0)**: `quantile` 强制将信号拉伸为均匀分布，避免了极值影响，只关注相对排序。
**优化方向**:
*   **区间优化 (Step 2)**: 收入微弱变化可能只是噪音。可改用 `ts_zscore` 并只在 >1 或 <-1 时交易。
*   **从属信号**: 引入 `market_cap`。大市值的收入创新高可能比小市值更稳健（质量溢价）。

### Operating Earnings Yield
**Hypothesis**: If the operating income of a company is currently higher than its past 1 year history, buy the company's stock and vice-versa.
**Expression**: `ts_rank(operating_income,252)`
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 0, Neutralization: SUBINDUSTRY, Truncation: 0.08, Pasteurization: ON
**逻辑链深度解析**:
*   **时序相对性 (Step 4)**: 纯粹的时序动量逻辑。`ts_rank` 将当前值映射到历史分位，捕捉“业绩改善”趋势。
**优化方向**:
*   **组内比较 (Step 3)**: 考虑行业周期性。先做 `group_zscore(operating_income, industry)` 再做 `ts_rank`，剔除行业景气度影响，只看个股相对行业的改善。
*   **门限 (Step 5)**: `trade_when(ts_rank > 0.8, ...)` 只做多业绩显著改善的股票。

### Appreciation of liabilities
**Hypothesis**: An increase in the fair value of liabilities could indicate a higher cost than expected.
**Expression**: `-ts_rank(fn_liab_fair_val_l1_a,252)`
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 0, Neutralization: SUBINDUSTRY, Truncation: 0.08, Pasteurization: ON
**逻辑链深度解析**:
*   **反向信号**: 负号 `-` 表示这是一个反向指标（负债增加是坏事）。
*   **时序相对性**: 同样基于 `ts_rank`，关注负债相对于自身历史的增长速度。
**优化方向**:
*   **去噪**: 负债数据可能存在跳变，建议先 `winsorize`。
*   **从属信号**: 结合 `cash_flow`。若负债增加但现金流同时也大幅增加（良性杠杆），则不应做空。

### Deferred Revenue
**Hypothesis**: Firms with high deferred revenue will surprise the market in the future when the deferred revenue is recognized.
**Expression**: `ts_backfill(fnd6_drc, 252)/assets`
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 0, Neutralization: SECTOR, Truncation: 1, Pasteurization: ON
**逻辑链深度解析**:
*   **截面比较 (Step 3)**: 除以 `assets` 是为了标准化（Size Adjustment），使其在截面上可比。
*   **数据填补 (Step 0)**: `ts_backfill` 处理财报数据的低频更新特性。
**优化方向**:
*   **行业中性 (Step 3)**: 递延收入在软件/服务业常见，在制造业少见。必须做 `group_zscore(..., sector)` 或 `neutralize`，否则只是在做多特定行业。
*   **时序变化 (Step 4)**: 关注递延收入的 *增长率* `ts_delta`，而不仅仅是绝对值。

### Reducing debt
**Hypothesis**: Take a long position in companies whose debt has decreased compared to the past.
**Expression**: `-ts_quantile(debt, 126)`
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 0, Neutralization: MARKET, Truncation: 0.01, Pasteurization: ON
**逻辑链深度解析**:
*   **时序相对性**: `ts_quantile` 与 `ts_rank` 类似，捕捉债务下降趋势。
**优化方向**:
*   **从属信号**: 结合 `interest_coverage` (利息保障倍数)。只有在偿债能力弱的公司中，债务减少才最重要（困境反转逻辑）。

### Power of leverage
**Hypothesis**: Companies with high liability-to-asset ratios often leverage debt as a strategic tool.
**Expression**: `liabilities/assets`
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 0, Neutralization: MARKET, Truncation: 0.01, Pasteurization: ON
**逻辑链深度解析**:
*   **截面比较 (Step 3)**: 这是一个经典的截面因子（杠杆率）。
**优化方向**:
*   **非线性 (Step 1)**: 杠杆通常是倒U型关系（适度杠杆好，过高杠杆坏）。考虑使用 `bucket` 分段，或 `trade_when` 剔除极端高杠杆。
*   **行业中性**: 银行/地产杠杆天生高，必须行业中性化。

## From: Alpha Examples from Learn102

### Social Media Effect
**Hypothesis**: Poorly performing stocks are discussed more in general on social media platforms.
**Expression**: `-scl12_buzz`
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 0, Neutralization: INDUSTRY, Truncation: 0.01, Pasteurization: ON
**逻辑链深度解析**:
*   **反向指标**: 负号暗示“关注度高=坏事”（可能是负面新闻缠身）。
*   **原始信号**: 直接使用 `buzz`，假设线性关系。
**优化方向**:
*   **去噪 (Step 0)**: 社媒数据极值多，必须 `log` 或 `winsorize`。
*   **从属信号**: 结合 `sentiment`。若关注度高且情感为正，可能是好事；关注度高且情感负，才是做空机会。
*   **门限**: `trade_when(rank(buzz) > 0.9, ...)` 只在极度热门时做空。

### Valuation Disconnect Swing Short
**Hypothesis**: A stock with high momentum and value score correlation suggests a disconnect between the stock's price and its intrinsic value.
**Expression**: `-ts_corr(ts_backfill(fscore_momentum,66),ts_backfill(fscore_value,66),756)`
**Settings**: Region: USA, Universe: TOP200, Delay: 1, Decay: 0, Neutralization: INDUSTRY, Truncation: 0.08, Pasteurization: ON
**逻辑链深度解析**:
*   **高阶统计量**: 使用 `ts_corr` 捕捉两个因子之间的动态关系，而非因子本身。
*   **逻辑**: 动量与价值相关性高，意味着价格脱离基本面（泡沫），因此做空（负号）。
**优化方向**:
*   **窗口调整**: 756天（3年）非常长，捕捉的是长期结构变化。可尝试短窗口（如126天）捕捉短期背离。

### Network Dependence
**Hypothesis**: Long stocks of companies whose hub score of customers are low over the past two years.
**Expression**: `-ts_mean(pv13_ustomergraphrank_hub_rank,504)`
**Settings**: Region: USA, Universe: TOP1000, Delay: 1, Decay: 0, Neutralization: INDUSTRY, Truncation: 0.08, Pasteurization: ON
**逻辑链深度解析**:
*   **供应链逻辑**: 客户集中度/中心度过高可能意味着风险（依赖大客户）。
*   **平滑 (Step 4)**: `ts_mean(..., 504)` 说明这是一个非常慢的变量，关注长期结构。
**优化方向**:
*   **从属信号**: 结合 `volatility`。高依赖度+高波动 = 极度危险。

## From: Alpha Examples from Learn103

### News-driven Volatility
**Hypothesis**: Stocks of companies that face high differences in their prices after any news release can be subject to varying sentiments.
**Expression**: `(ts_arg_max(ts_backfill(news_session_range, 20), 60))`
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 0, Neutralization: SECTOR, Truncation: 0.08, Pasteurization: ON
**逻辑链深度解析**:
*   **事件驱动 (Step 4.2.3)**: `ts_arg_max` 寻找过去60天内波动最大的那一天（新闻日）。
*   **运算符深意**: 这不是直接用波动率，而是用“最大波动发生的时间距离”作为信号。
**优化方向**:
*   **衰减逻辑**: 结合 `days_from_last_change` 或 `exp_decay`，让信号随时间减弱。
*   **从属信号**: 叠加 `IV Skew`。若波动大且 Skew 偏空，做空；若 Skew 偏多，做多。

### Implied Volatility Spread as a predictor
**Hypothesis**: If the Call Open interest is higher than the Put Open interest, the stock may rise based on the intensity of the implied volatility spread.
**Expression**: `trade_when(pcr_oi_270 < 1, (implied_volatility_call_270-implied_volatility_put_270), -1)`
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 4, Neutralization: MARKET, Truncation: 0.08, Pasteurization: ON
**逻辑链深度解析**:
*   **门限交易 (Step 5)**: `trade_when(pcr_oi < 1, ...)` 是典型的门禁逻辑。只有在看涨持仓量大于看跌时（情绪偏多），才使用 IV Spread 信号。
*   **条件分支**: 不满足条件时给 `-1`（做空），这是一个激进的二元策略。
**优化方向**:
*   **平滑**: IV 数据跳动大，建议对 Spread 做 `ts_mean` 或 `ts_decay_linear`。

## 《151 Trading Strategies》论文精华模板

本部分总结自Zura Kakushadze与Juan Andrés Serur合著的《151 Trading Strategies》一文，重点提炼其中适用于BRAIN平台的股票类策略，并将其泛化为可复用的Alpha模板。

---

### 1. 风险调整后动量模板 (Risk-Adjusted Momentum)

*   **模板表达式**: `ts_mean(ts_delay(returns, <skip_period>), <lookback_period>) / ts_std_dev(ts_delay(returns, <skip_period>), <lookback_period>)`
*   **核心思想**: 这是对经典动量因子的改进。它计算的是过去一段时间（lookback_period）的"时序夏普比率"，即收益均值除以收益波动。同时，`ts_delay`跳过了最近一段时间（skip_period，通常为21天/1个月）的数据，以规避短期反转效应的干扰。该因子旨在寻找那些"高质量"的、持续且平稳的动量。
*   **变量说明**:
    *   `<skip_period>`: 跳过的近期交易日数，如 `21`。
    *   `<lookback_period>`: 计算动量的回看窗口，如 `252`。
*   **适用场景**: 通用性强，适用于构建稳健的动量类Alpha。
*   **逻辑链深度解析**:
    *   **时序标准化 (Step 4)**: 分子是收益均值，分母是波动率。本质是 Rolling Sharpe Ratio。
    *   **去噪 (Step 0)**: `ts_delay` 跳过最近一个月，剔除了短期反转（Short-term Reversal）噪音，只保留中长期动量。
*   **优化方向**:
    *   **从属信号**: 叠加 `turnover`。在低换手率时，动量更可靠（量价配合）。
    *   **残差化**: 先对 returns 做 `regression_neut` 剔除大盘影响，计算纯特异性动量。
*   **适配自**: Section 3.1, "Price-momentum", `Rrisk.adj`

### 2. 标准化盈利超预期模板 (SUE - Standardized Unexpected Earnings)

*   **模板表达式**: `(fnd_eps_q - ts_delay(fnd_eps_q, 4)) / ts_std_dev(fnd_eps_q - ts_delay(fnd_eps_q, 4), 8)`
*   **核心思想**: 捕捉超预期的盈利增长。它计算的是最新一季的EPS相较于去年同期的增量，并用该增量自身过去8个季度的波动性进行标准化。标准化后的值（SUE）越高，代表盈利惊喜越大，是经典的盈利动量因子。
*   **变量说明**:
    *   `fnd_eps_q`: 季度每股收益（EPS）字段。
*   **适用场景**: `Fundamental`（基本面）数据集，用于事件驱动型Alpha。
*   **逻辑链深度解析**:
    *   **季节性调整**: `ts_delay(..., 4)` 比较同比季度，消除季节性影响。
    *   **波动率标准化 (Step 0)**: 除以过去8季度的波动，将“惊喜”转化为标准差单位（Z-Score），使其在不同波动率的公司间可比。
*   **优化方向**:
    *   **事件衰减 (Step 4)**: 叠加 `days_from_last_change`，让 SUE 信号随财报发布时间衰减。
    *   **从属信号**: 叠加 `Analyst Revision`。若 SUE 高且分析师上调预期，信号更强。
*   **适配自**: Section 3.2, "Earnings-momentum", SUE


### 4. 隐含波动率偏斜动量模板 (Implied Volatility Skew Momentum)

*   **模板表达式**: `ts_delta(implied_volatility_call_<window>, <period>) - ts_delta(implied_volatility_put_<window>, <period>)`
*   **核心思想**: 捕捉市场情绪的变化。看涨期权IV的上升通常与乐观情绪相关，而看跌期权IV的上升则与悲观或避险情绪相关。该模板计算Call IV的变化量与Put IV变化量之差，旨在做多情绪改善、做空情绪恶化的股票。
*   **变量说明**:
    *   `implied_volatility_call_<window>`: 不同期限的看涨期权隐含波动率。
    *   `implied_volatility_put_<window>`: 不同期限的看跌期权隐含波动率。
    *   `<period>`: 计算IV变化的时间窗口，如 `21` (月度变化)。
*   **适用场景**: `Option`（期权）数据集，用于捕捉短中期市场情绪变化。
*   **逻辑链深度解析**:
    *   **时序变化 (Step 4)**: 关注的是 IV 的 *变化* (`ts_delta`) 而非绝对值。
    *   **情绪差**: Call IV 涨幅 > Put IV 涨幅 -> 情绪改善。
*   **优化方向**:
    *   **门限**: `trade_when(abs(skew_delta) > threshold, ...)` 只在情绪剧烈变化时交易。
    *   **事件驱动**: 在财报前（IV 高企时）该策略可能失效，需用 `days_to_earnings` 过滤。
*   **适配自**: Section 3.5, "Implied volatility"

### 5. 残差动量模板 (Residual Momentum)

*   **模板表达式**: `ts_mean(regression_neut(regression_neut(regression_neut(returns, <factor_1/>), <factor_2/>), <factor_3/>), <window/>)`
*   **核心思想**: 提纯动量信号。传统动量可能包含了市场Beta、市值、价值等多种因子的敞口。此模板通过连续的中性化（例如依次对`<factor_1/>`, `<factor_2/>`, `<factor_3/>`执行`regression_neut`）剥离可被通用因子解释的部分，然后仅对无法被解释的"残差等价物"部分计算动量。
*   **变量说明**:
    *   `<factor_1/>`, `<factor_2/>`, `<factor_3/>`: 市场通用因子，如 `mkt_beta`, `size_factor`, `value_factor`。
    *   `<window/>`: 计算残差动量的时间窗口。
*   **适用场景**: 通用性强，是因子提纯、构建高质量Alpha的关键步骤。
*   **逻辑链深度解析**:
    *   **提纯 (Step 0)**: 通过连续 `regression_neut` 剥离 Beta、Size、Value 等风格暴露。
    *   **时序动量**: 对剥离后的残差求 `ts_mean`。
*   **优化方向**:
    *   **加权**: 使用 `ts_decay_linear` 代替 `ts_mean`，给予近期残差更大权重。
    *   **组内比较**: 在残差基础上再做 `group_rank`，寻找行业内最强特异动量。
*   **适配自**: Section 3.7, "Residual momentum"

### 6. 风险加权回归均值回归模板 (Weighted Regression Mean-Reversion)

*   **模板表达式**: `reverse(regression_neut(multiply(returns, power(inverse(ts_std_dev(returns, <window/>)), 2)), <group_matrix/>))`
*   **核心思想**: 这是对标准行业中性化均值回归的增强。在对收益率进行行业中性化时，它为不同股票赋予了不同的权重。具体来说，它给历史波动率较低的股票更高的权重，认为这些股票的收益率数据更"可靠"，在计算行业均值时应占更大比重。
*   **变量说明**:
    *   `<group_matrix>`: 行业或分组的哑变量矩阵。
    *   `weights`: 回归权重，通常是可靠性的度量，如 `1/variance`。
    *   `<window>`: 计算波动率的时间窗口。
*   **适用场景**: 适用于任何需要进行组内中性化或回归剥离的场景，尤其是当组内成员的信号质量或波动性差异较大时。
*   **逻辑链深度解析**:
    *   **加权最小二乘 (WLS)**: 使用 `1/variance` 作为权重，认为低波动的股票信息更可靠。
    *   **均值回归**: `reverse` 捕捉残差的反转。
*   **优化方向**:
    *   **从属信号**: 引入 `liquidity` 权重。流动性好的股票回归更快。
*   **适配自**: Section 3.10, "Mean-reversion – weighted regression"

### 7. 移动平均线交叉模板 (Moving Average Crossover)

*   **模板表达式**: `sign(ts_mean(<price/>, <short_window>) - ts_mean(<price/>, <long_window>))`
*   **核心思想**: 经典的趋势跟踪策略。当短期均线上穿长期均线（"金叉"）时，表明短期趋势走强，产生买入信号。当短期均线下穿长期均线（"死叉"）时，表明趋势走弱，产生卖出信号。
*   **变量说明**:
    *   `<price/>`: `close`, `vwap` 等价格字段。
    *   `<short_window>`: 短期均线窗口，如 `10`, `20`。
    *   `<long_window>`: 长期均线窗口，如 `50`, `100`。
*   **适用场景**: 适用于趋势性较强的市场或资产。
*   **逻辑链深度解析**:
    *   **低通滤波**: MA 本质是滤除高频噪音。
    *   **二元信号**: `sign` 输出 +1/-1，不包含强度信息。
*   **优化方向**:
    *   **连续化 (Step 1)**: 去掉 `sign`，直接使用差值并标准化 (`zscore`)，保留强度信息。
    *   **从属信号**: 结合 `ADX` (趋势强度指标)。只有在趋势强时才使用 MA 交叉。
*   **适配自**: Section 3.12, "Two moving averages"



### 9. 渠道突破模板 (Channel Breakout)

*   **模板表达式**: `alpha = if_else(greater(close, ts_max(high, <window/>)), 1, if_else(less(close, ts_min(low, <window/>)), -1, 0)); reverse(alpha)`
*   **核心思想**: 这是一个经典的反转策略。它定义了一个由过去N日最高价和最低价构成的价格渠道（Channel）。当价格向上突破渠道上轨时，认为市场过热，产生卖出信号（-1）；当价格向下突破渠道下轨时，认为市场超卖，产生买入信号（+1）。
*   **变量说明**:
    *   `<window>`: 定义渠道的时间窗口，如 `20`。
*   **适用场景**: 适用于有均值回归特性的市场或个股。
*   **逻辑链深度解析**:
    *   **区间突破 (Step 2)**: 典型的“只在尾部交易”逻辑。中间区间为 0。
    *   **反转逻辑**: `reverse` 赌突破是假突破（False Breakout）。
*   **优化方向**:
    *   **顺势/逆势切换**: 结合 `volatility`。低波时做反转（假突破），高波时做顺势（真突破）。
*   **适配自**: Section 3.15, "Channel"


### 11. 价值因子基础模板 (Value Factor)

*   **模板表达式**: `group_rank(<book_value/> / <market_cap/>)`
*   **核心思想**: 经典的价值投资策略。它旨在买入账面价值相对于市场价值被低估的"价值股"，并卖出被高估的"成长股"。最核心的衡量指标是账面市值比（Book-to-Price / Book-to-Market Ratio）。
*   **变量说明**:
    *   `<book_value/>`: 公司账面价值或每股净资产字段。
    *   `<market_cap/>`: 公司市值或收盘价字段。
*   **适用场景**: `Fundamental` (基本面) 数据集，作为构建多因子模型的基础因子之一。
*   **逻辑链深度解析**:
    *   **组内比较 (Step 3)**: 价值因子在不同行业间不可比（如科技 vs 银行），必须用 `group_rank`。
*   **优化方向**:
    *   **去噪**: 先 `winsorize` 再 `group_rank`。
    *   **从属信号**: 叠加 `Quality` (ROE)。避免买入“价值陷阱”（便宜但烂的公司）。
*   **适配自**: Section 3.3, "Value"



### 13. 配对交易均值回归框架 (Pairs Trading)

*   **模板表达式**: `signal_A = (close_A - close_B) - ts_mean(close_A - close_B, <window>); reverse(signal_A)`
*   **核心思想**: 寻找历史上高度相关的两只股票（一个"配对"），当它们的价差（spread）偏离历史均值时进行套利。如果价差过大，则做空价高的股票、做多价低的股票，赌价差会回归。这是一个经典的统计套利和均值回归策略。
*   **变量说明**:
    *   `close_A`, `close_B`: 配对股票A和B的价格序列。
    *   `<window>`: 计算历史价差均值的时间窗口。
*   **适用场景**: 适用于同一行业内业务高度相似的公司，是构建市场中性策略的基础。
*   **逻辑链深度解析**:
    *   **协整关系**: 构造平稳序列 `Spread`。
    *   **均值回归**: 赌 Spread 回归均值。
*   **优化方向**:
    *   **动态阈值**: 使用 `ts_std_dev(Spread)` 设定动态开仓线（如 2倍标准差）。
    *   **止损**: 增加 `trade_when(abs(Spread) > 4*std, 0, ...)` 防止协整破裂。
*   **适配自**: Section 3.8, "Pairs trading"

---

## 补充模板

### A. Analyst交叉分组打底（模板名：示例）
*   **核心结构**: `financial_data = ts_backfill(<vec_func/>(<analyst_metric/>), 60); gp = group_cartesian_product(country, industry); <ts_operator/>(<group_operator/>(financial_data, gp), <window/>)`
*   **思想**: 先对分析师字段做向量聚合（`vec_avg`、`vec_kurtosis`、`vec_ir`等），用`group_cartesian_product`构建国家×行业组合，再做组内标准化/中性化+时序处理，形成稳定的截面信号。
*   **变量要点**: `analyst_metric`覆盖`mdl26_*`、`star_arm_*`等Analyst/SmartEstimate场景；`vec_func`选择聚合方式；`group_operator`用于行业/国家组内的scale或neutralize；`ts_operator`用于时间平滑（`ts_mean`、`ts_zscore`等）；`window`在20/60/90/200之间取值。
*   **适用场景**: 适合Analyst情感、预期修正类主题，想要跨国+行业分组的稳健截面信号。
*   **逻辑链深度解析**:
    *   **数据填补 (Step 0)**: 分析师数据稀疏，必须 `ts_backfill`。
    *   **精细分组 (Step 3)**: `group_cartesian_product` 实现了“国家x行业”的精细化中性化，适合全球策略。
*   **优化方向**:
    *   **运算符选择**: `vec_ir` (信息比率) 比 `vec_avg` 更能体现分析师的一致性。

### B. 双重中性化（模板名：双重中性化:以Analyst15为例）
*   **核心结构**: 与上类似，先`ts_backfill(vec_func(Analyst15字段), 60)`，再按国家×行业分组，做组内中性化与时序处理。
*   **思想**: 针对`anl15_*`增长/估值/分红等字段，在截面层面做两次中性化（向量聚合后+组内处理），用于剥离共性行业/国家暴露。
*   **变量要点**: 数据集中`anl15_*`覆盖多期增长率、PE、估值、分红等；`vec_func`与`ts_operator`选择决定信号平滑度；窗口建议60–200以保证填补稳定。
*   **适用场景**: Analyst15预期修正、估值再定价类信号，需要同时消化国家+行业噪音的场景。
*   **逻辑链深度解析**:
    *   **多重剥离**: 彻底消除风格暴露，追求纯 Alpha。
*   **优化方向**:
    *   **顺序**: 先做行业中性，再做国家中性，通常更符合基本面逻辑。

### C. 组间比较（模板名：组间比较_GLB_topdiv）
*   **核心结构**: 先在`country × <group1/>`分组内对回填后的向量聚合结果做`ts_zscore`和`group_zscore`，再计算组均值/极值（`group_min/median/max/sum/count`），用`resid = <compare/>(alpha, alpha_gpm)`求组间残差，最后再做组内+时序处理。
*   **思想**: 对同一层级（如行业/子行业/交易所）之间的相对强弱做剥离，得到“相对组均值”的残差信号，适合跨组对比的Alpha挖掘。
*   **变量要点**: `analyst_field`来源于`fnd8_*`基本面/现金流字段；`vec_op`可选`vec_max/avg/min`；`compare`可用`regression_neut`或`signed_power`提取残差；`t_window`取20/60/200/600，控制平滑与稳定性。
*   **适用场景**: GLB区域的分红/现金流因子（topdiv）在国家+行业框架下的相对价值比较，关注跨组差异的策略。
*   **逻辑链深度解析**:
    *   **相对价值**: 关注的是“我在我的组里是否优秀”，而不是“我绝对值多少”。
*   **优化方向**:
    *   **非线性**: 使用 `rank` 代替原始值计算残差，对异常值更鲁棒。

### D. 组间比较（Analyst15版，模板名：组间比较_glb_topdiv_anl15）
*   **核心结构**: 与上一模板相同，但`analyst_field`替换为`anl15_*`系列的增长/估值/分红字段。
*   **思想**: 通过对Analyst15增长与估值预期的组间残差建模，捕捉行业/国家层面的相对高低估与预期修正。
*   **变量要点**: `group1`可选industry/subindustry/sector/exchange；`compare`与`group_stats`同上；`ts_op`和`group_op`用于残差后再标准化和时序平滑。
*   **适用场景**: 全球范围GLB，基于Analyst15预期数据的组间相对价值或动量信号。
*   **逻辑链深度解析**:
    *   **预期差**: 寻找行业内被分析师低估/高估的股票。
*   **优化方向**:
    *   **时序叠加**: 结合 `ts_delta`，寻找“行业内预期提升最快”的股票。

### E. 顾问分析示例（模板名：顾问分析示例）
*   **核心结构**: `financial_data = ts_backfill(<mixdata/>, 90); gp = industry; <ts_operator/>(<group_operator/>(financial_data, gp), <window/>)`
*   **思想**: 直接对`anl69_*`多字段做90日回填，行业组内标准化后再做时序平滑，生成简洁的行业中性信号。
*   **变量要点**: `mixdata`覆盖`anl69_*`的EPS/EBIT/现金分红/目标价/报告日期等；`ts_operator`可用`ts_zscore`、`ts_scale`、`ts_rank`等；`window`提供60/120/220/600可调节频率。
*   **适用场景**: Analyst69数据驱动的行业内预期跟踪、财报节奏/指引变化监控。
*   **逻辑链深度解析**:
    *   **标准流程**: 填补 -> 截面标准化 -> 时序平滑。这是构建稳健因子的标准三板斧。
*   **优化方向**:
    *   **事件驱动**: 在财报日前后缩短 `ts_mean` 的窗口，提高灵敏度。

---

## 新增模板（CAPM與估值、分析師期限、期權、搜尋優化）

### 1. CAPM殘差模板（市場/行業中性收益）
*   **表達式**: `ts_regression(returns, group_mean(returns, log(ts_mean(cap,21)), sector), 252, rettype=0)`。
*   **核心思想**: 回歸剔除市場/行業暴露，保留超額收益殘差作為Alpha。
*   **適用場景**: 通用起手式，回歸殘差可作後續動量或價值信號的底板。
*   **優化**: 改`rettype=2`獲取beta斜率，用於風險排序或低/高beta組合；可加入`winsorize`、`ts_backfill`預處理。

### 2. CAPM廣義殘差（任意特徵）
*   **表達式**: `data = winsorize(ts_backfill(<data>,63), std=4); gpm = group_mean(data, log(ts_mean(cap,21)), sector); resid = ts_regression(data, gpm, 252, rettype=0)`。
*   **核心思想**: 將任意特徵去除組均值成分，提取行業相對的特異性部分。
*   **適用場景**: 基本面、情緒、替代數據的組內殘差提純。
*   **優化**: 先`group_zscore`再回歸；對`resid`再做`ts_zscore`或`ts_mean`平滑。

### 3. CAPM Beta排序模板
*   **表達式**: `target_data = winsorize(ts_backfill(<target>,63), std=4); market_data = winsorize(ts_backfill(<market>,63), std=4); beta = ts_regression(target_data, group_mean(market_data, log(ts_mean(cap,21)), sector), 252, rettype=2)`。
*   **核心思想**: 提取行業內相對beta，作為風險/防禦排序；低beta偏防禦，高beta偏進攻。
*   **優化**: 行業或國家分組；可按beta分桶做長低/短高，或反向用於高波段套利。

### 4. 實際-預估差異模板（Analyst Surprise）
*   **表達式**: `group_zscore(subtract(group_zscore(<act>, industry), group_zscore(<est>, industry)), industry)`。
*   **核心思想**: 行業內標準化後的實際值與預估值差，捕捉超預期或低於預期的驚喜。
*   **適用場景**: analyst7/analyst14/earnings估值類字段。
*   **優化**: 對差分再做`ts_zscore`；門檻交易只在|z|>1.5時開倉。

### 5. 分析師期限結構模板（近遠期預估斜率）
*   **表達式**: `group_zscore(subtract(group_zscore(anl14_mean_eps_<p1>, industry), group_zscore(anl14_mean_eps_<p2>, industry)), industry)`，`<p1>/<p2>`為fp1/fp2/fy1/fy2等。
*   **核心思想**: 比較短期與長期預估的行業內斜率，捕捉預期加速或鈍化。
*   **適用場景**: analyst14/15 期別字段；適用成長/拐點挖掘。
*   **優化**: 擴展到多期間差分或`ts_delta`跟蹤斜率變化；對斜率做`rank`或`winsorize`。

### 6. 期權Greeks淨值模板
*   **表達式**: `group_operator(<put_greek> - <call_greek>, <group>)`，Greek可選Delta/Gamma/Vega/Theta。
*   **核心思想**: 同組內看多vs看空的期權敏感度差，反映隱含情緒或凸性差異。
*   **適用場景**: Option數據集；行業或市值分組下的情緒/波動信號。
*   **優化**: 多Greek加權組合；對淨值再`ts_mean`平滑；事件期(財報)可降權或過濾。

### 7. IV Skew動量擴展
*   **表達式**: `ts_delta(implied_volatility_call_<w>, <p>) - ts_delta(implied_volatility_put_<w>, <p>)`。
*   **核心思想**: Call與Put隱含波動變化差捕捉情緒轉折；可做多情緒改善、做空情緒惡化。
*   **優化**: 加`trade_when(abs(skew)>thr)`門檻；財報前後縮窗；行業中性。

### 8. 殘差動量精簡版
*   **表達式**: `res = regression_neut(returns, <common_factor_matrix>); ts_mean(res, <window>)`。
*   **核心思想**: 先剝離市場/風格暴露，再對特異收益做動量；較原版多重回歸更輕量。
*   **優化**: 使用`ts_decay_linear`增加近期權重；行業內`group_rank`提升截面穩定度。

### 9. 分紅/現金流組間殘差（簡版）
*   **表達式**: `alpha = ts_zscore(ts_backfill(<cf_or_div_field>,90)); g = group_mean(alpha, <group>, <weight_opt>); resid = alpha - g; group_zscore(resid, <group>)`。
*   **核心思想**: 先回填平滑，再对組均值做殘差，捕捉組內相對高/低分紅或現金流質量。
*   **適用場景**: fnd8/fnd6/topdiv等分紅現金流字段；行業/國家分組。
*   **優化**: 權重可用log(cap)或vol逆；對resid再做`ts_mean`平滑。

---

## 模板格式说明

每个模板使用以下占位符格式：
- `<ts_op/>` - 时间序列操作符，如 `ts_rank`, `ts_mean`, `ts_delta`, `ts_ir`, `ts_stddev`, `ts_zscore`
- `<group_op/>` - 分组操作符，如 `group_rank`, `group_neutralize`, `group_zscore`
- `<vec_op/>` - 向量操作符，如 `vec_avg`, `vec_sum`, `vec_max`, `vec_min`, `vec_stddev`
- `<field/>` - 数据字段占位符
- `<d/>` - 时间窗口参数，常用值: `{5, 22, 66, 126, 252, 504}`
- `<group/>` - 分组字段，如 `industry`, `sector`, `subindustry`, `market`

---

## 第一部分：基础结构模板 (TPL-001 ~ TPL-010)

### TPL-001: 基本面时序排名
```
模板: <group_op/>(<ts_op/>(<field/>, <d/>), <group/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_rank`, `ts_zscore`, `ts_delta`, `ts_ir` | 时序比较操作 |
| `<group_op/>` | `group_rank`, `group_zscore`, `group_neutralize` | 截面比较操作 |
| `<field/>` | 基本面字段: `eps`, `sales`, `assets`, `roe`, `roa` | 公司财务数据 |
| `<d/>` | `66`, `126`, `252` | 季度/半年/年 |
| `<group/>` | `industry`, `sector` | 行业分组 |

**示例**:
```
group_rank(ts_rank(eps, 252), industry)
group_zscore(ts_ir(sales, 126), sector)
```

---

### TPL-002: 利润/规模比率模板
```
模板: <ts_op/>(<profit_field/>/<size_field/>, <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_rank`, `ts_zscore`, `ts_mean`, `ts_delta` | 时序操作 |
| `<profit_field/>` | `net_income`, `ebitda`, `operating_income`, `gross_profit` | 利润类字段 |
| `<size_field/>` | `assets`, `cap`, `sales`, `equity` | 规模类字段 |
| `<d/>` | `66`, `126`, `252` | 中长期窗口 |

**示例**:
```
ts_rank(net_income/assets, 252)
ts_zscore(ebitda/cap, 126)
ts_rank(operating_income/cap, 252)^2
```

---

### TPL-003: 向量数据处理模板 (VECTOR字段必用)
```
模板: <ts_op/>(<vec_op/>(<vector_field/>), <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_rank`, `ts_mean`, `ts_delta`, `ts_ir`, `ts_zscore` | 时序操作 |
| `<vec_op/>` | `vec_avg`, `vec_sum`, `vec_max`, `vec_min`, `vec_stddev` | 向量聚合 |
| `<vector_field/>` | 分析师数据: `anl4_*`, `analyst_*`, `oth41_*` | VECTOR类型字段 |
| `<d/>` | `22`, `66`, `126` | 短中期窗口 |

**示例**:
```
ts_delta(vec_avg(anl4_eps_mean), 22)
ts_rank(vec_sum(analyst_estimate), 66)
ts_ir(vec_avg(oth41_s_west_eps_ftm_chg_3m), 126)
```

---

### TPL-004: 双重中性化模板
```
模板:
a = <ts_op/>(<field/>, <d/>);
a1 = group_neutralize(a, bucket(rank(cap), range="<range/>"));
group_neutralize(a1, <group/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_zscore`, `ts_rank`, `ts_ir` | 时序操作 |
| `<field/>` | 任意数据字段 | 主信号 |
| `<d/>` | `66`, `126`, `252` | 时间窗口 |
| `<range/>` | `"0.1,1,0.1"`, `"0,1,0.1"` | 市值分组范围 |
| `<group/>` | `industry`, `sector`, `subindustry` | 行业分组 |

**示例**:
```
a = ts_zscore(fnd72_s_pit_or_is_q_spe_si, 252);
a1 = group_neutralize(a, bucket(rank(cap), range="0.1,1,0.1"));
group_neutralize(a1, subindustry)
```

---

### TPL-005: 回归中性化模板
```
模板:
a = <ts_op/>(<field/>, <d/>);
a1 = group_neutralize(a, bucket(rank(cap), range="<range/>"));
a2 = group_neutralize(a1, <group/>);
b = ts_zscore(cap, <d/>);
b1 = group_neutralize(b, <group/>);
regression_neut(a2, b1)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_zscore`, `ts_rank` | 时序操作 |
| `<field/>` | 基本面或其他字段 | 主信号 |
| `<d/>` | `252`, `504` | 长期窗口 |
| `<range/>` | `"0.1,1,0.1"` | 市值分组 |
| `<group/>` | `subindustry`, `sector` | 行业分组 |

---

### TPL-006: 基本面动量模板
```
模板: log(ts_mean(<field/>, <d_short/>)) - log(ts_mean(<field/>, <d_long/>))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | `anl4_{data}_{stats}`, 基本面字段 | 数据字段 |
| `<d_short/>` | `20`, `44` | 短期窗口 |
| `<d_long/>` | `44`, `126` | 长期窗口 |

**示例**:
```
log(ts_mean(anl4_eps_mean, 44)) - log(ts_mean(anl4_eps_mean, 20))
```

---

### TPL-007: 财报事件驱动模板
```
模板:
event = ts_delta(<fundamental_field/>, -1);
if_else(event != 0, <alpha/>, nan)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<fundamental_field/>` | `assets`, `sales`, `eps` | 基本面字段 |
| `<alpha/>` | 主信号表达式 | 事件发生时的Alpha |

**扩展版**:
```
change = if_else(days_from_last_change(<field/>) == <days/>, ts_delta(close, <d/>), nan)
```

---

### TPL-008: 标准化回填模板
```
模板: <ts_op/>(winsorize(ts_backfill(<field/>, <d_backfill/>), std=<std/>), <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_rank`, `ts_decay_linear`, `ts_zscore` | 时序操作 |
| `<field/>` | 低频数据字段 | 需要回填的字段 |
| `<d_backfill/>` | `115`, `120`, `180` | 回填窗口 |
| `<std/>` | `4`, `3`, `5` | winsorize标准差 |
| `<d/>` | `10`, `22`, `60` | 操作窗口 |

**示例**:
```
ts_decay_linear(-densify(zscore(winsorize(ts_backfill(anl4_adjusted_netincome_ft, 115), std=4))), 10)
ts_rank(winsorize(ts_backfill(<data>, 120), std=4), 60)
```

---

### TPL-009: 信号质量分组模板
```
模板:
signal = <ts_op/>(<field/>, <d/>);
credit_quality = bucket(rank(ts_delay(signal, 1), rate=0), range="<range/>");
group_neutralize(<decay_op/>(signal, k=<k/>), credit_quality)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_rank`, `ts_zscore` | 信号计算 |
| `<field/>` | 任意数据字段 | 主字段 |
| `<d/>` | `60`, `120` | 窗口 |
| `<range/>` | `"0.2,1,0.2"` | 分组范围 |
| `<decay_op/>` | `ts_weighted_decay` | 衰减操作 |
| `<k/>` | `0.5`, `0.3` | 衰减系数 |

---

### TPL-010: 复合分组中性化
```
模板: group_neutralize(<alpha/>, densify(<group1/>)*1000 + densify(<group2/>))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 原始Alpha |
| `<group1/>` | `subindustry`, `sector` | 主分组 |
| `<group2/>` | `country`, `exchange` | 次分组 |

---

## 第二部分：量价类模板 (TPL-101 ~ TPL-120)

### TPL-101: 换手率反转
```
模板: -<ts_op/>(volume/sharesout, <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_mean`, `ts_rank`, `ts_std_dev` | 时序统计 |
| `<d/>` | `5`, `22`, `66` | 短中期窗口 |

**示例**:
```
-ts_mean(volume/sharesout, 22)
-ts_std_dev(volume/sharesout, 22)
```

---

### TPL-102: 量稳换手率 (STR)
```
模板: -ts_std_dev(volume/sharesout, <d1/>)/ts_mean(volume/sharesout, <d2/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<d1/>` | `20`, `22` | 波动计算窗口 |
| `<d2/>` | `20`, `22` | 均值计算窗口 |

**优化版**:
```
模板: -group_neutralize(ts_std_dev(volume/sharesout, <d/>)/ts_mean(volume/sharesout, <d/>), bucket(rank(cap), range="0.1,1,0.1"))
```

---

### TPL-103: 价格反转模板
```
模板: -<ts_op/>(<price_field/>, <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_delta`, `ts_mean`, `ts_rank` | 时序操作 |
| `<price_field/>` | `close`, `returns`, `close/open-1`, `open/ts_delay(close,1)-1` | 价格/收益字段 |
| `<d/>` | `3`, `5`, `22` | 短期窗口 |

**示例**:
```
-ts_delta(close, 5)                    # 价格变化反转
-ts_mean(returns, 22)                  # 收益均值反转
-ts_mean(close/open-1, 22)             # 日内收益反转
-(open/ts_delay(close,1)-1)            # 隔夜收益反转
```

---

### TPL-104: 价格乖离率
```
模板: -(close - ts_mean(close, <d/>))/ts_mean(close, <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<d/>` | `5`, `22`, `66` | MA周期 |

---

### TPL-105: 量价相关性
```
模板: -ts_corr(<price_field/>, <volume_field/>, <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<price_field/>` | `close`, `returns`, `abs(returns)` | 价格类 |
| `<volume_field/>` | `volume`, `volume/sharesout`, `adv20` | 成交量类 |
| `<d/>` | `22`, `66`, `126` | 相关性窗口 |

---

### TPL-106: 跳跃因子
```
模板: -group_neutralize(ts_mean((close/open-1) - log(close/open), <d/>), bucket(rank(cap), range="0.1,1,0.1"))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<d/>` | `22`, `30`, `66` | 平均窗口 |

**带成交量增强版**:
```
模板: -group_neutralize(ts_mean((close/open-1) - log(close/open), <d/>) * ts_rank(volume, 5), bucket(rank(cap), range="0.1,1,0.1"))
```

---

### TPL-107: 指数衰减动量
```
模板: -ts_decay_exp_window(<field/>, <d/>, factor=<f/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | `returns`, `returns*(volume/sharesout)`, `close/open-1` | 收益类字段 |
| `<d/>` | `22`, `66`, `126` | 衰减窗口 |
| `<f/>` | `0.04`, `0.1`, `0.5`, `0.9` | 衰减因子，越小衰减越快 |

---

### TPL-108: 成交量周期函数 (VOC)
```
模板:
m_minus = ts_mean(volume, <d_long/>) - ts_mean(volume, <d_short/>);
delta = (ts_max(m_minus, <d_short/>) - m_minus)/(ts_max(m_minus, <d_short/>) - ts_min(m_minus, <d_short/>));
<weight1/>*delta + <weight2/>*ts_delay(delta, 1)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<d_long/>` | `30`, `66` | 长期均值窗口 |
| `<d_short/>` | `10`, `22` | 短期均值窗口 |
| `<weight1/>` | `0.33`, `0.5` | 当日权重 |
| `<weight2/>` | `0.67`, `0.5` | 前日权重 |

---

### TPL-109: 市场相关性因子
```
模板:
mkt_ret = group_mean(returns, 1, market);
pt = ts_corr(returns, mkt_ret, <d/>);
rank(1/(2*(1-pt)))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<d/>` | `10`, `22`, `66` | 相关性窗口 |

---

### TPL-110: 成交量趋势模板
```
模板: ts_decay_linear(volume/ts_sum(volume, <d_long/>), <d_short/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<d_long/>` | `252`, `504` | 长期总量窗口 |
| `<d_short/>` | `10`, `22` | 衰减窗口 |

---

### TPL-111: VWAP收益相关
```
模板:
returns > -<threshold/> ? (ts_ir(ts_corr(ts_returns(vwap, 1), ts_delay(group_neutralize(<field/>, market), <d1/>), <d2/>), <d2/>)) : -1
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<threshold/>` | `0.1`, `0.05` | 收益阈值 |
| `<field/>` | 任意数据字段 | 信号字段 |
| `<d1/>` | `30`, `60` | 延迟窗口 |
| `<d2/>` | `90`, `120` | 相关性窗口 |

---

### TPL-112: 动量因子创建
```
模板: ts_sum(winsorize(ts_backfill(<data/>, <day/>), std=4.0), <n/>*21) - ts_sum(winsorize(ts_backfill(<data/>, <day/>), std=4.0), <m/>*21)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<data/>` | `returns`, 基本面字段 | 数据字段 |
| `<day/>` | `120`, `180` | 回填窗口 |
| `<n/>` | `6`, `12` | 长期月数 |
| `<m/>` | `1`, `0.1*n` | 短期月数 |

---

### TPL-113: 线性衰减排名
```
模板: -ts_rank(ts_decay_linear(<field/>, <d1/>), <d2/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | `percent`, 任意时序信号 | 输入信号 |
| `<d1/>` | `10`, `22`, `150` | 衰减窗口 |
| `<d2/>` | `50`, `126` | 排名窗口 |

---

## 第三部分：情绪/新闻类模板 (TPL-201 ~ TPL-220)

### TPL-201: 情绪差值模板
```
模板: <ts_op/>(rank(ts_backfill(<positive_sentiment/>, <d/>)) - rank(ts_backfill(<negative_sentiment/>, <d/>)), <d2/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_mean`, `ts_rank`, `ts_zscore` | 时序操作 |
| `<positive_sentiment/>` | 正面情绪字段 | 积极信号 |
| `<negative_sentiment/>` | 负面情绪字段 | 消极信号 |
| `<d/>` | `20`, `30` | 回填窗口 |
| `<d2/>` | `5`, `22` | 比较窗口 |

---

### TPL-202: 新闻情绪回归残差
```
模板:
sentiment = ts_backfill(ts_delay(<vec_op/>(<sentiment_field/>), 1), <d1/>);
vhat = ts_regression(volume, sentiment, <d2/>);
ehat = -ts_regression(returns, vhat, <d3/>);
group_rank(ehat, bucket(rank(cap), range="0,1,0.1"))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<vec_op/>` | `vec_avg`, `vec_sum` | 情绪聚合方式 |
| `<sentiment_field/>` | `scl12_sentiment`, `snt_buzz_ret`, `nws18_relevance` | 情绪数据 |
| `<d1/>` | `20`, `30` | 回填窗口 |
| `<d2/>` | `120`, `250` | 成交量回归窗口 |
| `<d3/>` | `250`, `750` | 收益回归窗口 |

---

### TPL-203: 社交媒体情绪
```
模板: rank(<vec_op/>(scl12_alltype_buzzvec) * <vec_op/>(scl12_sentiment))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<vec_op/>` | `vec_sum`, `vec_avg` | 向量聚合 |

**带条件版**:
```
模板:
sent_vol = vec_sum(scl12_alltype_buzzvec);
trade_when(rank(sent_vol) > 0.95, -zscore(scl12_buzz)*sent_vol, -1)
```

---

### TPL-204: 条件情绪过滤
```
模板:
group_rank(
sigmoid(if_else(ts_zscore(<sentiment_field/>, <d/>) > <threshold/>, ts_zscore(<sentiment_field/>, <d/>), 0)),
<group/>
)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<sentiment_field/>` | 情绪字段 | 情绪数据 |
| `<d/>` | `22`, `30`, `66` | zscore窗口 |
| `<threshold/>` | `1`, `1.5`, `2` | z-score阈值 |
| `<group/>` | `industry`, `sector` | 分组字段 |

---

### TPL-205: 情绪+波动率复合
```
模板: log(1 + sigmoid(ts_zscore(<sentiment_field/>, <d1/>)) * sigmoid(ts_zscore(<volatility_field/>, <d2/>)))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<sentiment_field/>` | 情绪字段 | 情绪数据 |
| `<volatility_field/>` | `option8_*`, 波动率字段 | 波动率数据 |
| `<d1/>` | `30`, `66` | 情绪窗口 |
| `<d2/>` | `30`, `66` | 波动率窗口 |

---

### TPL-206: 指数衰减情绪
```
模板: ts_decay_exp_window(vec_avg(<sentiment_field/>), <d/>, <factor/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<sentiment_field/>` | `mws85_sentiment`, `nws18_ber` | 情绪向量字段 |
| `<d/>` | `10`, `22` | 衰减窗口 |
| `<factor/>` | `0.9`, `0.7` | 衰减因子 |

**双情绪组合**:
```
decayed_sentiment_1 = ts_decay_exp_window(vec_avg(mws85_sentiment), 10, 0.9);
decayed_sentiment_2 = ts_decay_exp_window(vec_avg(nws18_ber), 10, 0.9);
decayed_sentiment_1 + decayed_sentiment_2
```

---

### TPL-207: 新闻结果排名
```
模板:
percent = ts_rank(vec_stddev(<news_field/>), <d1/>);
-ts_rank(ts_decay_linear(percent, <d2/>), <d1/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<news_field/>` | `nws12_prez_result2` | 新闻数据 |
| `<d1/>` | `50`, `66` | 排名窗口 |
| `<d2/>` | `150`, `252` | 衰减窗口 |

---

### TPL-208: 分组行业提取情绪
```
模板: scale(group_extra(ts_sum(sigmoid(ts_backfill(<data/>, <d1/>)), <d2/>) - ts_sum(sigmoid(ts_backfill(<data/>, <d1/>)), <d2/>), 0.5, densify(industry)))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<data/>` | 情绪或基本面字段 | 数据字段 |
| `<d1/>` | `180`, `252` | 回填窗口 |
| `<d2/>` | `3`, `5` | 求和窗口 |

---

## 第四部分：期权类模板 (TPL-301 ~ TPL-320)

### TPL-301: 期权希腊字母差值
```
模板: <group_op/>(<put_greek/> - <call_greek/>, <group/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<group_op/>` | `group_rank`, `group_neutralize`, `group_zscore` | 分组操作 |
| `<put_greek/>` | `put_delta`, `put_gamma`, `put_theta`, `put_vega` | Put希腊字母 |
| `<call_greek/>` | `call_delta`, `call_gamma`, `call_theta`, `call_vega` | Call希腊字母 |
| `<group/>` | `industry`, `sector` | 分组字段 |

---

### TPL-302: 期权价格信号
```
模板: group_rank(<ts_op/>(<vec_op/>(<option_price_field/>)/close, <d/>), <group/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_scale`, `ts_rank`, `ts_zscore` | 时序操作 |
| `<vec_op/>` | `vec_max`, `vec_avg` | 向量操作 |
| `<option_price_field/>` | 期权价格字段 | 期权数据 |
| `<d/>` | `66`, `120`, `252` | 时间窗口 |
| `<group/>` | `industry`, `sector` | 分组字段 |

---

### TPL-303: 期权波动率信号
```
模板: sigmoid(<ts_op/>(<opt_high/> - <opt_close/>, <d/>))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_ir`, `ts_stddev`, `ts_zscore`, `ts_mean` | 波动性操作 |
| `<opt_high/>` | 期权高价字段 | 期权最高价 |
| `<opt_close/>` | 期权收盘价字段 | 期权收盘价 |
| `<d/>` | `120`, `250`, `504` | 长期窗口 |

**说明**: 期权波动类因子通常需要较长窗口(120-504天)来捕捉稳定信号

---

### TPL-304: 隐含波动率比率
```
模板: <ts_op/>(implied_volatility_call_<tenor/>/parkinson_volatility_<tenor/>, <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_rank`, `ts_zscore`, `ts_delta` | 时序操作 |
| `<tenor/>` | `120`, `270` | 期权期限 |
| `<d/>` | `66`, `126`, `252` | 窗口 |

---

### TPL-305: Put-Call成交量比
```
模板: <ts_op/>(pcr_vol_<tenor/>, <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_rank`, `ts_delta`, `ts_zscore` | 时序操作 |
| `<tenor/>` | `10`, `30`, `60` | 期限 |
| `<d/>` | `22`, `66`, `126` | 窗口 |

---

### TPL-306: 期权盈亏平衡点
```
模板: group_rank(ts_zscore(<breakeven_field/>/close, <d/>), <group/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<breakeven_field/>` | `call_breakeven_10`, `put_breakeven_10` | 盈亏平衡字段 |
| `<d/>` | `66`, `126`, `252` | 窗口 |
| `<group/>` | `sector`, `industry` | 分组 |

---

## 第五部分：分析师类模板 (TPL-401 ~ TPL-420)

### TPL-401: 分析师预期变化
```
模板: <vec_op/>(tail(tail(<analyst_change_field/>, lower=<low/>, upper=<high/>, newval=<low/>), lower=-<high/>, upper=-<low/>, newval=-<low/>))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<vec_op/>` | `vec_avg`, `vec_sum` | 向量聚合 |
| `<analyst_change_field/>` | `oth41_s_west_eps_ftm_chg_3m`, `anl4_eps_chg` | 预期变化字段 |
| `<low/>` | `0.25`, `0.1` | 下截断值 |
| `<high/>` | `1000`, `100` | 上截断值 |

---

### TPL-402: 剥离动量的分析师因子
```
模板:
afr = <vec_op/>(<analyst_field/>);
short_mom = ts_mean(returns - group_mean(returns, 1, market), <d_short/>);
long_mom = ts_delay(ts_mean(returns - group_mean(returns, 1, market), <d_long/>), <d_long/>);
regression_neut(regression_neut(afr, short_mom), long_mom)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<vec_op/>` | `vec_avg`, `vec_sum` | 向量聚合 |
| `<analyst_field/>` | 分析师数据字段 | 一致预期等 |
| `<d_short/>` | `5`, `10` | 短期动量窗口 |
| `<d_long/>` | `20`, `22` | 长期动量窗口 |

---

### TPL-403: 分析师覆盖度过滤
```
模板:
coverage_filter = ts_sum(<vec_op/>(<analyst_field/>), <d/>) > <min_count/>;
if_else(coverage_filter, <alpha/>, nan)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<vec_op/>` | `vec_count` | 统计分析师数量 |
| `<analyst_field/>` | 分析师向量字段 | 分析师数据 |
| `<d/>` | `66`, `90`, `126` | 统计窗口 |
| `<min_count/>` | `2`, `3`, `5` | 最小覆盖数量 |
| `<alpha/>` | 主信号表达式 | 待过滤的Alpha |

---

### TPL-404: 老虎哥回归模板
```
模板: group_rank(ts_regression(ts_zscore(<field1/>, <d/>), ts_zscore(vec_sum(<field2/>), <d/>), <d/>), densify(sector))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field1/>` | 任意MATRIX字段 | Y变量 |
| `<field2/>` | 任意VECTOR字段 | X变量 |
| `<d/>` | `252`, `504` | 回归窗口 |

**说明**: 经典回归模板，适用于基本面与分析师数据组合

---

### TPL-405: 分析师预期时序变化
```
模板: ts_mean(vec_avg(<analyst_field/>), <d_short/>) - ts_mean(vec_avg(<analyst_field/>), <d_long/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<analyst_field/>` | `anl4_eps_mean`, `anl4_revenue_mean` | 分析师预测 |
| `<d_short/>` | `22`, `44` | 短期窗口 |
| `<d_long/>` | `66`, `126` | 长期窗口 |

---

### TPL-406: 三因子组合模板
```
模板:
my_group = market;
rank(
group_rank(ts_decay_linear(volume/ts_sum(volume, 252), 10), my_group) *
group_rank(ts_rank(vec_avg(<fundamental/>), <d/>), my_group) *
group_rank(-ts_delta(close, 5), my_group)
)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<fundamental/>` | 基本面VECTOR字段 | 基本面数据 |
| `<d/>` | `252`, `504` | 排名窗口 |

---

### TPL-407: 分析师FCF比率
```
模板: ts_rank(vec_avg(<fcf_field/>) / vec_avg(<profit_field/>), <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<fcf_field/>` | `anl4_fcf_value` | 自由现金流预测 |
| `<profit_field/>` | `anl4_netprofit_low`, `anl4_netprofit_mean` | 利润预测 |
| `<d/>` | `66`, `126`, `252` | 排名窗口 |

---

## 第六部分：中性化技术模板 (TPL-501 ~ TPL-515)

### TPL-501: 市值分组中性化
```
模板: group_neutralize(<alpha/>, bucket(rank(cap), range="<range/>"))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号表达式 | 待中性化的Alpha |
| `<range/>` | `"0.1,1,0.1"`, `"0,1,0.1"` | 分组范围 |

---

### TPL-502: 双重中性化 (行业+市值)
```
模板:
a1 = group_neutralize(<alpha/>, bucket(rank(cap), range="<range/>"));
group_neutralize(a1, <group/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 原始Alpha |
| `<range/>` | `"0.1,1,0.1"` | 市值分组 |
| `<group/>` | `industry`, `sector`, `subindustry` | 行业分组 |

---

### TPL-503: 回归中性化
```
模板: regression_neut(<alpha/>, <factor/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 原始Alpha |
| `<factor/>` | `log(cap)`, `ts_ir(returns, 126)`, `ts_std_dev(returns, 22)` | 待剥离因子 |

**多层回归中性化**:
```
模板: regression_neut(regression_neut(<alpha/>, <factor1/>), <factor2/>)
```

---

### TPL-504: 中性化顺序优化
```
模板:
a = ts_zscore(<field/>, <d/>);
a1 = group_neutralize(a, <group/>);
a2 = group_neutralize(a1, bucket(rank(cap), range="<range/>"))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意数据字段 | 主信号 |
| `<d/>` | `252` | zscore窗口 |
| `<group/>` | `industry`, `subindustry` | 行业分组 |
| `<range/>` | `"0.1,1,0.1"` | 市值分组 |

**说明**: 先行业中性化再市值中性化，与反向顺序效果可能不同

---

### TPL-505: sta1分组中性化
```
模板: group_neutralize(<alpha/>, sta1_top3000c20)
```
**说明**: 使用预定义的sta1分组进行中性化

---

## 第七部分：条件交易模板 (TPL-601 ~ TPL-620)

### TPL-601: 流动性过滤
```
模板: trade_when(volume > adv20 * <threshold/>, <alpha/>, -1)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<threshold/>` | `0.618`, `0.5`, `1` | 流动性阈值 |
| `<alpha/>` | 主信号 | 原始Alpha |

**反向流动性**:
```
trade_when(volume < adv20, <alpha/>, -1)
```

---

### TPL-602: 波动率过滤
```
模板: trade_when(ts_rank(ts_std_dev(returns, <d1/>), <d2/>) < <threshold/>, <alpha/>, -1)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<d1/>` | `5`, `10`, `22` | 波动计算窗口 |
| `<d2/>` | `126`, `180`, `252` | 排名窗口 |
| `<threshold/>` | `0.8`, `0.9` | 波动率阈值 |
| `<alpha/>` | 主信号 | 原始Alpha |

---

### TPL-603: 极端收益过滤
```
模板: trade_when(abs(returns) < <entry/>, <alpha/>, abs(returns) > <exit/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<entry/>` | `0.075`, `0.05` | 入场阈值 |
| `<exit/>` | `0.1`, `0.095` | 出场阈值 |
| `<alpha/>` | 主信号 | 原始Alpha |

---

### TPL-604: 市值过滤
```
模板: trade_when(rank(cap) > <threshold/>, <alpha/>, -1)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<threshold/>` | `0.3`, `0.5` | 市值排名阈值 |
| `<alpha/>` | 主信号 | 原始Alpha |

---

### TPL-605: 触发条件交易
```
模板:
triggerTradeexp = (ts_arg_max(volume, <d/>) < 1) && (volume > ts_sum(volume, <d/>)/<d/>);
triggerExitexp = -1;
trade_when(triggerTradeexp, <alpha/>, triggerExitexp)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<d/>` | `5`, `10` | 判断窗口 |
| `<alpha/>` | `-rank(ts_delta(close, 2))` | 主信号 |

---

### TPL-606: 组合条件交易
```
模板:
my_group2 = bucket(rank(cap), range="0,1,0.1");
trade_when(volume > adv20, group_neutralize(<alpha/>, my_group2), -1)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 复合信号 | 主信号 |

---

### TPL-607: 条件排名交易
```
模板:
a = <ts_op/>(<field/>, <d/>);
trade_when(rank(a) > <threshold_low/>, -zscore(<field2/>)*a, <threshold_high/>-rank(a))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_rank`, `ts_zscore` | 时序操作 |
| `<field/>` | 任意字段 | 条件字段 |
| `<field2/>` | 任意字段 | 信号字段 |
| `<d/>` | `25`, `66` | 窗口 |
| `<threshold_low/>` | `0.03`, `0.1` | 下阈值 |
| `<threshold_high/>` | `0.25`, `0.5` | 上阈值 |

---

## 第八部分：复合多因子模板 (TPL-701 ~ TPL-720)

### TPL-701: 三因子乘积
```
模板:
my_group = market;
rank(
group_rank(<ts_op1/>(<field1/>, <d1/>), my_group) *
group_rank(<ts_op2/>(<field2/>, <d2/>), my_group) *
group_rank(<ts_op3/>(<field3/>, <d3/>), my_group)
)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op1/>` | `ts_decay_linear`, `ts_rank` | 第一因子操作 |
| `<ts_op2/>` | `ts_rank`, `ts_zscore` | 第二因子操作 |
| `<ts_op3/>` | `-ts_delta` | 第三因子操作(反转) |
| `<field1/>` | `volume/ts_sum(volume, 252)` | 成交量趋势 |
| `<field2/>` | `vec_avg({Fundamental})` | 基本面信号 |
| `<field3/>` | `close` | 价格信号 |
| `<d1/>`, `<d2/>`, `<d3/>` | 各因子窗口 | 时间参数 |

---

### TPL-702: 波动率条件反转
```
模板:
vol = ts_std_dev(<ret_field/>, <d/>);
vol_mean = group_mean(vol, 1, market);
flip_ret = if_else(vol < vol_mean, -<ret_field/>, <ret_field/>);
-ts_mean(flip_ret, <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ret_field/>` | `returns`, `close/open-1` | 收益字段 |
| `<d/>` | `20`, `22` | 窗口参数 |

**说明**: 低波动环境做反转，高波动环境做动量

---

### TPL-703: 恐惧指标组合
```
模板:
fear = ts_mean(
abs(returns - group_mean(returns, 1, market)) /
(abs(returns) + abs(group_mean(returns, 1, market)) + 0.1),
<d/>
);
-group_neutralize(fear * <signal/>, bucket(rank(cap), range="0.1,1,0.1"))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<d/>` | `20`, `22` | 恐惧指标窗口 |
| `<signal/>` | 主信号表达式 | 待组合信号 |

---

### TPL-704: 债务杠杆相关性
```
模板: group_neutralize(ts_zscore(<leverage_field/>, <d1/>) * ts_corr(<leverage_field/>, returns, <d2/>), sector)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<leverage_field/>` | `debt_to_equity`, `debt/assets` | 杠杆字段 |
| `<d1/>` | `60`, `126` | zscore窗口 |
| `<d2/>` | `20`, `66` | 相关性窗口 |

---

### TPL-705: 模型数据信号
```
模板: -<model_field/>
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<model_field/>` | `mdl175_01dtsv`, `mdl175_01icc` | 模型字段 |

**带排名版**:
```
rank(group_rank(ts_rank(ts_backfill(<model_field/>, 5), 5), sta1_top3000c20))
```

---

### TPL-706: 回归zscore模板
```
模板: ts_regression(ts_zscore(<field1/>, <d/>), ts_zscore(<field2/>, <d/>), <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field1/>` | MATRIX字段 | Y变量 |
| `<field2/>` | MATRIX字段或vec_sum(VECTOR) | X变量 |
| `<d/>` | `252`, `500`, `504` | 回归窗口 |

---

### TPL-707: 分组Delta模板
```
模板: group_neutralize(ts_delta(<field/>, <d/>), sector)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意数据字段 | 主字段 |
| `<d/>` | `22`, `66`, `126` | 差分窗口 |

---

## 第九部分：数据预处理模板 (TPL-801 ~ TPL-815)

### TPL-801: Winsorize截断
```
模板: winsorize(<field/>, std=<std/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 原始数据 |
| `<std/>` | `3`, `4`, `5` | 截断标准差 |

---

### TPL-802: Sigmoid归一化
```
模板: sigmoid(<ts_op/>(<field/>, <d/>))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_zscore`, `ts_ir`, `ts_rank` | 时序操作 |
| `<field/>` | 任意字段 | 原始数据 |
| `<d/>` | `22`, `66`, `252` | 窗口 |

---

### TPL-803: 数据回填
```
模板: ts_backfill(<field/>, <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 低频数据字段 | 需要回填的字段 |
| `<d/>` | `115`, `120`, `180`, `252` | 回填窗口 |

---

### TPL-804: 条件替换
```
模板: if_else(is_not_nan(<field/>), <field/>, <alternative/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 主字段 | 可能有NaN的字段 |
| `<alternative/>` | 替代字段或值 | NaN时的替代 |

---

### TPL-805: 极端值替换
```
模板: tail(tail(<field/>, lower=<low/>, upper=<high/>, newval=<low/>), lower=-<high/>, upper=-<low/>, newval=-<low/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 原始数据 |
| `<low/>` | `0.25`, `0.1` | 下界 |
| `<high/>` | `100`, `1000` | 上界 |

---

### TPL-806: 组合预处理
```
模板: <ts_op/>(winsorize(ts_backfill(<field/>, <d_backfill/>), std=<std/>), <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_rank`, `ts_zscore`, `ts_mean` | 时序操作 |
| `<field/>` | 低频字段 | 需要处理的字段 |
| `<d_backfill/>` | `120`, `180` | 回填窗口 |
| `<std/>` | `4` | winsorize参数 |
| `<d/>` | `22`, `66` | 操作窗口 |

---

### TPL-807: ts_min/ts_max替代
```
模板: ts_backfill(if_else(ts_arg_min(<field/>, <d/>) == 0, <field/>, nan), 120)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 原始数据 |
| `<d/>` | `22`, `66`, `126` | 窗口 |

**说明**: 当ts_min/ts_max不可用时的替代方案

---

## 第十部分：高级统计模板 (TPL-901 ~ TPL-920)

### TPL-901: 高阶矩模板 (ts_moment)
```
模板: <ts_op/>(<group_op/>(ts_moment(<field/>, <d/>, k=<k/>), <group/>))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `rank`, `zscore`, `sigmoid` | 标准化操作 |
| `<group_op/>` | `group_rank`, `group_zscore` | 分组操作 |
| `<field/>` | 任意MATRIX字段 | 数据字段 |
| `<d/>` | `22`, `66`, `126` | 窗口 |
| `<k/>` | `2`, `3`, `4` | k=2方差, k=3偏度, k=4峰度 |

**说明**: ts_moment(x, d, k)计算k阶中心矩

---

### TPL-902: 协偏度/协峰度模板
```
模板: <group_op/>(ts_co_skewness(<field1/>, <field2/>, <d/>), <group/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<group_op/>` | `group_rank`, `group_zscore` | 分组操作 |
| `<field1/>` | `returns`, `close` | 第一变量 |
| `<field2/>` | `volume`, `vwap` | 第二变量 |
| `<d/>` | `66`, `126`, `252` | 窗口 |

**协峰度版**:
```
模板: <group_op/>(ts_co_kurtosis(<field1/>, <field2/>, <d/>), <group/>)
```

---

### TPL-903: 偏相关模板 (ts_partial_corr)
```
模板: group_rank(ts_partial_corr(<field1/>, <field2/>, <control/>, <d/>), <group/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field1/>` | `returns`, 收益相关 | Y变量 |
| `<field2/>` | 任意字段 | X变量 |
| `<control/>` | `group_mean(returns, 1, market)` | 控制变量(市场收益) |
| `<d/>` | `60`, `126`, `252` | 窗口 |
| `<group/>` | `sector`, `industry` | 分组 |

**说明**: 计算两变量偏相关，控制第三变量影响

---

### TPL-904: 三元相关模板 (ts_triple_corr)
```
模板: group_rank(ts_triple_corr(<field1/>, <field2/>, <field3/>, <d/>), <group/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field1/>` | `returns` | 第一变量 |
| `<field2/>` | `volume` | 第二变量 |
| `<field3/>` | 基本面字段 | 第三变量 |
| `<d/>` | `60`, `126` | 窗口 |
| `<group/>` | `sector`, `industry` | 分组 |

---

### TPL-905: Theil-Sen回归模板
```
模板: group_rank(ts_theilsen(<field1/>, <field2/>, <d/>), <group/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field1/>` | 任意MATRIX字段 | Y变量 |
| `<field2/>` | 任意MATRIX字段或`ts_step(1)` | X变量 |
| `<d/>` | `126`, `252`, `500` | 窗口 |
| `<group/>` | `sector`, `industry` | 分组 |

**说明**: Theil-Sen回归比普通回归更鲁棒

---

### TPL-906: 多项式回归残差
```
模板: ts_poly_regression(<field1/>, <field2/>, <d/>, k=<k/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field1/>` | Y变量 | 被解释变量 |
| `<field2/>` | X变量 | 解释变量 |
| `<d/>` | `126`, `252` | 窗口 |
| `<k/>` | `1`, `2`, `3` | 多项式阶数, k=2为二次回归 |

**说明**: 返回 y - Ey (残差)

---

### TPL-907: 向量中性化模板
```
模板: ts_vector_neut(<alpha/>, <risk_factor/>, <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 待中性化Alpha |
| `<risk_factor/>` | `returns`, `cap` | 风险因子 |
| `<d/>` | `22`, `66`, `126` | 窗口(不宜过长，计算慢) |

**分组向量中性化**:
```
模板: group_vector_neut(<alpha/>, <risk_factor/>, <group/>)
```

---

### TPL-908: 加权衰减模板
```
模板: group_neutralize(ts_weighted_decay(<alpha/>, k=<k/>), <group/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 待衰减Alpha |
| `<k/>` | `0.3`, `0.5`, `0.7` | 衰减系数 |
| `<group/>` | `bucket(rank(cap), range="0.1,1,0.1")` | 分组 |

---

### TPL-909: 回归斜率模板
```
模板: ts_regression(ts_zscore(<field/>, <d/>), ts_step(1), <d/>, rettype=2)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意MATRIX字段 | 数据字段 |
| `<d/>` | `252`, `500` | 窗口 |

**说明**: rettype=2返回斜率，用于检测趋势

---

### TPL-910: 最小最大压缩模板
```
模板: ts_min_max_cps(<field/>, <d/>, f=<f/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 数据字段 |
| `<d/>` | `22`, `66`, `126` | 窗口 |
| `<f/>` | `2`, `0.5` | 压缩因子 |

**等价公式**: `x - f * (ts_min(x, d) + ts_max(x, d))`

---

## 第十一部分：事件驱动模板 (TPL-1001 ~ TPL-1020)

### TPL-1001: 数据变化天数模板
```
模板: if_else(days_from_last_change(<field/>) == <days/>, <alpha/>, nan)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 基本面字段 | 监测变化的字段 |
| `<days/>` | `1`, `2`, `5` | 距离变化的天数 |
| `<alpha/>` | `ts_delta(close, 5)`, 主信号 | 事件触发时的Alpha |

**动态衰减版**:
```
模板: <alpha/> / (1 + days_from_last_change(<field/>))
```

---

### TPL-1002: 最近差值模板
```
模板: <ts_op/>(last_diff_value(<field/>, <d/>), <d2/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_rank`, `ts_zscore` | 时序操作 |
| `<field/>` | 任意字段 | 数据字段 |
| `<d/>` | `60`, `90`, `120` | 回溯窗口 |
| `<d2/>` | `22`, `66` | 操作窗口 |

**说明**: 返回过去d天内最近一次不同于当前值的历史值

---

### TPL-1003: 缺失值计数模板
```
模板: -ts_count_nans(ts_backfill(<field/>, <d1/>), <d2/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 分析师数据等 | 可能有缺失的字段 |
| `<d1/>` | `5`, `10` | 回填窗口 |
| `<d2/>` | `20`, `30` | 计数窗口 |

**应用**: 分析师覆盖度信号，缺失越少覆盖越好

---

### TPL-1004: 位置最大/最小模板
```
模板: if_else(ts_arg_max(<field/>, <d/>) == <position/>, <alpha/>, nan)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | `volume`, 任意字段 | 监测字段 |
| `<d/>` | `5`, `10` | 窗口 |
| `<position/>` | `0`, `1` | 0表示今天是最大值 |
| `<alpha/>` | 主信号 | 条件满足时的Alpha |

**组合条件**:
```
模板: (ts_arg_max(<field1/>, <d/>) == ts_arg_max(<field2/>, <d/>)) * (<alpha1/> + <alpha2/>)
```

---

### TPL-1005: 财报发布事件模板
```
模板:
event_signal = if_else(ts_delta(<fundamental_field/>, 1) != 0, <alpha/>, nan);
ts_decay_linear(event_signal, <decay_d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<fundamental_field/>` | `assets`, `sales`, `eps` | 基本面字段 |
| `<alpha/>` | `ts_delta(close, 5)`, 主信号 | 事件Alpha |
| `<decay_d/>` | `10`, `22` | 衰减窗口 |

---

### TPL-1006: 动态Decay事件驱动
```
模板:
decay_weight = 1 / (1 + days_from_last_change(<event_field/>));
<alpha/> * decay_weight
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<event_field/>` | 任意字段 | 事件触发字段 |
| `<alpha/>` | 主信号 | 原始Alpha |

---

### TPL-1007: 盈利公告模板
```
模板:
surprise = <actual_field/> - <estimate_field/>;
if_else(days_from_last_change(<actual_field/>) < <window/>, surprise, nan)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<actual_field/>` | `eps` | 实际值 |
| `<estimate_field/>` | `vec_avg(anl4_eps_mean)` | 预测值 |
| `<window/>` | `5`, `10` | 事件有效窗口 |

---

## 第十二部分：信号处理模板 (TPL-1101 ~ TPL-1120)

### TPL-1101: 黄金比例幂变换
```
模板: signed_power(<alpha/>, 0.618)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号表达式 | 原始Alpha |

**其他幂次**:
```
signed_power(<alpha/>, 0.5)   # 平方根
signed_power(<alpha/>, 2)     # 平方增强
```

---

### TPL-1102: 尾部截断模板
```
模板: right_tail(<alpha/>, minimum=<min/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 原始Alpha |
| `<min/>` | `0`, `0.1` | 最小阈值 |

**左尾版**:
```
模板: left_tail(<alpha/>, maximum=<max/>)
```

---

### TPL-1103: Clamp边界限制
```
模板: clamp(<alpha/>, lower=<low/>, upper=<high/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 原始Alpha |
| `<low/>` | `-1`, `-0.5` | 下界 |
| `<high/>` | `1`, `0.5` | 上界 |

---

### TPL-1104: 分数映射模板
```
模板: fraction(<alpha/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 原始Alpha |

**说明**: 将连续变量映射到分布内的相对位置

---

### TPL-1105: NaN外推模板
```
模板: nan_out(<field/>, lower=<low/>, upper=<high/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 数据字段 |
| `<low/>` | `-3`, `-5` | 下界 |
| `<high/>` | `3`, `5` | 上界 |

**说明**: 将超出范围的值替换为NaN

---

### TPL-1106: Purify数据清洗
```
模板: purify(<field/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 需要清洗的数据 |

**说明**: 自动化数据清洗，减少噪声和异常值

---

### TPL-1107: 条件保留模板
```
模板: keep(<field/>, <condition/>, period=<d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 数据字段 |
| `<condition/>` | `<field/> > 0` | 保留条件 |
| `<d/>` | `3`, `5`, `10` | 滚动窗口 |

**示例**:
```
keep(returns, returns > 0, period=3)  # 只保留正收益
```

---

### TPL-1108: 缩放降维模板
```
模板: -scale_down(<ts_op/>(<field/>, <d1/>), constant=<c/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_mean`, `ts_rank` | 时序操作 |
| `<field/>` | `returns`, 任意字段 | 数据字段 |
| `<d1/>` | `2`, `5` | 窗口 |
| `<c/>` | `0.1`, `0.05` | 缩放常数 |

---

### TPL-1109: Truncate截断模板
```
模板: truncate(<alpha/>, maxPercent=<percent/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 原始Alpha |
| `<percent/>` | `0.01`, `0.05` | 截断百分比 |

---

### TPL-1110: 组合Normalize模板
```
模板: group_normalize(<alpha/>, <group/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 原始Alpha |
| `<group/>` | `sector`, `industry` | 分组 |

**等价公式**: `alpha / group_sum(abs(alpha), group)`

---

## 第十三部分：Turnover控制模板 (TPL-1201 ~ TPL-1215)

### TPL-1201: 目标换手率Hump
```
模板: ts_target_tvr_hump(<alpha/>, lambda_min=0, lambda_max=1, target_tvr=<target/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 原始Alpha |
| `<target/>` | `0.1`, `0.15`, `0.2` | 目标换手率 |

---

### TPL-1202: Delta限制换手率
```
模板: ts_target_tvr_delta_limit(<alpha/>, <factor/>, lambda_min=0, lambda_max=1, target_tvr=<target/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 原始Alpha |
| `<factor/>` | 辅助因子 | 限制因子 |
| `<target/>` | `0.1`, `0.15` | 目标换手率 |

---

### TPL-1203: Hump衰减组合
```
模板: hump_decay(<alpha/>, hump=<h/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 原始Alpha |
| `<h/>` | `0.001`, `0.01` | Hump参数 |

**嵌套版**:
```
hump(hump_decay(<alpha/>, hump=0.001))
```

---

### TPL-1204: 平均+Hump模板
```
模板: -ts_mean(ts_target_tvr_hump(group_rank(<field/>, country), lambda_min=0, lambda_max=1, target_tvr=<target/>), <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 数据字段 |
| `<target/>` | `0.1` | 目标换手率 |
| `<d/>` | `5`, `10` | 平均窗口 |

---

### TPL-1205: 简单Hump模板
```
模板: hump(<alpha/>, hump=<h/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 原始Alpha |
| `<h/>` | `0.01`, `0.001`, `0.0001` | Hump参数 |

**示例**:
```
hump(-ts_delta(close, 5), hump=0.01)
```

---

## 第十四部分：回填与覆盖模板 (TPL-1301 ~ TPL-1315)

### TPL-1301: 分组回填模板
```
模板: group_backfill(<field/>, <group/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 需要回填的字段 |
| `<group/>` | `sector`, `industry`, `market` | 分组字段 |

**说明**: 使用组内最近值填充NaN

---

### TPL-1302: 嵌套回填排名
```
模板: rank(group_backfill(<field/>, <group/>))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 数据字段 |
| `<group/>` | `sector`, `industry` | 分组 |

---

### TPL-1303: 覆盖度过滤
```
模板: group_count(is_nan(<field/>), market) > <threshold/> ? <alpha/> : nan
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 检测字段 |
| `<threshold/>` | `40`, `50` | 最小覆盖数 |
| `<alpha/>` | 主信号 | 原始Alpha |

---

### TPL-1304: NaN替换模板
```
模板: if_else(is_not_nan(<field/>), <field/>, <default/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 数据字段 |
| `<default/>` | `0`, `0.5`, `nan` | 默认值 |

---

### TPL-1305: 综合数据清洗
```
模板: <ts_op/>(winsorize(group_backfill(ts_backfill(<field/>, <d1/>), <group/>), std=<std/>), <d2/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `ts_rank`, `ts_zscore` | 时序操作 |
| `<field/>` | 低频字段 | 数据字段 |
| `<d1/>` | `120`, `180` | 时序回填窗口 |
| `<group/>` | `sector`, `industry` | 分组回填 |
| `<std/>` | `4` | winsorize参数 |
| `<d2/>` | `66`, `126` | 操作窗口 |

---

## 第十五部分：组合提取模板 (TPL-1401 ~ TPL-1415)

### TPL-1401: group_extra填补模板
```
模板: group_extra(<field/>, <weight/>, <group/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 数据字段 |
| `<weight/>` | `0.5`, `1` | 权重 |
| `<group/>` | `densify(industry)`, `sector` | 分组 |

**说明**: 用组均值填补缺失值

---

### TPL-1402: 组合提取sigmoid
```
模板: scale(group_extra(ts_sum(sigmoid(ts_backfill(<field/>, <d1/>)), <d2/>) - ts_sum(sigmoid(ts_backfill(<field/>, <d1/>)), <d2/>), 0.5, densify(industry)))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 数据字段 |
| `<d1/>` | `180` | 回填窗口 |
| `<d2/>` | `3` | 求和窗口 |

---

### TPL-1403: PnL反馈模板
```
模板: if_else(inst_pnl(<alpha/>) > <threshold/>, <alpha/>, nan)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 原始Alpha |
| `<threshold/>` | `0`, `-0.05` | PnL阈值 |

**说明**: 基于单标的PnL进行条件交易

---

### TPL-1404: 流动性加权模板
```
模板: <alpha/> * log(volume)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 原始Alpha |

**说明**: 将仓位偏向高流动性股票

---

### TPL-1405: 市值回归中性化
```
模板: regression_neut(<alpha/>, log(cap))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<alpha/>` | 主信号 | 原始Alpha |

**说明**: 剥离市值因子影响

---

## 第十六部分：百分位与分位数模板 (TPL-1501 ~ TPL-1510)

### TPL-1501: 时序百分位模板
```
模板: ts_percentage(<field/>, <d/>, percentage=<p/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 数据字段 |
| `<d/>` | `22`, `66`, `126` | 窗口 |
| `<p/>` | `0.5`, `0.25`, `0.75` | 百分位 |

---

### TPL-1502: 分位数模板
```
模板: <ts_op/>(ts_quantile(<field/>, <d/>, <q/>), <d2/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ts_op/>` | `rank`, `zscore` | 标准化 |
| `<field/>` | 任意字段 | 数据字段 |
| `<d/>` | `66`, `126` | 窗口 |
| `<q/>` | `0.25`, `0.5`, `0.75` | 分位数 |
| `<d2/>` | `22` | 操作窗口 |

---

### TPL-1503: Max-Min比率模板
```
模板: ts_max_diff(<field/>, <d/>) / ts_av_diff(<field/>, <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 数据字段 |
| `<d/>` | `22`, `66` | 窗口 |

---

### TPL-1504: 中位数模板
```
模板: <field/> - ts_median(<field/>, <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<field/>` | 任意字段 | 数据字段 |
| `<d/>` | `22`, `66`, `252` | 窗口 |

---

### TPL-1505: 累积乘积模板
```
模板: ts_product(1 + <ret_field/>, <d/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<ret_field/>` | `returns`, 收益率字段 | 收益字段 |
| `<d/>` | `5`, `22`, `66` | 窗口 |

**说明**: 计算累积收益

---

## 第十七部分：实战表达式模板 (TPL-1601 ~ TPL-1700)

**说明**: 以下模板从社区高票帖子中提取，为实际验证过的表达式格式。

### TPL-1601: ts_max/ts_min替代公式
```
模板: {data} - ts_max_diff({data}, {d})                      # 等效于 ts_max
模板: (({data} - ts_max_diff({data}, {d})) * ts_scale({data}, {d}) - {data}) / (ts_scale({data}, {d}) - 1)  # 等效于 ts_min
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{data}` | 任意MATRIX字段 | 数据字段 |
| `{d}` | `22`, `66`, `126` | 窗口 |

**应用**: 当平台不支持ts_max/ts_min时的替代方案

---

### TPL-1602: 线性衰减权重公式
```
模板: weight = {d} + ts_step(0); ts_sum({data} * weight, {d}) / ts_sum(weight, {d})  # 等效于 ts_decay_linear
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{data}` | 任意字段 | 数据字段 |
| `{d}` | `10`, `22`, `66` | 衰减窗口 |

---

### TPL-1603: 组归一化公式
```
模板: {data} / group_sum(abs({data}), {group})  # 等效于 group_normalize
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{data}` | 任意字段 | 数据字段 |
| `{group}` | `industry`, `sector` | 分组字段 |

---

### TPL-1604: IR+峰度组合模板
```
模板:
rank_data = rank({field});
ts_ir(rank_data, {d}) + ts_kurtosis(rank_data, {d})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | `volume`, `returns`, 任意字段 | 数据字段 |
| `{d}` | `22`, `66` | 窗口 |

**说明**: IR和峰度组合捕捉信号强度和分布特征

---

### TPL-1605: VWAP相关性信号
```
模板: returns > -{threshold} ? (ts_ir(ts_corr(ts_returns(vwap, 1), ts_delay(group_neutralize({field}, market), {d1}), {d2}), {d2})) : -1
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 任意数据字段 | 信号字段 |
| `{threshold}` | `0.1`, `0.05` | 收益过滤阈值 |
| `{d1}` | `30`, `60` | 延迟窗口 |
| `{d2}` | `90`, `120` | 相关性窗口 |

---

### TPL-1606: 球队硬币因子 (ballteam_coin)
```
模板:
# 基础版
rank(ballteam_coin)

# 市值中性化版
group_neutralize(rank(ballteam_coin), bucket(rank(assets), range='0.1,1,0.1'))
```
**说明**: 经典球队vs硬币因子，用于捕捉收益持续性

---

### TPL-1607: 偏度因子模板
```
模板: -group_rank(ts_skewness(returns, {d}), {group})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{d}` | `22`, `66`, `126` | 偏度计算窗口 |
| `{group}` | `sector`, `industry` | 分组 |

**说明**: 负偏度股票往往表现更好

---

### TPL-1608: 熵信号模板
```
模板: ts_zscore({field}, {d1}) * ts_entropy({field}, {d2})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | `returns`, 任意字段 | 信号字段 |
| `{d1}` | `14`, `22` | zscore窗口 |
| `{d2}` | `14`, `22` | 熵窗口 |

**说明**: 结合标准化和不确定性度量

---

### TPL-1609: 分析师动量短长差模板
```
模板: log(ts_mean(anl4_{data}_{stats}, {d_short})) - log(ts_mean(anl4_{data}_{stats}, {d_long}))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{data}` | `eps`, `revenue`, `netprofit` | 分析师预测类型 |
| `{stats}` | `mean`, `low`, `high` | 统计量类型 |
| `{d_short}` | `20`, `44` | 短期窗口 |
| `{d_long}` | `44`, `126` | 长期窗口 |

---

### TPL-1610: 目标换手率分组排名
```
模板: -ts_mean(ts_target_tvr_hump(group_rank({field}, country), lambda_min=0, lambda_max=1, target_tvr={target}), {d})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 任意字段 | 数据字段 |
| `{target}` | `0.1`, `0.15` | 目标换手率 |
| `{d}` | `5`, `10` | 平均窗口 |

---

### TPL-1611: 最大差/均值差比率
```
模板: ts_max_diff({field}, {d}) / ts_av_diff({field}, {d})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 任意字段 | 数据字段 |
| `{d}` | `22`, `66` | 窗口 |

**说明**: 捕捉极端值相对于平均变化的幅度

---

### TPL-1612: 模型数据三层嵌套
```
模板:
a = rank(group_rank(ts_rank(ts_backfill({model_field}, 5), 5), sta1_top3000c20));
trade_when(rank(a) > 0.03, -zscore(ts_zscore({model_field}, 25)) * a, 0.25 - rank(a))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{model_field}` | `mdl175_01icc`, `mdl175_01dtsv` | 模型字段 |

---

### TPL-1613: 量价触发条件交易
```
模板:
triggerTradeexp = (ts_arg_max(volume, {d}) < 1) && (volume > ts_sum(volume, {d}) / {d});
triggerExitexp = -1;
alphaexp = -rank(ts_delta(close, 2));
trade_when(triggerTradeexp, alphaexp, triggerExitexp)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{d}` | `5`, `10` | 窗口 |

**说明**: 今日成交量为近期最大且高于均值时交易

---

### TPL-1614: 情绪成交量交易
```
模板:
sent_vol = vec_sum(scl12_alltype_buzzvec);
trade_when(rank(sent_vol) > 0.95, -zscore(scl12_buzz) * sent_vol, -1)
```
**说明**: 高情绪量时反向交易情绪

---

### TPL-1615: 双层中性化模板
```
模板:
a = ts_zscore({field}, 252);
a1 = group_neutralize(a, industry);
a2 = group_neutralize(a1, bucket(rank(cap), range='0.1,1,0.1'))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 任意字段 | 数据字段 |

**说明**: 先行业后市值的双重中性化

---

### TPL-1616: 相关性计算公式
```
模板:
a = {field1};
b = {field2};
p = {d};
c = ts_mean(ts_av_diff(a, p) * ts_av_diff(b, p), p);
c / ts_std_dev(a, p) / ts_std_dev(b, p)  # 近似 ts_corr
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field1}` | `close`, `returns` | 第一字段 |
| `{field2}` | `volume`, `open` | 第二字段 |
| `{d}` | `5`, `22` | 窗口 |

---

### TPL-1617: 回归中性化双因子
```
模板:
afr = vec_avg({analyst_field});
short_mom = ts_mean(returns - group_mean(returns, 1, market), {d_short});
long_mom = ts_delay(ts_mean(returns - group_mean(returns, 1, market), {d_long}), {d_long});
regression_neut(regression_neut(afr, short_mom), long_mom)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{analyst_field}` | 分析师VECTOR字段 | 分析师数据 |
| `{d_short}` | `5`, `10` | 短期动量窗口 |
| `{d_long}` | `20`, `22` | 长期动量窗口 |

**说明**: 剥离短期和长期动量后的分析师因子

---

### TPL-1618: 回归斜率趋势检测
```
模板: ts_regression(ts_zscore({field}, {d}), ts_step(1), {d}, rettype=2)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 任意MATRIX字段 | 数据字段 |
| `{d}` | `252`, `500` | 窗口 |

**说明**: rettype=2返回回归斜率，检测长期趋势

---

### TPL-1619: 三因子乘积组合
```
模板:
my_group = market;
rank(
group_rank(ts_decay_linear(volume / ts_sum(volume, 252), 10), my_group) *
group_rank(ts_rank(vec_avg({fundamental}), {d}), my_group) *
group_rank(-ts_delta(close, 5), my_group)
)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{fundamental}` | 基本面VECTOR字段 | 基本面数据 |
| `{d}` | `252`, `504` | 排名窗口 |

**说明**: 成交量趋势 × 基本面排名 × 价格反转

---

### TPL-1620: 波动率条件反转
```
模板:
vol = ts_std_dev(returns, {d});
vol_mean = group_mean(vol, 1, market);
flip_ret = if_else(vol < vol_mean, -returns, returns);
-ts_mean(flip_ret, {d})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{d}` | `20`, `22` | 窗口 |

**说明**: 低波动做反转，高波动做动量

---

### TPL-1621: 恐惧指标复合
```
模板:
fear = ts_mean(
abs(returns - group_mean(returns, 1, market)) /
(abs(returns) + abs(group_mean(returns, 1, market)) + 0.1),
{d}
);
-group_neutralize(fear * {signal}, bucket(rank(cap), range='0.1,1,0.1'))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{d}` | `20`, `22` | 窗口 |
| `{signal}` | 主信号 | 待组合信号 |

---

### TPL-1622: 财务质量单因子
```
模板: group_neutralize(rank({fundamental_field}), bucket(rank(cap), range='0,1,0.1'))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{fundamental_field}` | `roe`, `roa`, `net_income/assets` | 财务质量指标 |

---

### TPL-1623: 老虎哥回归模板
```
模板: group_rank(ts_regression(ts_zscore({field1}, {d}), ts_zscore(vec_sum({field2}), {d}), {d}), densify(sector))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field1}` | 任意MATRIX字段 | Y变量 |
| `{field2}` | 任意VECTOR字段 | X变量 |
| `{d}` | `252`, `504` | 回归窗口 |

---

### TPL-1624: 综合数据清洗模板
```
模板: ts_decay_linear(-densify(zscore(winsorize(ts_backfill({field}, 115), std=4))), 10)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 低频字段如 `anl4_adjusted_netincome_ft` | 需要处理的字段 |

---

### TPL-1625: 延迟最大值位置模板
```
模板: ts_max({field}, {d}) = ts_delay({field}, ts_arg_max({field}, {d}))  # 等效公式
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 任意字段 | 数据字段 |
| `{d}` | `22`, `66` | 窗口 |

---

### TPL-1626: 数据探索通用模板
```
模板: zscore(ts_delta(rank(ts_zscore({field}, {d1})), {d2}))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 任意MATRIX字段 | 待探索数据字段 |
| `{d1}` | `60`, `126`, `252` | zscore窗口 |
| `{d2}` | `5`, `10`, `22` | delta窗口 |

**说明**: 顾问推荐的新数据探索模板，可替换op和时间参数

---

### TPL-1627: 自定义衰减权重模板
```
模板:
weight = {d} + ts_step(0);                       # 线性递增权重
ts_sum({data} * weight, {d}) / ts_sum(weight, {d})  # 加权平均

# 替代版 (ts_step递减)
ts_sum({alpha} * ts_step(1), {d}) / ts_sum(ts_step(1), {d})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{data}` | 任意字段 | 数据字段 |
| `{alpha}` | 主信号 | 原始Alpha |
| `{d}` | `10`, `22`, `66` | 衰减窗口 |

**说明**: 当没有ts_decay_linear权限时的替代方案

---

### TPL-1628: log_diff相对增长模板
```
模板: group_rank(log_diff({field}), {group})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 财务指标如 `sales`, `eps`, `assets` | 数据字段 |
| `{group}` | `sector`, `industry` | 分组 |

**说明**: 检测相对增长率，对乘性变化更敏感

---

### TPL-1629: ts_product累积收益模板
```
模板: group_rank(ts_product(1 + {ret_field}, {d}), {group})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{ret_field}` | `returns`, 收益率字段 | 收益字段 |
| `{d}` | `22`, `66`, `126` | 窗口 |
| `{group}` | `sector`, `industry` | 分组 |

**说明**: 计算累积收益排名

---

### TPL-1630: ts_percentage阈值模板
```
模板:
high_threshold = ts_percentage({field}, {d}, percentage=0.5);
low_threshold = ts_percentage({field}, {d}, percentage=0.5);
{signal}
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | `close`, 价格字段 | 阈值计算字段 |
| `{d}` | `22`, `66` | 窗口 |
| `{signal}` | 主信号 | 条件信号 |

**说明**: 用于震荡带突破策略的阈值构建

---

### TPL-1631: 动量反转切换模板
```
模板:
mom = ts_sum(returns, {d_long}) - ts_sum(returns, {d_short});
reversal = -ts_delta(close, {d_short});
if_else(ts_rank(ts_std_dev(returns, {d_short}), {d_long}) > 0.5, mom, reversal)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{d_short}` | `5`, `10` | 短期窗口 |
| `{d_long}` | `22`, `66` | 长期窗口 |

**说明**: 高波动环境用动量，低波动环境用反转

---

### TPL-1632: 市场收益率近似模板 (CHN)
```
模板:
value = rank(cap) > 0.9 ? cap : 0;
market_return = group_sum(returns * value, country) / group_sum(value, country);
market_return
```
**说明**: 用市值加权近似沪深300指数收益率，设置neutralization=NONE, decay=0

---

### TPL-1633: Beta回归中性化模板
```
模板:
market_return = group_mean(returns, 1, market);
ts_regression({field}, market_return, {d})  # 返回残差(Y - E[Y])
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 任意MATRIX字段 | 待中性化字段 |
| `{d}` | `126`, `252` | 回归窗口 |

**说明**: 使用一元线性回归剥离市场因子

---

### TPL-1634: ts_moment高阶矩k值模板
```
模板: ts_moment({field}, {d}, k={k})

k=2: 方差 (等价于 ts_std_dev^2)
k=3: 偏度 (等价于 ts_skewness)
k=4: 峰度 (等价于 ts_kurtosis)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 任意MATRIX字段 | 数据字段 |
| `{d}` | `22`, `66`, `126` | 窗口 |
| `{k}` | `2`, `3`, `4` | 阶数 |

---

### TPL-1635: 龙头股因子增强模板
```
模板: sigmoid(rank(star_pm_global_rank))
```
**说明**: 对龙头股因子进行sigmoid增强

---

### TPL-1636: purify数据清洗嵌套模板
```
模板: group_rank(ts_rank(purify({field}), {d}), {group})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 任意字段 | 待清洗数据 |
| `{d}` | `22`, `66` | 排名窗口 |
| `{group}` | `sector`, `industry` | 分组 |

**说明**: purify自动化清洗异常值和噪声

---

### TPL-1637: 理想振幅因子模板
```
模板:
amplitude = (high - low) / close;
ideal_amp = ts_percentage(amplitude, {d}, percentage=0.5);
group_rank(amplitude - ideal_amp, {group})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{d}` | `22`, `66` | 百分位窗口 |
| `{group}` | `sector`, `industry` | 分组 |

**说明**: 实际振幅偏离理想振幅的程度

---

### TPL-1638: 异同离差乖离率因子 (MACD风格)
```
模板:
ema_short = ts_decay_exp_window({field}, {d_short}, 0.9);
ema_long = ts_decay_exp_window({field}, {d_long}, 0.9);
dif = ema_short - ema_long;
ts_zscore(dif, {d_signal})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | `close`, 价格字段 | 数据字段 |
| `{d_short}` | `12`, `22` | 短期EMA窗口 |
| `{d_long}` | `26`, `66` | 长期EMA窗口 |
| `{d_signal}` | `9`, `22` | 信号线窗口 |

---

### TPL-1639: 收益率条件筛选反转
```
模板:
high_ret = ts_rank(returns, {d1}) > 0.8;
low_ret = ts_rank(returns, {d1}) < 0.2;
if_else(high_ret, -returns, if_else(low_ret, returns, 0))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{d1}` | `22`, `66` | 排名窗口 |

**说明**: 只对极端收益做反转

---

### TPL-1640: 三阶模板优化版
```
模板: <group_op/>(<ts_op1/>(<ts_op2/>(<field/>, <d1/>), <d2/>), <group/>)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `<group_op/>` | `group_rank`, `group_zscore` | 外层分组操作 |
| `<ts_op1/>` | `ts_rank`, `ts_delta`, `ts_mean` | 中层时序操作 |
| `<ts_op2/>` | `ts_zscore`, `ts_rank`, `ts_ir` | 内层时序操作 |
| `<field/>` | 任意字段 | 数据字段 |
| `<d1/>` | `60`, `126`, `252` | 内层窗口 |
| `<d2/>` | `5`, `22`, `66` | 外层窗口 |
| `<group/>` | `sector`, `industry` | 分组 |

**说明**: 经典三阶嵌套结构，可灵活替换各层操作符

---

### TPL-1641: ts_entropy信号检测模板
```
模板: ts_entropy({field}, {d})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | `returns`, `volume`, 任意MATRIX字段 | 数据字段 |
| `{d}` | `14`, `22`, `66` | 窗口 |

**说明**: 衡量时序数据的不确定性，高熵值表示更多随机性

---

### TPL-1642: 熵+ZScore组合模板
```
模板: ts_zscore({field}, {d}) * ts_entropy({field}, {d})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 任意MATRIX字段 | 数据字段 |
| `{d}` | `14`, `22` | 窗口 |

**说明**: RSI超买超卖 + 熵不确定性组合，捕捉可能的修正

---

### TPL-1643: ts_ir+ts_entropy信号组合
```
模板:
signal = ts_ir({field}, {d}) + ts_entropy({field}, {d});
group_rank(signal, {group})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 任意MATRIX字段 | 数据字段 |
| `{d}` | `22`, `66` | 窗口 |
| `{group}` | `sector`, `industry` | 分组 |

**说明**: IR(信息比率)和Entropy组合捕捉信号稳定性和分布特征

---

### TPL-1644: trade_when市值过滤模板
```
模板: trade_when(rank(cap) > {threshold}, {alpha}, -1)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{threshold}` | `0.3`, `0.5`, `0.7` | 市值排名阈值 |
| `{alpha}` | 主信号 | 原始Alpha |

**说明**: 仅交易大市值股票，降低prod corr

---

### TPL-1645: trade_when盈利过滤模板
```
模板: trade_when(eps > {threshold} * est_eps, group_rank((eps - est_eps)/est_eps, industry), -1)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{threshold}` | `1.0`, `1.1`, `1.2` | 盈利超预期比例 |

**说明**: 只交易盈利超预期的股票

---

### TPL-1646: trade_when量价触发模板
```
模板:
triggerTrade = (ts_arg_max(volume, {d}) < 1) && (volume > ts_sum(volume, {d})/{d});
trade_when(triggerTrade, {alpha}, -1)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{d}` | `5`, `10` | 判断窗口 |
| `{alpha}` | `-rank(ts_delta(close, 2))` | 主信号 |

**说明**: 量价突破触发条件交易

---

### TPL-1647: trade_when情绪量过滤模板
```
模板:
sent_vol = vec_sum({sentiment_vec});
trade_when(rank(sent_vol) > {threshold}, -zscore({sentiment_field}) * sent_vol, -1)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{sentiment_vec}` | `scl12_alltype_buzzvec` 等VECTOR字段 | 情绪向量 |
| `{sentiment_field}` | `scl12_buzz`, `scl12_sentiment` | 情绪字段 |
| `{threshold}` | `0.9`, `0.95` | 情绪量阈值 |

**说明**: 高情绪量时反向交易情绪

---

### TPL-1648: bucket市值分组中性化模板
```
模板:
my_group2 = bucket(rank(cap), range='{range}');
group_neutralize({alpha}, my_group2)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{range}` | `'0,1,0.1'`, `'0.1,1,0.1'` | 分桶范围 |
| `{alpha}` | 主信号 | 原始Alpha |

**说明**: 按市值分桶进行中性化，去除规模效应

---

### TPL-1649: group_zscore时序组合模板
```
模板: group_zscore(ts_ir({field}, {d}), {group})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 任意MATRIX字段 | 数据字段 |
| `{d}` | `22`, `66`, `126` | IR窗口 |
| `{group}` | `sector`, `industry` | 分组 |

**说明**: 在分组内进行IR的Z-score标准化

---

### TPL-1650: scale+rank+ts组合模板
```
模板: scale(rank(ts_zscore({field}, {d})))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 任意MATRIX字段 | 数据字段 |
| `{d}` | `66`, `126`, `252` | 窗口 |

**说明**: 多层标准化处理信号

---

### TPL-1651: Betting Against Beta模板
```
模板:
market_return = group_mean(returns, 1, market);
beta = ts_regression(returns, market_return, {d}, rettype=2);
-group_rank(beta, industry)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{d}` | `126`, `252` | 回归窗口 |

**说明**: 反Beta投注因子，做多低Beta股票

---

### TPL-1652: 跳跃因子模板
```
模板:
jump_up = ts_count(returns > ts_std_dev(returns, {d}) * {threshold}, {d});
jump_down = ts_count(returns < -ts_std_dev(returns, {d}) * {threshold}, {d});
group_rank(jump_down - jump_up, {group})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{d}` | `22`, `66` | 统计窗口 |
| `{threshold}` | `2`, `2.5`, `3` | 标准差倍数 |
| `{group}` | `sector`, `industry` | 分组 |

**说明**: 统计尾部跳跃事件的不对称性

---

### TPL-1653: 量小换手率模板
```
模板:
turnover = volume / sharesout;
low_turnover = ts_percentage(turnover, {d}, percentage=0.2);
group_rank(turnover < low_turnover, {group})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{d}` | `22`, `66` | 百分位窗口 |
| `{group}` | `sector`, `industry` | 分组 |

**说明**: 识别低换手率状态

---

### TPL-1654: 隔夜收益因子模板
```
模板:
overnight_ret = open / ts_delay(close, 1) - 1;
group_rank(ts_mean(overnight_ret, {d}), {group})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{d}` | `5`, `22`, `66` | 平均窗口 |
| `{group}` | `sector`, `industry` | 分组 |

**说明**: 隔夜"拉锯战"因子

---

### TPL-1655: sta1分组三因子模板
```
模板:
a = rank(group_rank(ts_rank(ts_backfill({field1}, {d1}), {d2}), sta1_top3000c20));
trade_when(rank(a) > {threshold}, -zscore(ts_zscore({field2}, {d3})) * a, {exit_threshold} - rank(a))
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field1}` | 任意字段 | 第一因子字段 |
| `{field2}` | 模型字段如`mdl175_01dtsv` | 第二因子字段 |
| `{d1}`, `{d2}`, `{d3}` | 各窗口参数 | 时间窗口 |
| `{threshold}` | `0.03`, `0.1` | 入场阈值 |
| `{exit_threshold}` | `0.25`, `0.5` | 出场阈值 |

**说明**: 使用sta1预定义分组的复合策略

---

### TPL-1656: macro泛化模板
```
模板: group_rank(ts_delta(ts_zscore({macro_field}, {d1}), {d2}), country)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{macro_field}` | 宏观数据字段 | 宏观数据 |
| `{d1}` | `126`, `252` | zscore窗口 |
| `{d2}` | `5`, `22` | delta窗口 |

**说明**: 基于Labs分析macro的泛化模板

---

### TPL-1657: ASI broker模板
```
模板:
signal = group_rank(ts_rank({broker_field}, {d}), market);
trade_when(volume > adv20, signal, -1)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{broker_field}` | broker数据字段 | 券商数据 |
| `{d}` | `22`, `66` | 排名窗口 |

**说明**: ASI区域broker因子，需设置max_trade=ON

---

### TPL-1658: Earnings超预期模板
```
模板:
surprise = (actual_eps - est_eps) / abs(est_eps);
group_rank(ts_zscore(surprise, {d}), industry)
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{d}` | `66`, `126` | zscore窗口 |

**说明**: 盈利超预期因子

---

### TPL-1659: CCI技术指标模板
```
模板:
tp = (high + low + close) / 3;
cci = (tp - ts_mean(tp, {d})) / (0.015 * ts_mean(abs(tp - ts_mean(tp, {d})), {d}));
group_rank(-cci, {group})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{d}` | `14`, `20` | CCI窗口 |
| `{group}` | `sector`, `industry` | 分组 |

**说明**: 商品通道指数(CCI)反转策略

---

### TPL-1660: 0.618黄金比例幂变换模板
```
模板:
power_signal = signed_power({field}, 0.618);
group_rank(ts_zscore(power_signal, {d}), {group})
```
| 占位符 | 可选值 | 说明 |
|--------|--------|------|
| `{field}` | 任意MATRIX字段 | 数据字段 |
| `{d}` | `66`, `126` | zscore窗口 |
| `{group}` | `sector`, `industry` | 分组 |

**说明**: 使用黄金比例0.618进行幂次变换

---

## 附录A：标准时间窗口

| 窗口代号 | 天数 | 含义 |
|---------|------|------|
| `d_week` | 5 | 一周 |
| `d_month` | 22 | 一月 |
| `d_quarter` | 66 | 一季度 |
| `d_half` | 126 | 半年 |
| `d_year` | 252 | 一年 |
| `d_2year` | 504 | 两年 |

**使用规则**:
- 反转因子: 短窗口 `{3, 5, 22}`
- 动量因子: 中窗口 `{22, 66}`
- 长期趋势: 长窗口 `{126, 252, 504}`
- 回归/波动: 超长窗口 `{250, 500, 750}`

---

## 附录B：常用操作符分类

### 时序操作符 `<ts_op/>`
| 操作符 | 用途 |
|--------|------|
| `ts_mean` | 移动平均 |
| `ts_rank` | 时序排名 |
| `ts_delta` | 差分 |
| `ts_std_dev` | 移动标准差 |
| `ts_ir` | 信息比率 |
| `ts_zscore` | 时序Z-score |
| `ts_corr` | 滚动相关性 |
| `ts_regression` | 滚动回归 |
| `ts_decay_linear` | 线性衰减 |
| `ts_decay_exp_window` | 指数衰减 |
| `ts_sum` | 滚动求和 |
| `ts_backfill` | 数据回填 |
| `ts_arg_min` | 最小值位置 |
| `ts_arg_max` | 最大值位置 |
| `ts_max` | 滚动最大值 |
| `ts_min` | 滚动最小值 |
| `ts_delay` | 延迟 |
| `ts_moment` | k阶中心矩 |
| `ts_co_skewness` | 协偏度 |
| `ts_co_kurtosis` | 协峰度 |
| `ts_partial_corr` | 偏相关 |
| `ts_triple_corr` | 三元相关 |
| `ts_theilsen` | Theil-Sen回归 |
| `ts_poly_regression` | 多项式回归残差 |
| `ts_vector_neut` | 向量中性化 |
| `ts_weighted_decay` | 加权衰减 |
| `ts_min_max_cps` | 最小最大压缩 |
| `ts_max_diff` | 与最大值差 |
| `ts_av_diff` | 与均值差 |
| `ts_quantile` | 分位数 |
| `ts_percentage` | 百分位 |
| `ts_median` | 中位数 |
| `ts_product` | 累积乘积 |
| `ts_count_nans` | NaN计数 |
| `ts_scale` | 时序缩放 |
| `ts_target_tvr_hump` | 目标换手率Hump |
| `ts_target_tvr_delta_limit` | Delta换手率限制 |

### 分组操作符 `<group_op/>`
| 操作符 | 用途 |
|--------|------|
| `group_rank` | 分组排名 |
| `group_neutralize` | 分组中性化 |
| `group_zscore` | 分组Z-score |
| `group_mean` | 分组均值 |
| `group_sum` | 分组求和 |
| `group_extra` | 分组提取/填补 |
| `group_backfill` | 分组回填 |
| `group_normalize` | 分组归一化 |
| `group_vector_neut` | 分组向量中性化 |
| `group_vector_proj` | 分组向量投影 |
| `group_count` | 分组计数 |
| `group_std_dev` | 分组标准差 |

### 向量操作符 `<vec_op/>`
| 操作符 | 用途 |
|--------|------|
| `vec_avg` | 向量平均 |
| `vec_sum` | 向量求和 |
| `vec_max` | 向量最大 |
| `vec_min` | 向量最小 |
| `vec_stddev` | 向量标准差 |
| `vec_count` | 向量计数 |
| `vec_norm` | 向量归一化 |
| `vec_zscore` | 向量Z-score |
| `vec_range` | 向量范围 |

### 事件/时间操作符
| 操作符 | 用途 |
|--------|------|
| `days_from_last_change` | 距离上次变化天数 |
| `last_diff_value` | 最近不同值 |
| `ts_step` | 时间步长 |

### 信号处理操作符
| 操作符 | 用途 |
|--------|------|
| `signed_power` | 带符号幂变换 |
| `clamp` | 边界限制 |
| `left_tail` | 左尾截断 |
| `right_tail` | 右尾截断 |
| `fraction` | 分数映射 |
| `nan_out` | NaN外推 |
| `purify` | 数据清洗 |
| `keep` | 条件保留 |
| `scale_down` | 缩放降维 |
| `hump` | Hump平滑 |
| `hump_decay` | Hump衰减 |

### 其他常用操作符
| 操作符 | 用途 |
|--------|------|
| `rank` | 截面排名 |
| `zscore` | 截面Z-score |
| `sigmoid` | Sigmoid归一化 |
| `winsorize` | 极端值截断 |
| `truncate` | 截断 |
| `tail` | 尾部处理 |
| `scale` | 缩放 |
| `filter` | 过滤 |
| `densify` | 稠密化 |
| `bucket` | 分桶 |
| `log` | 对数 |
| `abs` | 绝对值 |
| `if_else` | 条件判断 |
| `trade_when` | 条件交易 |
| `regression_neut` | 回归中性化 |
| `regression_proj` | 回归投影 |
| `is_nan` | NaN检测 |
| `is_not_nan` | 非NaN检测 |
| `inst_pnl` | 单标的PnL |
| `convert` | 单位转换 |
| `pasteurize` | 去无效值 |

---

## 附录C：数据字段分类

### 量价类 `<pv_field/>`
```
close, open, high, low, vwap
returns, volume, adv20, sharesout, cap
```

### 基本面类 `<fundamental_field/>`
```
assets, sales, ebitda, net_income, eps, operating_income
goodwill, debt, cash, equity, gross_profit
fnd6_*, fnd72_*, mdl175_*, mdl163_*
debt_to_equity, roe, roa
```

### 分析师类 `<analyst_field/>` (VECTOR)
```
anl4_eps_mean, anl4_eps_low, anl4_eps_high
anl4_revenue_mean, anl4_fcf_value, anl4_netprofit_mean
anl4_adjusted_netincome_ft, anl4_bvps_flag
oth41_s_west_*, analyst_*
```

### 情绪类 `<sentiment_field/>`
```
scl12_sentiment, scl12_buzz, scl12_alltype_buzzvec
snt_value, snt_buzz, snt_buzz_ret, snt_buzz_bfl
nws18_relevance, nws18_ber
nws12_prez_result2, nws12_prez_short_interest
mws85_sentiment, mws46_mcv
```

### 期权类 `<option_field/>`
```
option8_*, option14_*
implied_volatility_call_120, implied_volatility_call_270
parkinson_volatility_120, parkinson_volatility_270
pcr_vol_10, pcr_vol_30
put_delta, call_delta, put_gamma, call_gamma
put_theta, call_theta, put_vega, call_vega
call_breakeven_10, put_breakeven_10
```

### 模型类 `<model_field/>`
```
mdl175_01dtsv, mdl175_01icc
mdl163_*, mdl*
```

### 分组类 `<group/>`
```
industry, sector, subindustry
market, country, exchange
sta1_top3000c20, sta1_*
pv13_*, pv27_*
```
