# 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, ), ) / ts_std_dev(ts_delay(returns, ), )` * **核心思想**: 这是对经典动量因子的改进。它计算的是过去一段时间(lookback_period)的"时序夏普比率",即收益均值除以收益波动。同时,`ts_delay`跳过了最近一段时间(skip_period,通常为21天/1个月)的数据,以规避短期反转效应的干扰。该因子旨在寻找那些"高质量"的、持续且平稳的动量。 * **变量说明**: * ``: 跳过的近期交易日数,如 `21`。 * ``: 计算动量的回看窗口,如 `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_, ) - ts_delta(implied_volatility_put_, )` * **核心思想**: 捕捉市场情绪的变化。看涨期权IV的上升通常与乐观情绪相关,而看跌期权IV的上升则与悲观或避险情绪相关。该模板计算Call IV的变化量与Put IV变化量之差,旨在做多情绪改善、做空情绪恶化的股票。 * **变量说明**: * `implied_volatility_call_`: 不同期限的看涨期权隐含波动率。 * `implied_volatility_put_`: 不同期限的看跌期权隐含波动率。 * ``: 计算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, ), ), ), )` * **核心思想**: 提纯动量信号。传统动量可能包含了市场Beta、市值、价值等多种因子的敞口。此模板通过连续的中性化(例如依次对``, ``, ``执行`regression_neut`)剥离可被通用因子解释的部分,然后仅对无法被解释的"残差等价物"部分计算动量。 * **变量说明**: * ``, ``, ``: 市场通用因子,如 `mkt_beta`, `size_factor`, `value_factor`。 * ``: 计算残差动量的时间窗口。 * **适用场景**: 通用性强,是因子提纯、构建高质量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, )), 2)), ))` * **核心思想**: 这是对标准行业中性化均值回归的增强。在对收益率进行行业中性化时,它为不同股票赋予了不同的权重。具体来说,它给历史波动率较低的股票更高的权重,认为这些股票的收益率数据更"可靠",在计算行业均值时应占更大比重。 * **变量说明**: * ``: 行业或分组的哑变量矩阵。 * `weights`: 回归权重,通常是可靠性的度量,如 `1/variance`。 * ``: 计算波动率的时间窗口。 * **适用场景**: 适用于任何需要进行组内中性化或回归剥离的场景,尤其是当组内成员的信号质量或波动性差异较大时。 * **逻辑链深度解析**: * **加权最小二乘 (WLS)**: 使用 `1/variance` 作为权重,认为低波动的股票信息更可靠。 * **均值回归**: `reverse` 捕捉残差的反转。 * **优化方向**: * **从属信号**: 引入 `liquidity` 权重。流动性好的股票回归更快。 * **适配自**: Section 3.10, "Mean-reversion – weighted regression" ### 7. 移动平均线交叉模板 (Moving Average Crossover) * **模板表达式**: `sign(ts_mean(, ) - ts_mean(, ))` * **核心思想**: 经典的趋势跟踪策略。当短期均线上穿长期均线("金叉")时,表明短期趋势走强,产生买入信号。当短期均线下穿长期均线("死叉")时,表明趋势走弱,产生卖出信号。 * **变量说明**: * ``: `close`, `vwap` 等价格字段。 * ``: 短期均线窗口,如 `10`, `20`。 * ``: 长期均线窗口,如 `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, )), 1, if_else(less(close, ts_min(low, )), -1, 0)); reverse(alpha)` * **核心思想**: 这是一个经典的反转策略。它定义了一个由过去N日最高价和最低价构成的价格渠道(Channel)。当价格向上突破渠道上轨时,认为市场过热,产生卖出信号(-1);当价格向下突破渠道下轨时,认为市场超卖,产生买入信号(+1)。 * **变量说明**: * ``: 定义渠道的时间窗口,如 `20`。 * **适用场景**: 适用于有均值回归特性的市场或个股。 * **逻辑链深度解析**: * **区间突破 (Step 2)**: 典型的“只在尾部交易”逻辑。中间区间为 0。 * **反转逻辑**: `reverse` 赌突破是假突破(False Breakout)。 * **优化方向**: * **顺势/逆势切换**: 结合 `volatility`。低波时做反转(假突破),高波时做顺势(真突破)。 * **适配自**: Section 3.15, "Channel" ### 11. 价值因子基础模板 (Value Factor) * **模板表达式**: `group_rank( / )` * **核心思想**: 经典的价值投资策略。它旨在买入账面价值相对于市场价值被低估的"价值股",并卖出被高估的"成长股"。最核心的衡量指标是账面市值比(Book-to-Price / Book-to-Market Ratio)。 * **变量说明**: * ``: 公司账面价值或每股净资产字段。 * ``: 公司市值或收盘价字段。 * **适用场景**: `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, ); reverse(signal_A)` * **核心思想**: 寻找历史上高度相关的两只股票(一个"配对"),当它们的价差(spread)偏离历史均值时进行套利。如果价差过大,则做空价高的股票、做多价低的股票,赌价差会回归。这是一个经典的统计套利和均值回归策略。 * **变量说明**: * `close_A`, `close_B`: 配对股票A和B的价格序列。 * ``: 计算历史价差均值的时间窗口。 * **适用场景**: 适用于同一行业内业务高度相似的公司,是构建市场中性策略的基础。 * **逻辑链深度解析**: * **协整关系**: 构造平稳序列 `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((), 60); gp = group_cartesian_product(country, industry); ((financial_data, gp), )` * **思想**: 先对分析师字段做向量聚合(`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 × `分组内对回填后的向量聚合结果做`ts_zscore`和`group_zscore`,再计算组均值/极值(`group_min/median/max/sum/count`),用`resid = (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(, 90); gp = industry; ((financial_data, gp), )` * **思想**: 直接对`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(,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(,63), std=4); market_data = winsorize(ts_backfill(,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(, industry), group_zscore(, industry)), industry)`。 * **核心思想**: 行業內標準化後的實際值與預估值差,捕捉超預期或低於預期的驚喜。 * **適用場景**: analyst7/analyst14/earnings估值類字段。 * **優化**: 對差分再做`ts_zscore`;門檻交易只在|z|>1.5時開倉。 ### 5. 分析師期限結構模板(近遠期預估斜率) * **表達式**: `group_zscore(subtract(group_zscore(anl14_mean_eps_, industry), group_zscore(anl14_mean_eps_, industry)), industry)`,`/`為fp1/fp2/fy1/fy2等。 * **核心思想**: 比較短期與長期預估的行業內斜率,捕捉預期加速或鈍化。 * **適用場景**: analyst14/15 期別字段;適用成長/拐點挖掘。 * **優化**: 擴展到多期間差分或`ts_delta`跟蹤斜率變化;對斜率做`rank`或`winsorize`。 ### 6. 期權Greeks淨值模板 * **表達式**: `group_operator( - , )`,Greek可選Delta/Gamma/Vega/Theta。 * **核心思想**: 同組內看多vs看空的期權敏感度差,反映隱含情緒或凸性差異。 * **適用場景**: Option數據集;行業或市值分組下的情緒/波動信號。 * **優化**: 多Greek加權組合;對淨值再`ts_mean`平滑;事件期(財報)可降權或過濾。 ### 7. IV Skew動量擴展 * **表達式**: `ts_delta(implied_volatility_call_,

) - ts_delta(implied_volatility_put_,

)`。 * **核心思想**: Call與Put隱含波動變化差捕捉情緒轉折;可做多情緒改善、做空情緒惡化。 * **優化**: 加`trade_when(abs(skew)>thr)`門檻;財報前後縮窗;行業中性。 ### 8. 殘差動量精簡版 * **表達式**: `res = regression_neut(returns, ); ts_mean(res, )`。 * **核心思想**: 先剝離市場/風格暴露,再對特異收益做動量;較原版多重回歸更輕量。 * **優化**: 使用`ts_decay_linear`增加近期權重;行業內`group_rank`提升截面穩定度。 ### 9. 分紅/現金流組間殘差(簡版) * **表達式**: `alpha = ts_zscore(ts_backfill(,90)); g = group_mean(alpha, , ); resid = alpha - g; group_zscore(resid, )`。 * **核心思想**: 先回填平滑,再对組均值做殘差,捕捉組內相對高/低分紅或現金流質量。 * **適用場景**: fnd8/fnd6/topdiv等分紅現金流字段;行業/國家分組。 * **優化**: 權重可用log(cap)或vol逆;對resid再做`ts_mean`平滑。 --- ## 模板格式说明 每个模板使用以下占位符格式: - `` - 时间序列操作符,如 `ts_rank`, `ts_mean`, `ts_delta`, `ts_ir`, `ts_stddev`, `ts_zscore` - `` - 分组操作符,如 `group_rank`, `group_neutralize`, `group_zscore` - `` - 向量操作符,如 `vec_avg`, `vec_sum`, `vec_max`, `vec_min`, `vec_stddev` - `` - 数据字段占位符 - `` - 时间窗口参数,常用值: `{5, 22, 66, 126, 252, 504}` - `` - 分组字段,如 `industry`, `sector`, `subindustry`, `market` --- ## 第一部分:基础结构模板 (TPL-001 ~ TPL-010) ### TPL-001: 基本面时序排名 ``` 模板: ((, ), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_rank`, `ts_zscore`, `ts_delta`, `ts_ir` | 时序比较操作 | | `` | `group_rank`, `group_zscore`, `group_neutralize` | 截面比较操作 | | `` | 基本面字段: `eps`, `sales`, `assets`, `roe`, `roa` | 公司财务数据 | | `` | `66`, `126`, `252` | 季度/半年/年 | | `` | `industry`, `sector` | 行业分组 | **示例**: ``` group_rank(ts_rank(eps, 252), industry) group_zscore(ts_ir(sales, 126), sector) ``` --- ### TPL-002: 利润/规模比率模板 ``` 模板: (/, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_rank`, `ts_zscore`, `ts_mean`, `ts_delta` | 时序操作 | | `` | `net_income`, `ebitda`, `operating_income`, `gross_profit` | 利润类字段 | | `` | `assets`, `cap`, `sales`, `equity` | 规模类字段 | | `` | `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_rank`, `ts_mean`, `ts_delta`, `ts_ir`, `ts_zscore` | 时序操作 | | `` | `vec_avg`, `vec_sum`, `vec_max`, `vec_min`, `vec_stddev` | 向量聚合 | | `` | 分析师数据: `anl4_*`, `analyst_*`, `oth41_*` | VECTOR类型字段 | | `` | `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 = (, ); a1 = group_neutralize(a, bucket(rank(cap), range="")); group_neutralize(a1, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_zscore`, `ts_rank`, `ts_ir` | 时序操作 | | `` | 任意数据字段 | 主信号 | | `` | `66`, `126`, `252` | 时间窗口 | | `` | `"0.1,1,0.1"`, `"0,1,0.1"` | 市值分组范围 | | `` | `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 = (, ); a1 = group_neutralize(a, bucket(rank(cap), range="")); a2 = group_neutralize(a1, ); b = ts_zscore(cap, ); b1 = group_neutralize(b, ); regression_neut(a2, b1) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_zscore`, `ts_rank` | 时序操作 | | `` | 基本面或其他字段 | 主信号 | | `` | `252`, `504` | 长期窗口 | | `` | `"0.1,1,0.1"` | 市值分组 | | `` | `subindustry`, `sector` | 行业分组 | --- ### TPL-006: 基本面动量模板 ``` 模板: log(ts_mean(, )) - log(ts_mean(, )) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `anl4_{data}_{stats}`, 基本面字段 | 数据字段 | | `` | `20`, `44` | 短期窗口 | | `` | `44`, `126` | 长期窗口 | **示例**: ``` log(ts_mean(anl4_eps_mean, 44)) - log(ts_mean(anl4_eps_mean, 20)) ``` --- ### TPL-007: 财报事件驱动模板 ``` 模板: event = ts_delta(, -1); if_else(event != 0, , nan) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `assets`, `sales`, `eps` | 基本面字段 | | `` | 主信号表达式 | 事件发生时的Alpha | **扩展版**: ``` change = if_else(days_from_last_change() == , ts_delta(close, ), nan) ``` --- ### TPL-008: 标准化回填模板 ``` 模板: (winsorize(ts_backfill(, ), std=), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_rank`, `ts_decay_linear`, `ts_zscore` | 时序操作 | | `` | 低频数据字段 | 需要回填的字段 | | `` | `115`, `120`, `180` | 回填窗口 | | `` | `4`, `3`, `5` | winsorize标准差 | | `` | `10`, `22`, `60` | 操作窗口 | **示例**: ``` ts_decay_linear(-densify(zscore(winsorize(ts_backfill(anl4_adjusted_netincome_ft, 115), std=4))), 10) ts_rank(winsorize(ts_backfill(, 120), std=4), 60) ``` --- ### TPL-009: 信号质量分组模板 ``` 模板: signal = (, ); credit_quality = bucket(rank(ts_delay(signal, 1), rate=0), range=""); group_neutralize((signal, k=), credit_quality) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_rank`, `ts_zscore` | 信号计算 | | `` | 任意数据字段 | 主字段 | | `` | `60`, `120` | 窗口 | | `` | `"0.2,1,0.2"` | 分组范围 | | `` | `ts_weighted_decay` | 衰减操作 | | `` | `0.5`, `0.3` | 衰减系数 | --- ### TPL-010: 复合分组中性化 ``` 模板: group_neutralize(, densify()*1000 + densify()) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 原始Alpha | | `` | `subindustry`, `sector` | 主分组 | | `` | `country`, `exchange` | 次分组 | --- ## 第二部分:量价类模板 (TPL-101 ~ TPL-120) ### TPL-101: 换手率反转 ``` 模板: -(volume/sharesout, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_mean`, `ts_rank`, `ts_std_dev` | 时序统计 | | `` | `5`, `22`, `66` | 短中期窗口 | **示例**: ``` -ts_mean(volume/sharesout, 22) -ts_std_dev(volume/sharesout, 22) ``` --- ### TPL-102: 量稳换手率 (STR) ``` 模板: -ts_std_dev(volume/sharesout, )/ts_mean(volume/sharesout, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `20`, `22` | 波动计算窗口 | | `` | `20`, `22` | 均值计算窗口 | **优化版**: ``` 模板: -group_neutralize(ts_std_dev(volume/sharesout, )/ts_mean(volume/sharesout, ), bucket(rank(cap), range="0.1,1,0.1")) ``` --- ### TPL-103: 价格反转模板 ``` 模板: -(, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_delta`, `ts_mean`, `ts_rank` | 时序操作 | | `` | `close`, `returns`, `close/open-1`, `open/ts_delay(close,1)-1` | 价格/收益字段 | | `` | `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, ))/ts_mean(close, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `5`, `22`, `66` | MA周期 | --- ### TPL-105: 量价相关性 ``` 模板: -ts_corr(, , ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `close`, `returns`, `abs(returns)` | 价格类 | | `` | `volume`, `volume/sharesout`, `adv20` | 成交量类 | | `` | `22`, `66`, `126` | 相关性窗口 | --- ### TPL-106: 跳跃因子 ``` 模板: -group_neutralize(ts_mean((close/open-1) - log(close/open), ), bucket(rank(cap), range="0.1,1,0.1")) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `22`, `30`, `66` | 平均窗口 | **带成交量增强版**: ``` 模板: -group_neutralize(ts_mean((close/open-1) - log(close/open), ) * ts_rank(volume, 5), bucket(rank(cap), range="0.1,1,0.1")) ``` --- ### TPL-107: 指数衰减动量 ``` 模板: -ts_decay_exp_window(, , factor=) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `returns`, `returns*(volume/sharesout)`, `close/open-1` | 收益类字段 | | `` | `22`, `66`, `126` | 衰减窗口 | | `` | `0.04`, `0.1`, `0.5`, `0.9` | 衰减因子,越小衰减越快 | --- ### TPL-108: 成交量周期函数 (VOC) ``` 模板: m_minus = ts_mean(volume, ) - ts_mean(volume, ); delta = (ts_max(m_minus, ) - m_minus)/(ts_max(m_minus, ) - ts_min(m_minus, )); *delta + *ts_delay(delta, 1) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `30`, `66` | 长期均值窗口 | | `` | `10`, `22` | 短期均值窗口 | | `` | `0.33`, `0.5` | 当日权重 | | `` | `0.67`, `0.5` | 前日权重 | --- ### TPL-109: 市场相关性因子 ``` 模板: mkt_ret = group_mean(returns, 1, market); pt = ts_corr(returns, mkt_ret, ); rank(1/(2*(1-pt))) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `10`, `22`, `66` | 相关性窗口 | --- ### TPL-110: 成交量趋势模板 ``` 模板: ts_decay_linear(volume/ts_sum(volume, ), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `252`, `504` | 长期总量窗口 | | `` | `10`, `22` | 衰减窗口 | --- ### TPL-111: VWAP收益相关 ``` 模板: returns > - ? (ts_ir(ts_corr(ts_returns(vwap, 1), ts_delay(group_neutralize(, market), ), ), )) : -1 ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `0.1`, `0.05` | 收益阈值 | | `` | 任意数据字段 | 信号字段 | | `` | `30`, `60` | 延迟窗口 | | `` | `90`, `120` | 相关性窗口 | --- ### TPL-112: 动量因子创建 ``` 模板: ts_sum(winsorize(ts_backfill(, ), std=4.0), *21) - ts_sum(winsorize(ts_backfill(, ), std=4.0), *21) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `returns`, 基本面字段 | 数据字段 | | `` | `120`, `180` | 回填窗口 | | `` | `6`, `12` | 长期月数 | | `` | `1`, `0.1*n` | 短期月数 | --- ### TPL-113: 线性衰减排名 ``` 模板: -ts_rank(ts_decay_linear(, ), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `percent`, 任意时序信号 | 输入信号 | | `` | `10`, `22`, `150` | 衰减窗口 | | `` | `50`, `126` | 排名窗口 | --- ## 第三部分:情绪/新闻类模板 (TPL-201 ~ TPL-220) ### TPL-201: 情绪差值模板 ``` 模板: (rank(ts_backfill(, )) - rank(ts_backfill(, )), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_mean`, `ts_rank`, `ts_zscore` | 时序操作 | | `` | 正面情绪字段 | 积极信号 | | `` | 负面情绪字段 | 消极信号 | | `` | `20`, `30` | 回填窗口 | | `` | `5`, `22` | 比较窗口 | --- ### TPL-202: 新闻情绪回归残差 ``` 模板: sentiment = ts_backfill(ts_delay((), 1), ); vhat = ts_regression(volume, sentiment, ); ehat = -ts_regression(returns, vhat, ); group_rank(ehat, bucket(rank(cap), range="0,1,0.1")) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `vec_avg`, `vec_sum` | 情绪聚合方式 | | `` | `scl12_sentiment`, `snt_buzz_ret`, `nws18_relevance` | 情绪数据 | | `` | `20`, `30` | 回填窗口 | | `` | `120`, `250` | 成交量回归窗口 | | `` | `250`, `750` | 收益回归窗口 | --- ### TPL-203: 社交媒体情绪 ``` 模板: rank((scl12_alltype_buzzvec) * (scl12_sentiment)) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `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(, ) > , ts_zscore(, ), 0)), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 情绪字段 | 情绪数据 | | `` | `22`, `30`, `66` | zscore窗口 | | `` | `1`, `1.5`, `2` | z-score阈值 | | `` | `industry`, `sector` | 分组字段 | --- ### TPL-205: 情绪+波动率复合 ``` 模板: log(1 + sigmoid(ts_zscore(, )) * sigmoid(ts_zscore(, ))) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 情绪字段 | 情绪数据 | | `` | `option8_*`, 波动率字段 | 波动率数据 | | `` | `30`, `66` | 情绪窗口 | | `` | `30`, `66` | 波动率窗口 | --- ### TPL-206: 指数衰减情绪 ``` 模板: ts_decay_exp_window(vec_avg(), , ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `mws85_sentiment`, `nws18_ber` | 情绪向量字段 | | `` | `10`, `22` | 衰减窗口 | | `` | `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(), ); -ts_rank(ts_decay_linear(percent, ), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `nws12_prez_result2` | 新闻数据 | | `` | `50`, `66` | 排名窗口 | | `` | `150`, `252` | 衰减窗口 | --- ### TPL-208: 分组行业提取情绪 ``` 模板: scale(group_extra(ts_sum(sigmoid(ts_backfill(, )), ) - ts_sum(sigmoid(ts_backfill(, )), ), 0.5, densify(industry))) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 情绪或基本面字段 | 数据字段 | | `` | `180`, `252` | 回填窗口 | | `` | `3`, `5` | 求和窗口 | --- ## 第四部分:期权类模板 (TPL-301 ~ TPL-320) ### TPL-301: 期权希腊字母差值 ``` 模板: ( - , ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `group_rank`, `group_neutralize`, `group_zscore` | 分组操作 | | `` | `put_delta`, `put_gamma`, `put_theta`, `put_vega` | Put希腊字母 | | `` | `call_delta`, `call_gamma`, `call_theta`, `call_vega` | Call希腊字母 | | `` | `industry`, `sector` | 分组字段 | --- ### TPL-302: 期权价格信号 ``` 模板: group_rank((()/close, ), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_scale`, `ts_rank`, `ts_zscore` | 时序操作 | | `` | `vec_max`, `vec_avg` | 向量操作 | | `` | 期权价格字段 | 期权数据 | | `` | `66`, `120`, `252` | 时间窗口 | | `` | `industry`, `sector` | 分组字段 | --- ### TPL-303: 期权波动率信号 ``` 模板: sigmoid(( - , )) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_ir`, `ts_stddev`, `ts_zscore`, `ts_mean` | 波动性操作 | | `` | 期权高价字段 | 期权最高价 | | `` | 期权收盘价字段 | 期权收盘价 | | `` | `120`, `250`, `504` | 长期窗口 | **说明**: 期权波动类因子通常需要较长窗口(120-504天)来捕捉稳定信号 --- ### TPL-304: 隐含波动率比率 ``` 模板: (implied_volatility_call_/parkinson_volatility_, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_rank`, `ts_zscore`, `ts_delta` | 时序操作 | | `` | `120`, `270` | 期权期限 | | `` | `66`, `126`, `252` | 窗口 | --- ### TPL-305: Put-Call成交量比 ``` 模板: (pcr_vol_, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_rank`, `ts_delta`, `ts_zscore` | 时序操作 | | `` | `10`, `30`, `60` | 期限 | | `` | `22`, `66`, `126` | 窗口 | --- ### TPL-306: 期权盈亏平衡点 ``` 模板: group_rank(ts_zscore(/close, ), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `call_breakeven_10`, `put_breakeven_10` | 盈亏平衡字段 | | `` | `66`, `126`, `252` | 窗口 | | `` | `sector`, `industry` | 分组 | --- ## 第五部分:分析师类模板 (TPL-401 ~ TPL-420) ### TPL-401: 分析师预期变化 ``` 模板: (tail(tail(, lower=, upper=, newval=), lower=-, upper=-, newval=-)) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `vec_avg`, `vec_sum` | 向量聚合 | | `` | `oth41_s_west_eps_ftm_chg_3m`, `anl4_eps_chg` | 预期变化字段 | | `` | `0.25`, `0.1` | 下截断值 | | `` | `1000`, `100` | 上截断值 | --- ### TPL-402: 剥离动量的分析师因子 ``` 模板: afr = (); short_mom = ts_mean(returns - group_mean(returns, 1, market), ); long_mom = ts_delay(ts_mean(returns - group_mean(returns, 1, market), ), ); regression_neut(regression_neut(afr, short_mom), long_mom) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `vec_avg`, `vec_sum` | 向量聚合 | | `` | 分析师数据字段 | 一致预期等 | | `` | `5`, `10` | 短期动量窗口 | | `` | `20`, `22` | 长期动量窗口 | --- ### TPL-403: 分析师覆盖度过滤 ``` 模板: coverage_filter = ts_sum((), ) > ; if_else(coverage_filter, , nan) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `vec_count` | 统计分析师数量 | | `` | 分析师向量字段 | 分析师数据 | | `` | `66`, `90`, `126` | 统计窗口 | | `` | `2`, `3`, `5` | 最小覆盖数量 | | `` | 主信号表达式 | 待过滤的Alpha | --- ### TPL-404: 老虎哥回归模板 ``` 模板: group_rank(ts_regression(ts_zscore(, ), ts_zscore(vec_sum(), ), ), densify(sector)) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意MATRIX字段 | Y变量 | | `` | 任意VECTOR字段 | X变量 | | `` | `252`, `504` | 回归窗口 | **说明**: 经典回归模板,适用于基本面与分析师数据组合 --- ### TPL-405: 分析师预期时序变化 ``` 模板: ts_mean(vec_avg(), ) - ts_mean(vec_avg(), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `anl4_eps_mean`, `anl4_revenue_mean` | 分析师预测 | | `` | `22`, `44` | 短期窗口 | | `` | `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(), ), my_group) * group_rank(-ts_delta(close, 5), my_group) ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 基本面VECTOR字段 | 基本面数据 | | `` | `252`, `504` | 排名窗口 | --- ### TPL-407: 分析师FCF比率 ``` 模板: ts_rank(vec_avg() / vec_avg(), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `anl4_fcf_value` | 自由现金流预测 | | `` | `anl4_netprofit_low`, `anl4_netprofit_mean` | 利润预测 | | `` | `66`, `126`, `252` | 排名窗口 | --- ## 第六部分:中性化技术模板 (TPL-501 ~ TPL-515) ### TPL-501: 市值分组中性化 ``` 模板: group_neutralize(, bucket(rank(cap), range="")) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号表达式 | 待中性化的Alpha | | `` | `"0.1,1,0.1"`, `"0,1,0.1"` | 分组范围 | --- ### TPL-502: 双重中性化 (行业+市值) ``` 模板: a1 = group_neutralize(, bucket(rank(cap), range="")); group_neutralize(a1, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 原始Alpha | | `` | `"0.1,1,0.1"` | 市值分组 | | `` | `industry`, `sector`, `subindustry` | 行业分组 | --- ### TPL-503: 回归中性化 ``` 模板: regression_neut(, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 原始Alpha | | `` | `log(cap)`, `ts_ir(returns, 126)`, `ts_std_dev(returns, 22)` | 待剥离因子 | **多层回归中性化**: ``` 模板: regression_neut(regression_neut(, ), ) ``` --- ### TPL-504: 中性化顺序优化 ``` 模板: a = ts_zscore(, ); a1 = group_neutralize(a, ); a2 = group_neutralize(a1, bucket(rank(cap), range="")) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意数据字段 | 主信号 | | `` | `252` | zscore窗口 | | `` | `industry`, `subindustry` | 行业分组 | | `` | `"0.1,1,0.1"` | 市值分组 | **说明**: 先行业中性化再市值中性化,与反向顺序效果可能不同 --- ### TPL-505: sta1分组中性化 ``` 模板: group_neutralize(, sta1_top3000c20) ``` **说明**: 使用预定义的sta1分组进行中性化 --- ## 第七部分:条件交易模板 (TPL-601 ~ TPL-620) ### TPL-601: 流动性过滤 ``` 模板: trade_when(volume > adv20 * , , -1) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `0.618`, `0.5`, `1` | 流动性阈值 | | `` | 主信号 | 原始Alpha | **反向流动性**: ``` trade_when(volume < adv20, , -1) ``` --- ### TPL-602: 波动率过滤 ``` 模板: trade_when(ts_rank(ts_std_dev(returns, ), ) < , , -1) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `5`, `10`, `22` | 波动计算窗口 | | `` | `126`, `180`, `252` | 排名窗口 | | `` | `0.8`, `0.9` | 波动率阈值 | | `` | 主信号 | 原始Alpha | --- ### TPL-603: 极端收益过滤 ``` 模板: trade_when(abs(returns) < , , abs(returns) > ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `0.075`, `0.05` | 入场阈值 | | `` | `0.1`, `0.095` | 出场阈值 | | `` | 主信号 | 原始Alpha | --- ### TPL-604: 市值过滤 ``` 模板: trade_when(rank(cap) > , , -1) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `0.3`, `0.5` | 市值排名阈值 | | `` | 主信号 | 原始Alpha | --- ### TPL-605: 触发条件交易 ``` 模板: triggerTradeexp = (ts_arg_max(volume, ) < 1) && (volume > ts_sum(volume, )/); triggerExitexp = -1; trade_when(triggerTradeexp, , triggerExitexp) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `5`, `10` | 判断窗口 | | `` | `-rank(ts_delta(close, 2))` | 主信号 | --- ### TPL-606: 组合条件交易 ``` 模板: my_group2 = bucket(rank(cap), range="0,1,0.1"); trade_when(volume > adv20, group_neutralize(, my_group2), -1) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 复合信号 | 主信号 | --- ### TPL-607: 条件排名交易 ``` 模板: a = (, ); trade_when(rank(a) > , -zscore()*a, -rank(a)) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_rank`, `ts_zscore` | 时序操作 | | `` | 任意字段 | 条件字段 | | `` | 任意字段 | 信号字段 | | `` | `25`, `66` | 窗口 | | `` | `0.03`, `0.1` | 下阈值 | | `` | `0.25`, `0.5` | 上阈值 | --- ## 第八部分:复合多因子模板 (TPL-701 ~ TPL-720) ### TPL-701: 三因子乘积 ``` 模板: my_group = market; rank( group_rank((, ), my_group) * group_rank((, ), my_group) * group_rank((, ), my_group) ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_decay_linear`, `ts_rank` | 第一因子操作 | | `` | `ts_rank`, `ts_zscore` | 第二因子操作 | | `` | `-ts_delta` | 第三因子操作(反转) | | `` | `volume/ts_sum(volume, 252)` | 成交量趋势 | | `` | `vec_avg({Fundamental})` | 基本面信号 | | `` | `close` | 价格信号 | | ``, ``, `` | 各因子窗口 | 时间参数 | --- ### TPL-702: 波动率条件反转 ``` 模板: vol = ts_std_dev(, ); vol_mean = group_mean(vol, 1, market); flip_ret = if_else(vol < vol_mean, -, ); -ts_mean(flip_ret, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `returns`, `close/open-1` | 收益字段 | | `` | `20`, `22` | 窗口参数 | **说明**: 低波动环境做反转,高波动环境做动量 --- ### TPL-703: 恐惧指标组合 ``` 模板: fear = ts_mean( abs(returns - group_mean(returns, 1, market)) / (abs(returns) + abs(group_mean(returns, 1, market)) + 0.1), ); -group_neutralize(fear * , bucket(rank(cap), range="0.1,1,0.1")) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `20`, `22` | 恐惧指标窗口 | | `` | 主信号表达式 | 待组合信号 | --- ### TPL-704: 债务杠杆相关性 ``` 模板: group_neutralize(ts_zscore(, ) * ts_corr(, returns, ), sector) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `debt_to_equity`, `debt/assets` | 杠杆字段 | | `` | `60`, `126` | zscore窗口 | | `` | `20`, `66` | 相关性窗口 | --- ### TPL-705: 模型数据信号 ``` 模板: - ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `mdl175_01dtsv`, `mdl175_01icc` | 模型字段 | **带排名版**: ``` rank(group_rank(ts_rank(ts_backfill(, 5), 5), sta1_top3000c20)) ``` --- ### TPL-706: 回归zscore模板 ``` 模板: ts_regression(ts_zscore(, ), ts_zscore(, ), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | MATRIX字段 | Y变量 | | `` | MATRIX字段或vec_sum(VECTOR) | X变量 | | `` | `252`, `500`, `504` | 回归窗口 | --- ### TPL-707: 分组Delta模板 ``` 模板: group_neutralize(ts_delta(, ), sector) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意数据字段 | 主字段 | | `` | `22`, `66`, `126` | 差分窗口 | --- ## 第九部分:数据预处理模板 (TPL-801 ~ TPL-815) ### TPL-801: Winsorize截断 ``` 模板: winsorize(, std=) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 原始数据 | | `` | `3`, `4`, `5` | 截断标准差 | --- ### TPL-802: Sigmoid归一化 ``` 模板: sigmoid((, )) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_zscore`, `ts_ir`, `ts_rank` | 时序操作 | | `` | 任意字段 | 原始数据 | | `` | `22`, `66`, `252` | 窗口 | --- ### TPL-803: 数据回填 ``` 模板: ts_backfill(, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 低频数据字段 | 需要回填的字段 | | `` | `115`, `120`, `180`, `252` | 回填窗口 | --- ### TPL-804: 条件替换 ``` 模板: if_else(is_not_nan(), , ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主字段 | 可能有NaN的字段 | | `` | 替代字段或值 | NaN时的替代 | --- ### TPL-805: 极端值替换 ``` 模板: tail(tail(, lower=, upper=, newval=), lower=-, upper=-, newval=-) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 原始数据 | | `` | `0.25`, `0.1` | 下界 | | `` | `100`, `1000` | 上界 | --- ### TPL-806: 组合预处理 ``` 模板: (winsorize(ts_backfill(, ), std=), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_rank`, `ts_zscore`, `ts_mean` | 时序操作 | | `` | 低频字段 | 需要处理的字段 | | `` | `120`, `180` | 回填窗口 | | `` | `4` | winsorize参数 | | `` | `22`, `66` | 操作窗口 | --- ### TPL-807: ts_min/ts_max替代 ``` 模板: ts_backfill(if_else(ts_arg_min(, ) == 0, , nan), 120) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 原始数据 | | `` | `22`, `66`, `126` | 窗口 | **说明**: 当ts_min/ts_max不可用时的替代方案 --- ## 第十部分:高级统计模板 (TPL-901 ~ TPL-920) ### TPL-901: 高阶矩模板 (ts_moment) ``` 模板: ((ts_moment(, , k=), )) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `rank`, `zscore`, `sigmoid` | 标准化操作 | | `` | `group_rank`, `group_zscore` | 分组操作 | | `` | 任意MATRIX字段 | 数据字段 | | `` | `22`, `66`, `126` | 窗口 | | `` | `2`, `3`, `4` | k=2方差, k=3偏度, k=4峰度 | **说明**: ts_moment(x, d, k)计算k阶中心矩 --- ### TPL-902: 协偏度/协峰度模板 ``` 模板: (ts_co_skewness(, , ), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `group_rank`, `group_zscore` | 分组操作 | | `` | `returns`, `close` | 第一变量 | | `` | `volume`, `vwap` | 第二变量 | | `` | `66`, `126`, `252` | 窗口 | **协峰度版**: ``` 模板: (ts_co_kurtosis(, , ), ) ``` --- ### TPL-903: 偏相关模板 (ts_partial_corr) ``` 模板: group_rank(ts_partial_corr(, , , ), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `returns`, 收益相关 | Y变量 | | `` | 任意字段 | X变量 | | `` | `group_mean(returns, 1, market)` | 控制变量(市场收益) | | `` | `60`, `126`, `252` | 窗口 | | `` | `sector`, `industry` | 分组 | **说明**: 计算两变量偏相关,控制第三变量影响 --- ### TPL-904: 三元相关模板 (ts_triple_corr) ``` 模板: group_rank(ts_triple_corr(, , , ), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `returns` | 第一变量 | | `` | `volume` | 第二变量 | | `` | 基本面字段 | 第三变量 | | `` | `60`, `126` | 窗口 | | `` | `sector`, `industry` | 分组 | --- ### TPL-905: Theil-Sen回归模板 ``` 模板: group_rank(ts_theilsen(, , ), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意MATRIX字段 | Y变量 | | `` | 任意MATRIX字段或`ts_step(1)` | X变量 | | `` | `126`, `252`, `500` | 窗口 | | `` | `sector`, `industry` | 分组 | **说明**: Theil-Sen回归比普通回归更鲁棒 --- ### TPL-906: 多项式回归残差 ``` 模板: ts_poly_regression(, , , k=) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | Y变量 | 被解释变量 | | `` | X变量 | 解释变量 | | `` | `126`, `252` | 窗口 | | `` | `1`, `2`, `3` | 多项式阶数, k=2为二次回归 | **说明**: 返回 y - Ey (残差) --- ### TPL-907: 向量中性化模板 ``` 模板: ts_vector_neut(, , ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 待中性化Alpha | | `` | `returns`, `cap` | 风险因子 | | `` | `22`, `66`, `126` | 窗口(不宜过长,计算慢) | **分组向量中性化**: ``` 模板: group_vector_neut(, , ) ``` --- ### TPL-908: 加权衰减模板 ``` 模板: group_neutralize(ts_weighted_decay(, k=), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 待衰减Alpha | | `` | `0.3`, `0.5`, `0.7` | 衰减系数 | | `` | `bucket(rank(cap), range="0.1,1,0.1")` | 分组 | --- ### TPL-909: 回归斜率模板 ``` 模板: ts_regression(ts_zscore(, ), ts_step(1), , rettype=2) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意MATRIX字段 | 数据字段 | | `` | `252`, `500` | 窗口 | **说明**: rettype=2返回斜率,用于检测趋势 --- ### TPL-910: 最小最大压缩模板 ``` 模板: ts_min_max_cps(, , f=) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 数据字段 | | `` | `22`, `66`, `126` | 窗口 | | `` | `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() == , , nan) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 基本面字段 | 监测变化的字段 | | `` | `1`, `2`, `5` | 距离变化的天数 | | `` | `ts_delta(close, 5)`, 主信号 | 事件触发时的Alpha | **动态衰减版**: ``` 模板: / (1 + days_from_last_change()) ``` --- ### TPL-1002: 最近差值模板 ``` 模板: (last_diff_value(, ), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_rank`, `ts_zscore` | 时序操作 | | `` | 任意字段 | 数据字段 | | `` | `60`, `90`, `120` | 回溯窗口 | | `` | `22`, `66` | 操作窗口 | **说明**: 返回过去d天内最近一次不同于当前值的历史值 --- ### TPL-1003: 缺失值计数模板 ``` 模板: -ts_count_nans(ts_backfill(, ), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 分析师数据等 | 可能有缺失的字段 | | `` | `5`, `10` | 回填窗口 | | `` | `20`, `30` | 计数窗口 | **应用**: 分析师覆盖度信号,缺失越少覆盖越好 --- ### TPL-1004: 位置最大/最小模板 ``` 模板: if_else(ts_arg_max(, ) == , , nan) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `volume`, 任意字段 | 监测字段 | | `` | `5`, `10` | 窗口 | | `` | `0`, `1` | 0表示今天是最大值 | | `` | 主信号 | 条件满足时的Alpha | **组合条件**: ``` 模板: (ts_arg_max(, ) == ts_arg_max(, )) * ( + ) ``` --- ### TPL-1005: 财报发布事件模板 ``` 模板: event_signal = if_else(ts_delta(, 1) != 0, , nan); ts_decay_linear(event_signal, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `assets`, `sales`, `eps` | 基本面字段 | | `` | `ts_delta(close, 5)`, 主信号 | 事件Alpha | | `` | `10`, `22` | 衰减窗口 | --- ### TPL-1006: 动态Decay事件驱动 ``` 模板: decay_weight = 1 / (1 + days_from_last_change()); * decay_weight ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 事件触发字段 | | `` | 主信号 | 原始Alpha | --- ### TPL-1007: 盈利公告模板 ``` 模板: surprise = - ; if_else(days_from_last_change() < , surprise, nan) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `eps` | 实际值 | | `` | `vec_avg(anl4_eps_mean)` | 预测值 | | `` | `5`, `10` | 事件有效窗口 | --- ## 第十二部分:信号处理模板 (TPL-1101 ~ TPL-1120) ### TPL-1101: 黄金比例幂变换 ``` 模板: signed_power(, 0.618) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号表达式 | 原始Alpha | **其他幂次**: ``` signed_power(, 0.5) # 平方根 signed_power(, 2) # 平方增强 ``` --- ### TPL-1102: 尾部截断模板 ``` 模板: right_tail(, minimum=) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 原始Alpha | | `` | `0`, `0.1` | 最小阈值 | **左尾版**: ``` 模板: left_tail(, maximum=) ``` --- ### TPL-1103: Clamp边界限制 ``` 模板: clamp(, lower=, upper=) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 原始Alpha | | `` | `-1`, `-0.5` | 下界 | | `` | `1`, `0.5` | 上界 | --- ### TPL-1104: 分数映射模板 ``` 模板: fraction() ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 原始Alpha | **说明**: 将连续变量映射到分布内的相对位置 --- ### TPL-1105: NaN外推模板 ``` 模板: nan_out(, lower=, upper=) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 数据字段 | | `` | `-3`, `-5` | 下界 | | `` | `3`, `5` | 上界 | **说明**: 将超出范围的值替换为NaN --- ### TPL-1106: Purify数据清洗 ``` 模板: purify() ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 需要清洗的数据 | **说明**: 自动化数据清洗,减少噪声和异常值 --- ### TPL-1107: 条件保留模板 ``` 模板: keep(, , period=) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 数据字段 | | `` | ` > 0` | 保留条件 | | `` | `3`, `5`, `10` | 滚动窗口 | **示例**: ``` keep(returns, returns > 0, period=3) # 只保留正收益 ``` --- ### TPL-1108: 缩放降维模板 ``` 模板: -scale_down((, ), constant=) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_mean`, `ts_rank` | 时序操作 | | `` | `returns`, 任意字段 | 数据字段 | | `` | `2`, `5` | 窗口 | | `` | `0.1`, `0.05` | 缩放常数 | --- ### TPL-1109: Truncate截断模板 ``` 模板: truncate(, maxPercent=) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 原始Alpha | | `` | `0.01`, `0.05` | 截断百分比 | --- ### TPL-1110: 组合Normalize模板 ``` 模板: group_normalize(, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 原始Alpha | | `` | `sector`, `industry` | 分组 | **等价公式**: `alpha / group_sum(abs(alpha), group)` --- ## 第十三部分:Turnover控制模板 (TPL-1201 ~ TPL-1215) ### TPL-1201: 目标换手率Hump ``` 模板: ts_target_tvr_hump(, lambda_min=0, lambda_max=1, target_tvr=) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 原始Alpha | | `` | `0.1`, `0.15`, `0.2` | 目标换手率 | --- ### TPL-1202: Delta限制换手率 ``` 模板: ts_target_tvr_delta_limit(, , lambda_min=0, lambda_max=1, target_tvr=) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 原始Alpha | | `` | 辅助因子 | 限制因子 | | `` | `0.1`, `0.15` | 目标换手率 | --- ### TPL-1203: Hump衰减组合 ``` 模板: hump_decay(, hump=) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 原始Alpha | | `` | `0.001`, `0.01` | Hump参数 | **嵌套版**: ``` hump(hump_decay(, hump=0.001)) ``` --- ### TPL-1204: 平均+Hump模板 ``` 模板: -ts_mean(ts_target_tvr_hump(group_rank(, country), lambda_min=0, lambda_max=1, target_tvr=), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 数据字段 | | `` | `0.1` | 目标换手率 | | `` | `5`, `10` | 平均窗口 | --- ### TPL-1205: 简单Hump模板 ``` 模板: hump(, hump=) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 原始Alpha | | `` | `0.01`, `0.001`, `0.0001` | Hump参数 | **示例**: ``` hump(-ts_delta(close, 5), hump=0.01) ``` --- ## 第十四部分:回填与覆盖模板 (TPL-1301 ~ TPL-1315) ### TPL-1301: 分组回填模板 ``` 模板: group_backfill(, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 需要回填的字段 | | `` | `sector`, `industry`, `market` | 分组字段 | **说明**: 使用组内最近值填充NaN --- ### TPL-1302: 嵌套回填排名 ``` 模板: rank(group_backfill(, )) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 数据字段 | | `` | `sector`, `industry` | 分组 | --- ### TPL-1303: 覆盖度过滤 ``` 模板: group_count(is_nan(), market) > ? : nan ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 检测字段 | | `` | `40`, `50` | 最小覆盖数 | | `` | 主信号 | 原始Alpha | --- ### TPL-1304: NaN替换模板 ``` 模板: if_else(is_not_nan(), , ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 数据字段 | | `` | `0`, `0.5`, `nan` | 默认值 | --- ### TPL-1305: 综合数据清洗 ``` 模板: (winsorize(group_backfill(ts_backfill(, ), ), std=), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `ts_rank`, `ts_zscore` | 时序操作 | | `` | 低频字段 | 数据字段 | | `` | `120`, `180` | 时序回填窗口 | | `` | `sector`, `industry` | 分组回填 | | `` | `4` | winsorize参数 | | `` | `66`, `126` | 操作窗口 | --- ## 第十五部分:组合提取模板 (TPL-1401 ~ TPL-1415) ### TPL-1401: group_extra填补模板 ``` 模板: group_extra(, , ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 数据字段 | | `` | `0.5`, `1` | 权重 | | `` | `densify(industry)`, `sector` | 分组 | **说明**: 用组均值填补缺失值 --- ### TPL-1402: 组合提取sigmoid ``` 模板: scale(group_extra(ts_sum(sigmoid(ts_backfill(, )), ) - ts_sum(sigmoid(ts_backfill(, )), ), 0.5, densify(industry))) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 数据字段 | | `` | `180` | 回填窗口 | | `` | `3` | 求和窗口 | --- ### TPL-1403: PnL反馈模板 ``` 模板: if_else(inst_pnl() > , , nan) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 原始Alpha | | `` | `0`, `-0.05` | PnL阈值 | **说明**: 基于单标的PnL进行条件交易 --- ### TPL-1404: 流动性加权模板 ``` 模板: * log(volume) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 原始Alpha | **说明**: 将仓位偏向高流动性股票 --- ### TPL-1405: 市值回归中性化 ``` 模板: regression_neut(, log(cap)) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 主信号 | 原始Alpha | **说明**: 剥离市值因子影响 --- ## 第十六部分:百分位与分位数模板 (TPL-1501 ~ TPL-1510) ### TPL-1501: 时序百分位模板 ``` 模板: ts_percentage(, , percentage=

) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 数据字段 | | `` | `22`, `66`, `126` | 窗口 | | `

` | `0.5`, `0.25`, `0.75` | 百分位 | --- ### TPL-1502: 分位数模板 ``` 模板: (ts_quantile(, , ), ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `rank`, `zscore` | 标准化 | | `` | 任意字段 | 数据字段 | | `` | `66`, `126` | 窗口 | | `` | `0.25`, `0.5`, `0.75` | 分位数 | | `` | `22` | 操作窗口 | --- ### TPL-1503: Max-Min比率模板 ``` 模板: ts_max_diff(, ) / ts_av_diff(, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 数据字段 | | `` | `22`, `66` | 窗口 | --- ### TPL-1504: 中位数模板 ``` 模板: - ts_median(, ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | 任意字段 | 数据字段 | | `` | `22`, `66`, `252` | 窗口 | --- ### TPL-1505: 累积乘积模板 ``` 模板: ts_product(1 + , ) ``` | 占位符 | 可选值 | 说明 | |--------|--------|------| | `` | `returns`, 收益率字段 | 收益字段 | | `` | `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_rank`, `group_zscore` | 外层分组操作 | | `` | `ts_rank`, `ts_delta`, `ts_mean` | 中层时序操作 | | `` | `ts_zscore`, `ts_rank`, `ts_ir` | 内层时序操作 | | `` | 任意字段 | 数据字段 | | `` | `60`, `126`, `252` | 内层窗口 | | `` | `5`, `22`, `66` | 外层窗口 | | `` | `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_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_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_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:数据字段分类 ### 量价类 `` ``` close, open, high, low, vwap returns, volume, adv20, sharesout, cap ``` ### 基本面类 `` ``` assets, sales, ebitda, net_income, eps, operating_income goodwill, debt, cash, equity, gross_profit fnd6_*, fnd72_*, mdl175_*, mdl163_* debt_to_equity, roe, roa ``` ### 分析师类 `` (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_* ``` ### 情绪类 `` ``` 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 ``` ### 期权类 `` ``` 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 ``` ### 模型类 `` ``` mdl175_01dtsv, mdl175_01icc mdl163_*, mdl* ``` ### 分组类 `` ``` industry, sector, subindustry market, country, exchange sta1_top3000c20, sta1_* pv13_*, pv27_* ```