🔗 开源项目地址:https://github.com/zer0quant/zer0factor
这是因子投研自动化系列的第三篇。前两篇,我们从研报生成因子,搭建了因子评估流水线。这次继续往前走一步:给这套系统做一个真正方便研究的界面。
之前,我已经把因子评估系统搭起来了。
我用 Codex + Alphalens,搭了一套适配 A 股的因子评估流水线(已开源)
我用 Codex,把“投资研报到股票因子”的流程做成了一个 Skill(已开源)
现在可以通过命令行生成因子、做预处理、批量评估,再输出报告。AI 也能帮我敲命令、读结果、分析因子,整条流程基本跑通了。
但用了一段时间,我还是觉得不太顺手。
因子评估结果越来越多,我对因子的直觉反而没有跟着增加。
一个因子换几个滚动窗口,再做几种中性化处理,就能派生出一大批版本。表格里密密麻麻的数字,看起来信息很多,但真要判断哪个值得继续研究,还是得来回翻报告。
于是,我决定给 zer0factor 做一个 Web 看板。
这篇就记录一下:我怎么让 Claude Code 一轮轮把它做出来,以及看板做完以后,哪些原来藏在报告里的问题变得直观了。
一、评估跑通了,为什么还要做一个看板?
评估流程跑通以后,我又把日收益率、开盘收益、日内收益、隔夜收益这几类基础因子,扩展成了不同滚动窗口的因子族。
再叠加标准化、行业中性化、市值中性化等处理,评估结果很快就过百了。
命令行和汇总报告能解决“批量跑”的问题,但研究时,我经常想问的是:
这几类收益率因子,哪一类整体表现更好? 同一个因子换成不同窗口,收益曲线有什么变化? 多空表现不错,到底是多头选得好,还是空头那组跌得多? 这个因子最近还有效吗?信号能维持多久?
这些问题都可以让 AI 帮我分析。但如果能把结果放在同一个界面里,自己切一切、比一比,很多判断会直接得多。
比如,同一种因子的八条周期曲线叠在一起,和分别打开八份报告,完全是两种体验。
我想要的看板,就是让这些比较更容易发生。
二、先做出第一版,再一轮轮改
先把参考界面给 AI,让它拆方案
我先找了一个同类产品的界面,把截图发给 Claude,让它分析页面结构,再制定实现方案。
它给了几种选择:Python 后端加独立前端、用 Streamlit 快速搭建,或者继续生成静态 HTML 报告。

我更熟悉 React,所以最后选了独立前端这条路线:后端复用现有的评估结果,前端用 React 做展示和交互。
接着用上 Superpowers,按先明确需求、再拆任务、最后实现和检查的流程往下做。

第一版很快就有了。

基础架构已经出来了:有因子列表,可以筛选、排序,也能点进去看详情。
但第一眼看过去,还是很像把数据库里的字段直接搬到了网页上。
最明显的就是因子名称。像 z_size_industry_neu_intraday_return_ma60 这样的名字,程序读取很方便,人扫一眼却很难抓住重点。
点进去以后,单因子的评估详情也有了。

这时可以看分组收益、核心指标等结果,但还是偏向于“打开一个版本,看一份报告”。
如果我要比较同一种因子的不同周期,就得继续切换页面。它已经能展示结果了,但离我想要的研究体验,还有一段距离。
第一轮优化:让 AI 自己看页面、找问题
下一步,我让 Claude Code 新开了一个会话,专门优化看板的 UI。

这次我先没逐条告诉它怎么改,而是让它自己看页面、截图,做一轮头脑风暴,列出值得优化的地方。
它按 P0、P1、P2 排了优先级,每个问题下面又有具体的修改动作。

有些建议挺实用。
比如,把很长的因子名拆成“预处理方式、基础因子、窗口”三个部分;筛选也按这几个维度拆开;从详情页返回时,保留之前的搜索和筛选状态。
这些都是看着不大、用起来却很影响体验的问题。
于是我让它按清单继续做。改完之后,界面变成了这样:

比第一版清楚多了,至少不用再对着一长串英文前缀猜因子是什么。
但我还是觉得复杂。
各种窗口、各种预处理方式仍然挤在首页里。同一个基础因子占了很多行,表格虽然更整齐了,研究时要做的比较却没有少多少。
再改一轮:首页按基础因子看,细节放到里面
这时候,需求才慢慢清楚起来。
我打开首页,首先想知道的是:日内收益、日收益率、开盘收益、隔夜收益,这几类因子里,谁更值得继续看?
至于 MA5、MA20、MA60,以及不同的中性化版本,可以点进去以后再比较。
于是,我把这些想法重新整理给 Claude,让它再改了一轮。

这一版就简洁很多。
首页一行对应一个基础因子,默认展示主版本的汇总结果。股票池、时间区间、持有期、成交口径等评估设置放在顶部,具体窗口和处理方式留到详情页展开。
这里还有一个容易忽略的细节:首页的指标是主版本各窗口结果的中位数,并不对应某一个具体窗口。
这样,首页先帮我判断一个因子族的整体情况,点进去再看具体版本,就不容易被某个特别亮眼的参数吸引走。
在这次截图的评估口径下,日内收益的 ICIR、多头超额等指标相对更靠前,隔夜收益的多头表现则明显偏弱。下一步先研究谁,一眼就有了方向。
三、真正用起来,看板帮我看到了什么?
首页解决的是先看谁,详情页要解决的就是怎么看。
这部分我也反复改了几轮。有个挺好用的功能,是 Superpowers 的可视化头脑风暴:它可以先在浏览器里展示设计稿,把不同布局摆出来,再选择方案实现。官方说明里也介绍了这种用法。
我这次截图里的版本是 v7.0.1。相比只看文字描述,直接看到“版本表格加曲线叠加”和“小图网格”两种方案,容易判断得多。

最后做出来的详情页,主要帮我回答下面几个问题。
1. 同一个因子,换不同窗口会怎样?
先看日内收益因子的周期对比。

上面是不同窗口、不同处理方式的指标,下面把同一处理方式下各个窗口的多头超额累计收益叠在了一张图里。
这时候,紫色的 MA60 曲线就很显眼了。在这段历史样本里,它的累计多头超额收益相对更高。
但如果看上面的 ICIR,MA60 大约是 0.33,MA5、MA20 则在 0.40 左右。
也就是说,多头超额收益更高的窗口,未必也是 ICIR 最高的窗口。
以前只看某个排序指标,很容易直接挑第一名。现在把它们放在一起看,就会自然追问:这个窗口究竟改善了什么?其他指标有没有付出代价?
当然,这里是在同一段历史数据里比较多个参数。MA60 的曲线更好看,只能说明它值得继续验证,还不能据此认定它就是最优参数。后面仍然要看样本外和不同阶段的表现。
2. 多空表现好,收益到底来自哪一端?
再看分组和分层收益。

这张图的层次比较清楚:从组 1 到组 10,收益整体呈下降趋势。
当前展示的是反向因子,多头取低分组。右边未扣费的分层超额年化收益里,组 1 大约是 13.1%,组 10 大约是 -27.0%。
弱势组相对基准落后的幅度,比优势组跑赢基准的幅度更大。
这就提醒我:如果只看多空曲线,很容易忽略两端的不对称。因子区分出了表现差的股票,并不等于买入另一端就能获得同样亮眼的收益。
如果拿它做 A 股多头策略,空头端的理论收益不能直接算进策略收益里。我更需要单独看多头超额、回撤和换手,再考虑交易成本。
图里也能看到这个差别:分层柱状图标的是“未扣费”,下方则另列了多头扣费后的超额。比较时,不能把这两种口径混在一起。
这里,我会把收益分层和 Rank IC 结合起来看:前者展示各组收益的差异,后者衡量因子值与未来收益的秩相关关系。两端的收益差距,不能直接当作 IC 的贡献拆分。把这些图放在一起,比单独读一个 ICIR 数字,更容易形成对这个因子的判断。
3. 全样本有效,最近也有效吗?
接着看 Rank IC 的时间序列和衰减。

左边的柱子是方向调整后的月度 Rank IC 均值,蓝线是累计 Rank IC。因为这是反向因子,页面把方向乘以 -1,方便按同一个方向观察。
蓝线整体向上,说明历史上积累了正向的排序信号。但它是 IC 的累计值,不能当成策略净值曲线,也不能仅凭它比较平滑,就认为因子一直稳定。
看月度柱子就会发现,近期有一段信号回落,也出现过负值,随后又有回升。
这些变化值得继续检查:最近几个阶段的 IC、分组收益,是否和长期结果一致?把近期单独拿出来看,才更容易判断信号有没有变化。
右边的衰减图,则是在看当前因子与延后 k 个交易日的单日收益之间的相关性。
从图上看,前几个交易日的 Rank IC 下降比较明显,大约从 0.03 附近降到 0.02 附近,后面整体继续减弱,中间也有起伏。
它能帮助判断信号随时间推移衰减得有多快。但这张图并不是不同持有期的累计收益,不能直接拿某根柱子决定应该持有几天。
以前,这些信息也都在评估结果里。现在把它们放到同一个页面上,研究时更容易顺着一个问题继续往下看。
四、先做出来,才能知道下一步怎么改
这次做看板,还有一个挺明显的感受:AI 编程把试错成本降下来了。
一开始,我其实也说不清楚最终的界面应该长什么样,只知道命令行和报告用起来不够直观。
第一版出来以后,才发现名称太长、版本太多;改完名称和筛选,又发现首页的信息层级不对;把首页简化以后,再继续打磨详情页的比较方式。
很多需求,是在真正看到、用到界面以后,才想清楚的。
这次 Claude Code 在长任务上的体验也比我之前用的时候顺了一些。把优化点拆清楚以后,它能连续完成一批修改,我再根据结果继续提下一轮需求。
所以,对于这类还没有完全想清楚的工具,我现在更愿意先做一个最小可用版本,拿真实的研究任务用一用,再决定怎么改。
比如这次,真正让我满意的变化,就是首页从一长串因子版本,变成了几类基础因子;详情页则把窗口对比、分层收益和 IC 放在了能一起看的地方。
它让我更容易看清:某个参数好在哪里,多空收益是否对称,长期信号背后有没有近期变化。
到这里,zer0factor 在原来的批量评估流程上,又多了一个可以日常打开、比较和研究的入口。
后面继续加因子时,就可以一边让 AI 帮我生成和评估,一边自己在看板里看结果。
💬 如果你也想把自己的研究流程做成顺手的工具,比如数据系统、因子评估或可视化看板,欢迎 通过公众号菜单「认识我」找我聊聊。有具体的开发需求,也可以一起讨论定制方案。
如果这篇文章对你有帮助
⭐ Star 一下项目:https://github.com/zer0quant/zer0factor 本地数据系统项目:https://github.com/zer0quant/zer0share 使用过程中遇到 bug,或者有功能建议,欢迎在 GitHub 提 Issue,也欢迎直接贡献 PR。 关注公众号,后面继续更新因子投研自动化、AI 编程实践和本地量化系统的搭建过程。
我们下篇见。
系列前文:

研报速递