因子与评价

因子与评价页面帮助用户管理自己的因子代码、计算因子结果和查看因子表现。

因子研究的流程如下图所示。

1. 图 2-1 因子研究流程


我的因子、因子计算模板、评价模板三个子页面分别管理当前用户的私有因子,私有因子计算模板,评价模板。其中评价模板页面中包括所有具有因子。

我的因子

用户可在此页面管理自己的因子。此页面中的内容仅限作者查看和编辑。

我的因子页面以列表的形式展示了当前用户的所有私有因子。包括模块名称、模块中包含的因子、属性、标签、运行记录数、创建时间、更新时间、备注等信息。

2. 图 2-2 我的因子


创建:进入新建因子模块页面。

3. 图 2-3 新建因子模块


填写因子模块基本信息:

  • 因子模块名称:输入因子模块名称,支持中文和英文,不可与列表中已有模块重名。
  • 公开重名检测:检查“公共脚本库-因子库”中是否存在同名模块。
  • 因子模块属性:设置模块中因子的属性,用于测试和运行时与模板属性匹配。
  • 因子模块标签:为该因子模块设置标签。
  • 备注:针对该因子模块的用法解释或注释等备注信息。

点击“运行记录”后,可跳转至任务监控页面的因子板块以查看运行记录。

编辑:点击模块名称,或在新建模块过程中点击确定将进入因子模块代码编辑页面。

4. 图 2-4 编辑因子模块代码


  • 代码编辑区(图 2-4 ①):
    • 灰色背景区内容由系统自动生成并固定,按照定义的因子模块名称声明模块;
    • 白色背景区由用户编辑,包括模块中各因子的具体实现。
  • 测试:对该因子模块中的因子进行测试。
  • 修改因子模块信息:修改因子模块基本信息,即新建时第一步填写的信息。
  • 保存代码:将当前代码编辑区中的代码保存。
  • 代码历史记录:记录着最近五次保存的历史代码,且这些代码和当前代码任意二者之间可相互比较。
  • 执行:执行代码编辑区选中的代码,也可使用快捷键 ctrl+e 实现。注意此操作不会返回执行结果,需要通过 print 函数将执行结果打印输出到 图 2-4 ②。
  • 清空:清空图 2-4 ②中打印输出的历史记录。

测试:对该因子模块中的因子进行测试。步骤如下:

5. 图 2-5 因子测试参数配置


选择因子:选择要进行测试的因子。既可选整个模块,也可选择模块中的部分因子。

选择因子计算模板:可选择一个或多个因子计算模板,当光标在下拉菜单的某一计算模板上停留时,会显示该模板的备注。选择多个因子计算模板时,后面的模板可以使用前面模板的计算结果。最终返回最后一个模板的结果。

填写参数:根据计算模板的参数,填写具体数据类型和数据值。注意:
  • 内置模板的数据类型已经固定,用户无需设置。
  • 自 3.00.2 版本起,引入 CODE 类型参数,用于在模板运行时动态计算参数值,支持通过表达式根据当前执行时间等上下文生成参数。CODE 类型的数据值仅支持单行表达式,换行符后的内容不会被执行。

保存预设:将当前填写的参数数据类型和数据值保存,且与该模板绑定。保存预设时,需为此预设指定唯一名称。

导入配置:将本地包含参数配置的 json 文件导入。

导出配置:将当前配置以 json 文件格式导入到本地。

6. 图 2-6 因子测试中因子评价配置


是否进行因子评价:选择“是”时,须选择评价模板,评价模板也支持选择/保存预设、导入/导出配置进行参数设置和保存。用户也可设置可视化模板,将评价结果输出到可视化模板进而返回报告。

公开:将用户私有的因子模块公开到部门,同部门下的其他用户可在公共库-因子库中访问并使用该因子模块。

7. 图 2-7 公开因子模块


选择因子报告:选择因子模块评价报告供审批人查阅。

审批人:选择要公开到的部门以及该部门审批人。若为二次公开(即之前已公开过该因子模块,本次是对修改后的模块进行公开),则首次公开时的部门默认为必选。

对使用者加密源码:加密后,其他用户对该公开因子模块仅可调用,无法查看因子模块源码。

对审批人加密源码:加密后,审批人在审批时无法查看因子模块源码。

批量导出:在页面中选择需要导出的模块名称,点击“批量导出”按钮,可将所选模块导出为 .dos 文件。

导入:点击“导入”按钮并选择因子模块文件进行导入,目前仅支持 .dos 文件。

删除:删除当前因子模块。

批量删除:多选因子模块后,进行批量删除。

因子计算模板

用户可在此页面管理自己的因子计算模板。此页面中的内容仅限作者查看和编辑。

因子计算模板页面以列表形式展示了当前用户私有的因子计算模板。列表包括模板名称、属性、标签、创建人、创建时间、更新时间、备注等信息。

8. 图 2-8 因子计算模板


创建:进入新建因子计算模板页面。

9. 图 2-9 新建因子计算模板


  • 模板名称:输入因子计算模板名称,支持中文和英文,不可与列表中已有模板重名。
  • 属性:设置计算模板的属性,用于测试和运行时与因子属性匹配。
  • 标签:为该计算模板设置标签。
  • 备注:针对该计算模板的用法解释或注释等备注信息。

编辑:点击模板名称(图 2-8 ①),或在新建模板过程中点击确定将进入因子计算模板代码编辑页面。

10. 图 2-10 编辑模板代码


  • 代码编辑区(①):编写因子计算模板代码。
  • 修改因子模板信息:修改因子计算模板基本信息,即新建时第一步填写的信息。
  • 保存代码:将当前代码编辑区中的代码保存。
  • 代码历史记录:记录着最近五次保存的历史代码,且这些代码和当前代码任意二者之间可相互比较。
  • 执行:执行代码编辑区选中的代码。也可使用快捷键 ctrl+e。注意此操作不会返回执行结果,需要通过 print 函数将执行结果打印输出到 图 2-10 ②。
  • 清空:清空图 2-10 ② 中内容。

删除:删除当前因子计算模板。

批量删除:多选(图 2-8 ②)因子计算模板后,进行批量删除。

评价模板

用户可以在此对计算因子表现,实现因子评价。

评价模板页面以表格形式展示了当前集群中所有拥有因子权限的用户编写的评价模板,包括模板名称、标签、运行记录、创建时间、更新时间、创建人和备注等信息。

11. 图 2-11 评价模板


创建:进入新建评价模板页面。

12. 图 2-12 新建评价模板


  • 名称:输入评价模板名称,支持中文和英文,不可与列表中已有模板重名。
  • 标签:为该评价模板设置标签。
  • 备注:针对该评价模板的用法解释或注释等备注信息。

点击“运行记录”后,可跳转至任务监控页面的因子评价板块以查看运行记录。

编辑:点击模板名称(图 2-11),或在新建模板过程中点击确定将进入评价模板代码编辑页面。仅模板作者有权编辑。

13. 图2-13 编辑评价模板代码


  • 代码编辑区(图 2-13 ①):编写因子计算模板代码。
  • 修改模板信息:修改评价模板基本信息,即新建模板时填写的信息。
  • 运行:执行因子评价。
  • 保存代码:将当前代码编辑区中的代码保存。
  • 代码历史记录:记录着最近五次保存的历史代码,且这些代码和当前代码任意二者之间可相互比较。
  • 执行:执行代码编辑区选中的代码。也可使用快捷键 ctrl+e。注意此操作不会返回执行结果,需要通过 print 函数将执行结果打印输出到 图 2-13 ②。
  • 清空:清空图 2-13 ② 中内容。

运行:执行因子评价。

14. 图2-14 运行评价模板


  • 运行方式:
    • 直接运行:直接运行该因子评价模板。
    • 基于因子草稿运行:基于用户私有因子完成因子计算后,运行因子评价。
    • 基于公开因子运行:基于公开因子完成因子计算后,运行因子评价。
  • 填写参数:根据评价模板的参数,填写具体数据类型和数据值。内置模板的数据类型已经固定,用户无需设置。
  • 保存预设:将当前填写的参数数据类型和数据值保存,且与该模板绑定。保存预设时,需为此预设指定唯一名称。
  • 导入配置:将本地包含参数配置的 json 文件导入。
  • 导出配置:将当前配置以 json 文件格式导入到本地。
  • 可视化模板:选择可视化模板,将评价结果输出到可视化模板进而返回报告。

查看代码:查看评价模板的代码。

删除:删除当前因子计算模板。

批量删除:多选(图 2-11 ②)评价模板后,进行批量删除。

因子看板

因子看板用于统一管理团队构建的因子库,并对因子表现进行分析。目前仅支持股票日频因子的分析。

用户可以快速查看不同因子的覆盖范围、IC表现、分组收益、多空收益及换手率等评价指标,并支持多个因子的横向对比分析。

整体使用流程如下:

  1. 在“看板配置”界面,创建并配置因子看板
    1. 配置因子数据源、行情数据源和筛选条件
    2. 启用看板并执行初始化计算
    3. 系统按照定时任务持续更新评价结果
  2. 在“看板”界面,用户选择看板并查询单因子或因子评价结果列表

15. 图 2-15 因子看板界面


16. 图 2-16 因子看板配置界面


新建因子看板

如果需要新增或调整因子看板,需要进入“因子看板配置”页面,点击“创建”按钮新建一个因子看板。

17. 图 2-17 新建因子看板


只有处于启用状态的看板才会出现在“看板”页面中。每位用户均可独立维护和管理自己的因子看板列表。

在“看板配置”页面,可进行以下操作:

  • 创建:新建因子看板

  • 编辑:修改已有看板配置

  • 删除:删除看板

  • 导入:导入已有看板配置文件

  • 导出:导出当前看板配置

  • 启用:启用看板并触发初始化运行

  • 禁用:停止后续定时任务运行

  • 查看运行记录:查看初始化和定时任务的历史运行情况

18. 图 2-18 因子看板配置


导入与导出

因子看板支持配置的导入与导出,便于复用已有配置、进行跨环境迁移以及配置备份。

  • 导出格式:配置通常以 JSON 文件形式导出。
  • 导入用途:可直接复用已有看板配置,减少重复配置工作,提高配置效率。
  • 导入后检查:导入完成后,建议核对数据源字段、筛选器字段以及模板参数是否与当前环境保持一致。
  • 启用态注意事项:对于已启用的看板,如需调整配置,建议先禁用再进行修改或导出操作。

导入配置文件仅用于恢复或复用配置内容,系统不会自动修正字段不匹配、参数缺失或其他无效配置。为确保看板正常运行,建议在导入后对配置项进行全面检查。

启用、禁用与删除

启用和禁用不仅是看板状态的切换,还会影响看板的可编辑性、前台展示状态以及相关系统任务的执行。

  • 启用前检查:启用前需完成必要配置,否则系统将在启用时进行校验并提示错误。
  • 配置修改:看板启用后通常不允许直接修改关键配置。如需调整配置,建议先禁用看板,完成修改后再重新启用。
  • 初始化执行:首次启用看板,或在关键配置变更后重新启用时,系统会重新执行初始化流程。
  • 删除限制:删除已启用的看板时,系统通常会要求用户进行二次确认。
  • 状态控制:部分操作按钮会根据当前状态自动禁用(置灰),表示当前条件下不允许执行相应操作。

建议在完成所有关键配置并确认配置正确后再启用看板。过早启用可能导致初始化失败、看板界面展示异常或结果不符合预期。

配置数据源

点击看板名称,可进入看板编辑页面。在该页面中,需要配置因子数据源和行情数据源。

因子数据源

因子数据源用于指定系统从哪些 DolphinDB 表中读取因子数据。点击“添加数据源”,可以添加新的因子数据源表。表中通用字段包括:

  • securityId:标的代码

  • tradetime:时间

  • factorId:因子 ID

  • factorname:因子名称

  • value:因子值

  • username:因子作者

  • tags:因子标签,通常使用逗号分隔

行情数据源

行情数据源用于计算 Forward Return,是因子评价中的收益基准数据源。点击“添加数据源”,可以添加新的行情数据源表。表中通用字段包括:

  • securityId:标的代码

  • tradetime:时间

  • close:收盘价

  • pool_names:股票池名称。该字段用于支持股票池维度的筛选分析,但并非所有场景的必选字段;若当前看板不依赖股票池映射,可不配置该字段。

数据源配置建议

数据源为必填项,若未完成配置或配置不完整,看板将无法正常启用。

源表字段类型必须与系统预期的字段保持一致,尤其是时间字段、标的代码字段及数值类字段。字段类型或语义不匹配可能导致因子计算或收益评估结果异常。

即使系统支持自动字段映射机制,也无法保证在所有场景下映射结果完全正确。因此,在配置完成后仍需对字段映射关系进行校验,以确保数据来源与指标计算逻辑一致。

配置筛选条件

筛选条件用于在看板查询时过滤因子和行情数据。

基础筛选器由系统预置,通常包括:用户、部门、时间范围、自定义标签、股票池。配置人员可以选择是否启用这些筛选器。配置时可根据业务需求选择启用相应筛选器。

至少需要启用一个基础筛选器。若未启用任何基础筛选器,即使看板成功发布,“看板”页面仍可能因缺少必要的查询条件而导致报错或无法正常加载数据。

19. 图 2-19 因子看板筛选条件


后台运行参数配置

这类参数用于定义数据来源、计算规则及运行边界,例如行情数据源、因子数据源以及极端值过滤规则等。这类参数在看板运行过程中保持固定,不允许用户调整。

对于需要指定执行时间的配置项(如定时任务),必须填写有效的时间值,否则相关任务无法正常执行。

在设计看板时,建议仅开放必要的可调整参数。对于以快速分析为主的使用场景,可适当减少可调整参数数量,以降低配置复杂度并提升使用效率。

配置定时任务

定时任务用于控制看板每日增量计算的执行时间,其配置方式与 Starfish 工作流中的定时任务机制保持一致。

系统将在指定时间触发增量更新任务,用于刷新因子评价结果及相关衍生指标。

  • 定时任务的执行时间必须为有效且完整的时间值,否则任务将无法正常注册或执行。
  • 定时任务仅控制数据的计算与更新时机,不影响前台查询行为。
  • 定时任务的执行时间不等同于筛选器的时间范围设置,两者相互独立。

初始化运行

在看板配置完成并启用后,系统将自动触发初始化运行。

初始化运行通常在以下两种情况下执行:

  • 看板首次启用

  • 关键配置发生变更后的重新启用

初始化运行会对历史因子数据与行情数据进行回溯计算,用于生成完整的因子评价中间结果(如 IC、分组收益、多空收益等)。

在数据量较大的场景下,系统可能采用分批处理与分段写入机制,以提升执行稳定性并降低单次计算压力。

注意:初始化运行属于后台批处理过程,其执行时间可能较长,具体耗时取决于历史数据规模与计算指标复杂度。

定时任务增量运行

增量计算通常由定时任务自动触发执行。

增量运行仅处理新增或发生变更的数据,不会重复计算已完成的历史结果,从而降低整体计算成本并提升执行效率。

查看运行记录

用户可以在看板配置列表中点击运行记录数,查看该看板的历史运行任务,包括初始化任务、每日增量任务以及运行结果状态。

该功能主要用于任务执行过程的追踪与问题定位,便于排查计算异常或数据更新问题。

编辑与保存

在看板进入维护阶段后,配置管理的核心不再是“是否可以保存”,而是“配置变更是否正确持久化并在系统中生效”。配置更新包含以下操作:

  • 修改看板基本信息后应可正常保存,且不应影响已有配置结构。
  • 保存成功后,配置变更应立即生效;再次进入编辑页面时,应展示最新配置内容。
  • 在修改内部配置时,应保留看板的基础元信息,例如标签、备注等,不应随配置更新被覆盖或重置。

对于已启用的看板,建议在修改关键配置前先执行禁用操作,以降低因状态不一致导致的保存失败或运行异常风险。

每次配置修改后,建议按以下流程进行验证:

  1. 保存配置
  2. 重新进入编辑页面确认配置已正确更新
  3. 执行小范围查询验证结果一致性
  4. 确认无误后再重新启用或发布配置

查看因子看板

进入“看板”页面后,用户可以查看当前有权限访问且处于启用状态的因子看板。未启用的看板不会显示在该页面中。

选择看板

每个看板对应一套独立的配置,包括数据源、筛选器以及可调整参数。切换看板后,系统会自动加载该看板对应的查询条件和分析规则。

由于不同看板采用的配置可能不同,因此展示的筛选条件、可调整参数以及分析结果结构也可能存在差异。当切换看板后发现筛选器或结果区域发生变化时,通常属于看板配置差异所导致的正常现象。

设置查询条件

用户可根据需要设置查询参数,例如时间范围、因子、股票池、标签等。

系统仅展示被配置为允许调整的参数,并允许用户修改其取值;未开放调整的参数将按预设配置生效,无需用户参与设置。

常见筛选行为如下:

  • 时间范围:系统支持默认时间范围,也可根据配置提供自定义时间范围查询。

  • 股票池筛选器:若配置允许为空,用户可以不指定股票池,或取消已选股票池后再执行查询。

  • 标签类筛选器:用于按照因子标签、业务分类或其他自定义维度进行筛选。

可用的查询参数及筛选条件由看板配置决定。不同看板可能提供不同的筛选器和参数选项,具体取决于其配置内容以及关联数据源中可用的字段和值。

20. 图 2-20 因子看板查询


执行查询

点击“查询”后,系统将基于已生成的评价中间结果进行聚合分析,并生成对应的因子评价报告。

查询成功时,页面将展示与当前查询条件匹配的最新分析结果。

若查询执行失败,系统将清空结果展示区域,以避免历史结果与本次查询状态混淆。

需要注意的是,定时任务中的起止时间用于定义增量计算的数据处理范围,而查询时使用的时间范围由页面中的查询条件决定。两者相互独立,不会相互影响。

查看因子评价结果列表

因子评价结果列表用于在统一评价框架下对多个因子进行横向比较,以评估各因子在不同评价指标上的表现差异。

分析结果通常包括核心绩效指标、IC 统计指标、分位收益及多空组合收益等内容。系统以表格形式汇总各因子的评价结果,便于用户进行对比分析和因子筛选。

21. 图 2-21 因子评价结果列表


查看单因子分析结果

单因子分析用于查看单个因子的完整评价报告,并从多个维度评估该因子的表现特征。

报告通常包含以下内容:

  • 描述性统计

  • IC 分析

  • IC 时序图

  • 分组收益

  • 多空组合净值

  • 收益分布

  • 换手率分析

  • 回撤分析

  • 因子自相关分析

通过上述指标和图表,用户可以对因子的预测能力、稳定性、收益特征及风险特征进行综合分析。

在因子评价结果列表中点击任意因子名称,即可进入对应的单因子分析页面。

跳转时,系统会自动继承当前查询条件,包括时间范围、评价周期及其他筛选条件,从而保证单因子分析与当前因子评价结果列表分析结果保持一致,便于从整体结果进一步深入分析单个因子。