一、敏捷开发概述:什么是敏捷开发、敏捷宣言与原则、为什么因子工厂需要敏捷

1.1 什么是敏捷开发?——别把它想得太玄乎

敏捷开发,说白了就是一种「小步快跑、持续交付」的做事方式。

我刚开始接触敏捷时,也觉得它就是个开会方法——每天站一站、两周开个回顾会,完事。后来真正在量化项目里用起来,才发现完全不是这么回事。

传统开发模式,好比你要盖一栋楼。先画好完整图纸,再打地基、砌墙、封顶,最后才能住人。整个过程可能半年、一年,中间客户想改个窗户位置?对不起,得加钱,还得重新审批。

敏捷开发呢?更像是在搭乐高。你先搭个能站住的小模型,给客户看。他说「窗户位置不对」,你当场拆了重搭。两三天后,又一个新版本出来了。就这样,边搭边改,边改边交付。

在因子工厂的场景里,这个「客户」就是量化研究员。他们今天想要一个动量因子,明天发现数据源有问题,后天又觉得计算逻辑要优化。你想想看,如果用传统瀑布模型,等三个月后交付,黄花菜都凉了。

1.2 敏捷宣言与原则——四句话,但字字千金

2001年,17个软件大佬聚在犹他州的滑雪场,聊出了《敏捷宣言》。一共四句话:

个体和互动 高于 流程和工具

可工作的软件 高于 详尽的文档

客户合作 高于 合同谈判

响应变化 高于 遵循计划

注意,不是「不要流程、不要文档」,而是「更看重左边」。我见过很多团队,把敏捷理解成「不用写文档」,结果项目交接时一团糟。嗯,这里要划个重点:右边的东西也有价值,只是左边更优先。

基于这四句话,又衍生出12条原则。我挑几条跟因子工厂最相关的说说:

  • 尽早、持续地交付有价值的软件——因子工厂里,哪怕只跑通一个因子计算,也比憋三个月出个大版本强。
  • 欢迎需求变化,即使是在开发后期——量化策略迭代快,今天用的因子,下周可能就失效了。你必须有拥抱变化的准备。
  • 业务人员和开发人员必须每天在一起工作——我在项目里吃过亏,研究员和开发隔着一道墙,结果做出来的因子计算引擎,研究员根本用不顺手。
  • 团队定期反思如何更有效——每两周坐下来聊聊:哪里卡住了?哪里可以优化?别等到项目崩了才复盘。

1.3 为什么因子工厂需要敏捷?——三个血泪教训

你可能觉得,因子工厂不就是写写计算逻辑、调调参数吗?用敏捷是不是小题大做了?

我直接说结论:不用敏捷,因子工厂大概率会做成「一次性工具」。为什么?

传统开发的问题 在因子工厂中的表现 敏捷如何解决
需求不明确 研究员说「我要一个波动率因子」,但具体怎么算?用哪种波动率?数据频率?他可能自己都没想清楚。 先做一个最小可用版本,跑出结果再迭代
数据源频繁变化 今天用Wind数据,明天换聚宽,后天又加了个另类数据。接口、格式、字段全不一样。 短周期迭代,每次只适配一个数据源
计算逻辑复杂 一个因子可能涉及多表关联、时间序列计算、去极值、中性化……写出来容易,跑对难。 持续集成+自动化测试,每次改动都验证

我曾经参与过一个因子工厂项目,团队用了传统瀑布模型。先花两个月写需求文档,再花三个月开发,最后一个月测试。结果呢?交付那天,研究员说:「这个因子我们已经不用了,现在用另一个。」——六个月的投入,打了水漂。

我的建议:因子工厂的敏捷,不是让你每天站会、贴便利贴就完事了。核心是「快速验证、快速反馈、快速调整」。哪怕第一版只支持一个因子、一个数据源、一个计算引擎,也比憋个大招强。

1.4 敏捷在因子工厂中的落地框架

说了这么多理论,来张图直观感受一下。下面这张图展示了因子工厂的敏捷开发核心流程:

因子工厂敏捷开发核心流程 需求收集 研究员提出因子需求 快速设计 最小可行方案 迭代开发 1-2周一个版本 验证反馈 研究员试用并反馈 反馈循环:每次迭代都回到需求收集 关键要点: • 每个迭代周期1-2周,产出可运行的因子计算模块 • 研究员全程参与,随时调整需求优先级 • 自动化测试保证每次迭代不破坏已有功能 • 定期回顾,持续优化开发流程

注意:这张图看起来简单,但真正执行起来,最难的是「反馈循环」这一步。我曾经见过一个团队,迭代了10个版本,每次都是开发自己测,研究员根本不参与。结果呢?第11个版本上线时,研究员说「这个因子计算逻辑从一开始就是错的」。

所以,反馈必须来自真正的使用者,而不是开发自嗨。

1.5 小结:敏捷不是银弹,但它是因子工厂的「氧气」

说了这么多,其实就一句话:因子工厂的本质是「快速实验」,而敏捷开发就是让这个实验能跑起来的机制

没有敏捷,你可能会陷入「需求永远在变、代码永远在改、交付永远在延期」的泥潭。有了敏捷,至少你能保证:每个版本都是可用的,每次反馈都是有价值的,每个迭代都是向前走的。

我个人习惯,在项目启动时就跟团队说清楚:我们不是在做一件完美的艺术品,而是在做一件能用的工具。先让它能用,再让它好用,最后才让它漂亮。这个顺序,千万别搞反了。


公众号:蓝海资料掘金营,微信deep3321