量化因子中心手册 / 因子开发

量化因子中心手册

因子开发

用公式或 Python 写自定义因子:两种编写方式的适用场景与语法、验证有效性的要点,以及从编写到仿真验证的完整流程。

因子是量化分析的特征指标,用来描述资产某个维度的特征——价值、动量、波动率等等。一个好的因子,应当在历史回测中对资产未来收益表现出区分能力(历史表现不代表未来)。

平台内置的因子覆盖不到你的想法时,就自己写。写好的因子可以应用于 AI 工作流与仿真验证模块,作为策略回测与信号生成的研究参考依据。

一、你能用到的四件事

  • 基础因子复用:平台内置大量基础因子(量价、财务、情绪等),可以直接调用或二次修改。
  • 自定义因子编写:提供标准化函数库,按语法规则写自己的因子,见 因子函数参考
  • 有效性验证:因子可以在图表中与价格走势叠加,直观查看关联度;也可以走 因子分析看板 的完整指标体系。
  • 因子应用:因子可嵌入 AI 工作流,用于回测验证与仿真信号生成。
说明

主站原来的「超级图表」入口已下线,图表能力并入了工作流应用。AI 工作流的入口在导航「产品 → 工具 → AI 工作流」,需登录。

二、两种编写方式

公式模式:没有编程基础,快速验证想法

用类似 Excel 的数学公式语言,语法简单直观,内置 RANK、MA、DELAY 等函数,覆盖多数常见因子,适合快速验证有效性。

一个 20 日动量因子:

text
RANK((CLOSE/DELAY(CLOSE,20))-1)

读法是从里往外:DELAY(CLOSE,20) 取 20 日前的收盘价,相除减一得到 20 日收益率,RANK 把它在截面上排成 [0,1] 的分位数。截面排名这一步几乎是必需的——不同股票的收益率量纲差异会让原始值不可比。

Python 模式:有编程基础,灵活定制

继承 Factor 基类写自定义因子类,Python 语法全支持,可以用循环、条件与自定义函数处理复杂逻辑。

python
class MomentumFactor(Factor):
    def calculate(self, factors):
        close = factors['close']
        returns = (close / DELAY(close, 20)) - 1
        return RANK(returns)

两种模式的函数库是同一套,公式里能用的算子在 Python 里同样可用。

公式模式 Python 模式
适合 一行能写清的截面表达式 带中间变量、条件分支、异常值处理的逻辑
门槛 无需编程基础 需要 Python 基础
上手速度 稍慢,但天花板高

三、写完之后:怎么验证

写出来只是第一步,因子有没有用要靠指标说话。完整的指标体系见 因子分析怎么读,这里只强调三条最容易忽略的:

  1. 先看方向再看强度。IC 为负不是失败,是反向因子;方向不稳定(累计 IC 忽上忽下)才是真问题。
  2. 检查是否混入未来信息。IC 自相关异常高(如 > 0.8)、或者指标好得不像话,先回头查因子表达式里有没有用到当期之后的数据——FUTURE_RETURNS 这类函数只应出现在评估环节,不能进因子本身。
  3. 换窗口复验。只在某一段区间、某一个股票池下有效的因子,多半是拟合了噪声。

四、从编写到仿真的完整流程

  1. 选或写因子:调用平台内置基础因子,或用公式 / Python 模式开发自定义因子。
  2. 接入工作流:把因子作为信号源嵌入 AI 工作流 / 策略。
  3. 验证有效性:通过历史回测与可视化分析,检验预测能力与稳定性。
  4. 仿真运行:在仿真交易模块选择该因子的工作流 / 策略,点【启动交易】配置交易参数并启动。
  5. 监控与复盘:系统实时监控因子值,触发阈值时执行对应指令;在日志模块可以查看因子触发记录。
注意

以上流程止于仿真验证。平台不代客下单,所有真实交易动作由你在自有账户侧独立完成;回测与仿真结果不代表未来收益,也不构成投资建议。

跑通之后,把因子提交进 我的因子池,它会按固定窗口每日更新绩效指标。

五、常见问题

公式提示语法错误怎么办? 先确认函数名与参数个数:函数区分参数类型((X)(X,N)(A,B,N) 等),参数给少或给多都会报错;其次确认括号配对与逗号是中文还是英文——全角符号是最常见的坑。完整函数签名见 因子函数参考

内置函数不够用,能自己扩展吗? 能。公式模式受限于内置算子,遇到需要循环、状态机或自定义统计的逻辑,切到 Python 模式,在 calculate 里自由实现,内置算子仍然可以调用。

IC 只有 0.01 出头,怎么优化? 按这个顺序试:一是做截面处理(RANK / ZSCORE 标准化,必要时做行业、市值中性化);二是调整观察窗口,用衰减图找信号最强的滞后期;三是加过滤条件剔除流动性差、异常波动的标的;四是把弱因子与其他维度的因子组合,单因子 IC 低不代表在组合里没有边际贡献。如果四条都试过仍然接近 0,这个逻辑大概率不成立,换方向比继续调参数划算。

六、下一步