1. 项目概述:当AI助手成为你的量化研究员
如果你在量化研究或者投资分析领域工作过,哪怕只是自己写写策略,大概率都经历过这样的场景:为了验证一个因子的有效性,你需要打开Jupyter Notebook,导入pandas、numpy,从数据库拉取价格、成交量、财务数据,然后花几十行代码计算因子值,再写几十行代码计算IC(信息系数)、ICIR(信息比率),画分位数收益图,做稳健性检验……一套流程下来,半天时间就没了,而且下次换个因子,还得把这套“流水线”再跑一遍。更别提因子挖掘了,那简直是在数据的海洋里盲目捕捞。
现在,想象一下,你只需要对你的AI编程助手(比如Cursor、Windsurf、Claude Code)说一句话:“帮我评估一下价量背离因子”,它就能在几分钟内,自动完成数据获取、因子计算、多维度评估,并生成一份包含IC均值、ICIR、五分位收益、单调性检验的完整报告。这就是Alpha Skills项目要解决的问题。它不是一个需要你安装、配置、调用的Python库,而是一套“技能包”(SKILL.md文件)。你把这些技能描述文件加载到你的AI助手中,你的助手就瞬间被武装成了一位7x24小时待命、精通多市场规则、具备机构级研究流程的资深量化研究员。
这个项目的核心价值在于极致的效率提升和认知门槛降低。它把量化研究中那些重复、繁琐、但又至关重要的标准化工作(数据验证、因子计算、绩效评估、回测)封装成了AI能理解和执行的“技能”。你,作为研究者,只需要关注最核心的“想法”和“逻辑”:你想要什么样的因子?你对市场有什么样的假设?剩下的脏活累活,交给这位AI研究员去完成。它支持A股、港股、美股市场,内置了二十多个常见因子模板,更重要的是,它提供了一套从因子发现、评估、入库、监控到自动回测的完整工作流。对于个人投资者、小型基金的研究员,或者只是想系统学习量化方法的朋友来说,这相当于获得了一个免费的、顶配的研究助理。
2. 核心设计思路:为什么是“技能”而非“框架”?
在深入细节之前,我们先拆解一下Alpha Skills的底层设计哲学。市面上不乏优秀的量化回测框架(如Zipline, Backtrader, Qlib),但它们通常有几个共同点:学习曲线陡峭、需要大量的样板代码、框架本身比较“重”。Alpha Skills选择了一条截然不同的路径:它本身不是一个框架,而是一套详尽的“说明书”。
2.1 技能即提示词:将专业方法论转化为AI可执行的指令
每个技能(如alpha-evaluate,alpha-backtest)都是一个独立的Markdown文件(SKILL.md)。这个文件里写了什么?它详细描述了完成该任务所需的完整步骤、计算公式、注意事项、代码模板以及输出格式。例如,在alpha-evaluate技能中,它会明确告诉AI:
- 目标:评估一个因子的有效性。
- 输入:用户用自然语言描述的因子(如“过去20天的动量”)。
- 步骤:
- Step 1: 解析用户描述,将其转化为具体的因子计算公式(如
(close / close.shift(20)) - 1)。 - Step 2: 从配置的数据源(Tushare/Yahoo Finance)获取指定时间范围、股票池的历史数据。
- Step 3: 计算因子值,并进行标准化、去极值、行业市值中性化等处理。
- Step 4: 计算未来N期收益率(通常为1天、5天、20天)。
- Step 5: 计算因子值与未来收益率的横截面Rank IC序列。
- Step 6: 计算IC的均值、标准差、ICIR(均值/标准差)。
- Step 7: 进行五分位分组分析,计算多空组合收益,检验收益单调性。
- Step 8: 生成包含关键指标和可视化图表的评估报告。
- Step 1: 解析用户描述,将其转化为具体的因子计算公式(如
- 输出:在聊天界面打印核心指标(IC=0.066, ICIR=0.696),并将详细图表保存至
output/文件夹。
当你把这份“说明书”加载到AI助手的上下文中,AI就获得了执行这项量化研究任务的全部知识。它接下来要做的,就是根据这份指南,动态地生成并执行对应的Python代码。
注意:这种设计带来了巨大的灵活性。你无需等待项目作者更新版本以支持新的数据源或因子模型。如果你精通某个市场的特殊规则(比如A股的涨跌停、T+1),或者想接入自有的数据API(如聚宽、米筐),你完全可以自己修改或创建新的SKILL.md文件,教会你的AI助手按照你的规矩来办事。这相当于拥有了一个可高度定制的研究流程。
2.2 零依赖架构:解放环境,聚焦逻辑
传统的量化框架需要你pip install一个庞大的包,然后学习其特有的API。Alpha Skills反其道而行之,它只依赖最基础的数据科学栈:pandas, numpy, scipy, matplotlib。对于数据获取,它建议使用 tushare(A股)和 yfinance(美股/港股),但这些也仅仅是“建议”而非“强制依赖”。
为什么这么做?因为AI助手生成的代码是“原生”的Python代码。它直接使用pandas进行数据处理,用numpy进行计算,用matplotlib画图。这意味着:
- 环境极其干净:你几乎不需要处理令人头疼的版本冲突问题。
- 代码透明可控:AI生成的每一行代码你都能看懂,也都能手动修改和调试。
- 无框架锁定:你的研究逻辑不会被绑定在任何特定框架上,研究成果(因子公式、评估结果)是独立于工具的。
这种设计的精髓在于,它把AI助手变成了一个“超级代码生成器”,而这个生成器遵循着一套严谨、专业的量化研究规范。你获得的是方法论的赋能,而非框架的约束。
2.3 多级评估管道:从快速筛查到深度诊断
一个合格的量化研究员不会对一个因子只做一个简单的回测就下结论。Alpha Skills内置的评估流程模拟了机构研究的严谨性,分为四个层级:
L0 - 语法与数据验证(瞬间完成)在开始任何计算前,AI会先检查因子表达式的语法是否正确,以及所需的数据字段是否可用。这避免了因简单的数据缺失或公式错误而浪费大量计算时间。
L1 - 快速IC筛查(<30秒)为了高效地从海量因子创意中筛选出有潜力的候选者,L1阶段不会使用全量数据和全时间周期。它的典型做法是:抽样200只股票,使用最近2年的数据,快速计算因子的IC值。这是一个高效的“初筛”环节,能够迅速淘汰掉那些连在抽样样本上都表现平平的因子。
L2 - 全面评估(1-3分钟)通过L1筛查的因子,会进入L2全面评估。这里使用全股票池、更长的历史周期(例如5-10年)。评估内容非常全面:
- IC时间序列:观察IC是否稳定,是否存在明显的衰减。
- ICIR:这是衡量因子稳定性的核心指标,ICIR > 0.5 通常被认为是不错的。
- 五分位收益分析:将股票按因子值从高到低分为5组,观察每组下一期的平均收益。一个好的因子应该呈现清晰的单调性(第一组收益最高,第五组收益最低)。
- 多空组合收益:做多第一组,做空第五组,计算组合的累计收益、夏普比率、最大回撤等。
L3 - 稳健性检验(5-15分钟)这是区分“运气”和“alpha”的关键一步。L3检验会从多个角度“攻击”因子,检验其稳健性:
- 参数扰动:将因子计算中的参数(如动量周期20天)微调为18天或22天,观察IC是否发生剧烈变化。过于敏感的因子可能过拟合。
- 滚动窗口分析:将整个回测期划分为多个子窗口(如每年一个窗口),计算每个窗口内的IC,观察其是否在所有子时期内都有效。
- 起始日敏感性:改变回测的起始日期(比如晚一个月开始),观察核心结论是否改变。
这套管道确保了评估的深度和可靠性,让你对因子的信心不仅仅来源于一个漂亮的夏普比率,而是建立在多层次、多角度的实证检验之上。
3. 实操全流程:从零开始驾驭你的AI研究员
了解了设计思路,我们来看如何具体使用。整个过程非常清晰,可以分为环境准备、技能加载、日常交互三个部分。
3.1 环境准备与基础配置
首先,你需要一个AI编程助手。目前兼容性最好的有Cursor、Windsurf和Claude Code。它们共同的特点是深度集成了代码生成与执行能力。以我个人最常用的Cursor为例。
第一步:克隆技能库在你的工作目录下打开终端,执行:
git clone https://github.com/VernonOY/alpha-skills.git cd alpha-skills这会得到项目的所有文件,其中核心是skills/目录下的各个alpha-*.md文件。
第二步:安装Python依赖Alpha Skills本身无依赖,但它生成的代码需要以下基础库来运行。建议创建一个独立的conda或venv环境。
# 基础数据科学栈 pip install pandas numpy scipy matplotlib pyarrow # 市场数据源(按需安装) pip install tushare # 用于A股数据,需要注册获取token pip install yfinance # 用于美股和港股数据pyarrow是为了提高pandas处理大数据时的性能,非必须但推荐。
第三步:配置数据源(以A股为例)如果你主要做A股研究,需要先配置Tushare。前往Tushare官网注册,获取你的API Token。然后在项目根目录下,你可以创建一个.env文件(或直接在AI对话中设置环境变量):
# .env 文件内容示例 TUSHARE_TOKEN=你的token MARKET=CN DATA_MODULE=examples.cn_data_tushareDATA_MODULE指向了项目内置的A股数据适配器。它定义了如何获取股票列表、日线行情、市值、行业等基础数据。如果你想用其他数据源(如AkShare),就需要参照examples/下的模板编写自己的适配器。
3.2 技能加载与平台适配
这是最关键的一步:让AI助手“学会”这些技能。不同平台的操作略有不同,但核心逻辑都是将SKILL.md的内容放入AI的“系统提示”或“规则”区域,使其在每次对话时都能参考这些指令。
对于Cursor:
- 在Cursor中打开你的项目文件夹。
- 进入
alpha-skills/skills/目录。 - 打开任意一个
SKILL.md文件,例如alpha-evaluate.md,复制其全部内容。 - 在项目根目录下,创建或打开
.cursorrules文件。 - 将复制的内容粘贴进去。如果你要加载多个技能,可以将多个SKILL.md的内容依次粘贴到同一个
.cursorrules文件中。 - 保存文件。现在,Cursor在这个项目里的所有对话,都会基于这些技能规则来响应。
对于Windsurf:操作与Cursor几乎完全相同,只是规则文件名为.windsurfrules。
对于Claude Code:将技能文件复制到Claude Code指定的技能目录下:
cp -r alpha-skills/skills/alpha-* ~/.claude/skills/这样,你可以在Claude Code中通过@命令来调用这些技能。
实操心得:我建议不要一次性加载所有技能。根据你当前的研究阶段,按需加载。例如,今天主要做因子挖掘,就只加载
alpha-mine和alpha-evaluate;明天要做组合回测,再加载alpha-backtest。这样可以减少每次对话时AI需要处理的上下文长度,使它的响应更聚焦、更准确。你可以创建多个不同的规则文件(如.cursorrules.mine,.cursorrules.backtest),根据需要重命名使用。
3.3 核心技能交互实战
环境就绪,技能加载完毕,现在可以开始和你AI研究员对话了。以下是一些典型场景的对话示例和背后的原理。
场景一:因子评估——你的第一个命令这是最常用的功能。假设你对“换手率因子”感兴趣。
你:评估一下换手率因子(turnover)AI收到指令后,会执行alpha-evaluate技能中的流程:
- 解析:识别出“turnover”是内置因子库中的一个已知因子(对应成交量/流通股本)。
- 数据获取:根据配置的
MARKET(比如CN),调用examples.cn_data_tushare模块,获取全市场股票过去5年的日线行情和股本数据。 - 因子计算:生成代码计算每日的换手率。这里会包含必要的处理,如剔除停牌日、处理缺失值、对因子值进行横截面标准化(z-score)。
- 计算未来收益:计算每只股票在未来1日、5日、20日的收益率。这里会考虑A股的T+1交易制度,确保因子值与可交易的实际收益对齐。
- 计算IC:计算每一天,全市场股票因子值排名与未来收益排名的相关系数(Rank IC),得到一条IC时间序列。
- 分析输出:
- 打印核心结果:
IC Mean = 0.032 | ICIR = 0.45 | Rating: ⭐ Moderate。 - 解释:IC均值为0.032,说明因子值与未来收益存在微弱正相关。ICIR为0.45,稳定性尚可。
- 生成图表:包括IC序列图(看是否稳定)、五分位收益柱状图(看单调性)、多空组合净值曲线。
- 文件保存:所有图表和详细数据表格会保存到
output/eval_turnover_20240517.png这样的文件中。
- 打印核心结果:
场景二:因子挖掘——让AI帮你寻找灵感如果你没有明确的因子想法,可以让AI自动挖掘。
你:挖掘50个与波动率相关的候选因子AI会启动alpha-mine技能:
- 策略选择:它知道“波动率”是一个类别,因此会启动模板挖掘策略。内置的“波动率”模板可能包含:历史波动率(不同周期)、下行波动率、偏度、峰度、已实现波动率与隐含波动率之差(如果数据支持)等。
- 生成候选:基于模板,组合不同的计算窗口(如20日、60日、120日),生成超过50个具体的因子计算公式。
- 快速筛查(L1):对每个候选因子,用抽样数据(200只股票*2年)进行快速IC计算。
- 经济直觉评分:对通过筛查的因子,AI会调用其内部知识(来自技能文件中嵌入的金融先验),判断因子的逻辑是否合理。例如,“过去20日下行波动率”的直觉可能是“Strong”(低下行波动的股票可能风险厌恶,表现稳定),而一个过于复杂的公式可能被评为“Weak”。
- 呈现结果:AI会列出排名前10的因子,包括其ICIR、直觉评分,并询问你是否要将它们注册到因子库中。
场景三:组合回测——验证多因子综合效果当你积累了几个有效的因子后,可以测试它们的综合效果。
你:用我因子库里ICIR最高的3个因子,做多空回测,从2020年到2024年AI会调用alpha-backtest技能:
- 获取因子:从SQLite因子库(一个本地数据库文件)中读取你指定的3个因子。
- 因子合成:生成代码,计算每个因子每日的标准化值,然后等权或按ICIR加权合成一个综合因子得分。
- 构建组合:根据综合得分,将股票分为5组。构建多空组合:做多得分最高的第一组,做空得分最低的第五组。这里会考虑市场的实际交易规则:A股设置0.3%的交易成本,并处理涨跌停无法买卖的情况;美股则成本设为0.1%,T+0。
- 绩效计算:计算组合的日收益率序列,进而计算年化收益、波动率、夏普比率、最大回撤、盈亏比等指标。
- 风控检查:对比你预设的“关卡”阈值(如夏普>1.0,最大回撤>-25%),给出通过/不通过的标记。
- 输出报告:生成净值曲线图、月度收益热力图、滚动夏普比率图等,并保存详细的结果。
注意事项:回测中的“多空”组合在A股实践中面临融券限制,更多是理论分析工具。对于实际可行的“纯多头”策略,你可以在指令中特别说明:“用排名前10%的股票构建等权多头组合,每月调仓”。AI会根据你的指令调整生成的代码逻辑。
4. 高级功能与深度定制
当你熟悉了基本操作,这些高级功能能将你的研究效率提升到新的层次。
4.1 自动驾驶模式:全自动研究循环
alpha-autopilot技能是终极利器。你只需要说一句:“开启自动驾驶模式”,AI就会启动一个完整的、循环的研究流程:
- 挖掘:自动运行
alpha-mine,挖掘一批新因子。 - 评估:对挖掘出的因子进行L2全面评估。
- 注册:将评估通过(如ICIR > 0.5)的因子自动注册到因子库。
- 监控:定期运行
alpha-monitor,检查库中所有因子的IC是否出现衰减(例如,最近3个月的IC均值相比历史大幅下降)。 - 退休:将持续失效的因子标记为“退休”,并移出有效因子库。
这个循环可以设置为每周或每月自动运行一次,相当于建立了一个自动进化的因子工厂,让你的因子库不断迭代更新,淘汰失效的,补充新鲜的。
4.2 自定义因子:注入你的独家逻辑
内置因子虽好,但真正的alpha往往来自独特的见解。你可以轻松地教AI计算自定义因子。
你:评估一个因子,公式是:过去5日收盘价的标准差,除以过去20日的平均成交量AI会解析你的自然语言描述,将其转化为Python代码:ts_std(close, 5) / ts_mean(volume, 20)。它会自动处理数据的对齐、缺失值,并执行完整的评估流程。这意味着你可以用最自然的方式,快速验证任何一个突如其来的投资灵感。
4.3 接入任意数据源:打破数据壁垒
项目内置了Tushare和Yahoo Finance的适配器,但设计上是开放的。数据适配器本质上是一个实现了7个标准函数的Python模块:
get_trade_calendar: 获取交易日历。get_all_stocks: 获取股票列表。get_daily_data: 获取日线行情(开高低收、成交量)。get_industry_data: 获取行业分类。get_market_cap_data: 获取市值数据。get_index_data: 获取指数数据(用于基准比较)。get_adj_factor: 获取复权因子。
如果你有Wind、聚宽、米筐的API,或者自己的本地数据库,只需要按照这个接口实现一个模块,然后在配置中指定DATA_MODULE为你模块的路径,AI研究员就能无缝切换数据源。这为机构用户提供了极大的便利。
4.4 信号生成:从研究到模拟交易的桥梁
alpha-signal技能是连接研究和交易的桥梁。在交易日收盘后,你可以运行:
你:生成今天的交易信号AI会:
- 从因子库中取出所有“活跃”的因子。
- 获取最新的市场数据。
- 计算每个股票的最新因子值,并合成综合得分。
- 根据你预设的规则(例如,选择综合得分最高的30只股票),输出一个目标持仓列表(包含股票代码和理论权重)。
这个列表可以直接导入到你的模拟交易或实盘交易系统(需额外对接)中,用于第二天的交易。它使得研究流程能够直接产出交易决策,形成了闭环。
5. 避坑指南与常见问题排查
在实际使用中,你可能会遇到一些问题。这里总结一些常见坑点和解决方法。
问题一:AI生成的代码报错,提示“未找到名为‘ts_mean’的函数”
- 原因:AI在生成因子计算代码时,使用了类似
ts_mean(close, 20)的表达式,这通常是模仿了pandas的滚动计算,但ts_mean并非pandas内置函数。 - 排查:检查AI生成的代码。它可能想表达
close.rolling(20).mean()。这是因为技能描述文件中的示例代码模板可能被AI错误解读或泛化。 - 解决:这是一个需要“调教”AI的地方。当出现这种错误时,你可以中断它,并给出明确指令:“请使用pandas的rolling方法计算滚动均值,例如
close.rolling(window=20).mean()。” 经过一两次纠正,AI在后续生成代码时就会更准确地使用标准pandas语法。
问题二:回测结果过于完美,夏普比率高得不真实
- 原因:这是量化研究中最常见的“过拟合”陷阱。可能的原因包括:1)使用了未来函数(look-ahead bias),例如在计算因子时不小心用到了当天的收盘价;2)在因子计算中未进行必要的中性化处理(行业、市值);3)样本内数据过度优化。
- 排查:
- 使用
alpha-evaluate技能中的L3稳健性检验,特别是参数扰动和滚动窗口分析。如果因子对参数极其敏感或在某些子时期完全失效,则过拟合嫌疑很大。 - 仔细检查AI生成的因子计算代码,确保所有数据都进行了正确的滞后处理(
.shift(1))。 - 在
alpha-mine中,关注AI给出的“经济直觉评分”。被评为“Weak”的因子,即使历史数据表现好,也要高度警惕。
- 使用
- 解决:始终对历史回测保持怀疑。尝试将样本数据分为训练集和测试集(例如,用2018年以前的数据训练,用2019年后的数据测试)。在配置中调高评估关卡,例如将
GATE_SHARPE从1.0提高到1.5,GATE_ICIR_STRONG从0.5提高到0.7。
问题三:处理A股数据时,因子在涨跌停日出现异常值
- 原因:A股有涨跌停板限制,在涨停日,股票可能无量上涨,收盘价不能反映真实供需;在跌停日则无法卖出。如果不处理,会导致因子值或收益率的计算失真。
- 解决:一个成熟的A股适配器应该在
get_daily_data函数中返回涨跌停状态标志。在因子计算和回测逻辑中,需要加入过滤条件。例如,在计算因子时,可以剔除涨跌停日的样本;在回测换仓时,避免买入当天已涨停的股票。你可以修改examples.cn_data_tushare.py或在给AI的指令中明确说明:“在计算因子和生成信号时,请排除当日涨停的股票”。
问题四:运行速度慢,特别是全市场多年数据回测时
- 原因:pandas处理全市场数千只股票、十年日线数据时,如果代码未经优化,循环操作多,会非常慢。
- 优化技巧:
- 向量化操作:确保AI生成的代码大量使用pandas的向量化函数(如
.rolling(),.apply()配合numpy函数),避免使用for循环遍历股票。 - 数据采样:在因子挖掘(L1)阶段,务必使用抽样数据。
- 使用更高效的数据格式:将常用的数据(如复权价格)保存为
parquet或feather格式,读取速度远快于csv。 - 分阶段运行:对于超长周期的回测,可以指令AI分时段计算,比如“先回测2018-2020年,再回测2021-2023年”,最后再合并分析。
- 向量化操作:确保AI生成的代码大量使用pandas的向量化函数(如
问题五:如何管理越来越多的因子?
- 解决:这正是
alpha-library技能的用武之地。它是一个基于SQLite的本地因子数据库。注册因子:将一个通过评估的因子及其元数据(名称、公式、ICIR、创建日期)保存入库。列出因子:查看库中所有因子及其当前状态(活跃/监控/退休)。搜索因子:根据名称、类别或ICIR范围查找因子。退休因子:将长期失效的因子移出活跃池。- 定期使用
alpha-monitor技能对所有已注册因子进行健康检查,自动化管理因子生命周期。
最后,记住这个工具的本质是“增强智能”,而非“人工替代”。它负责执行标准化、流程化的部分,将你从重复劳动中解放出来。但因子背后的逻辑、经济含义、市场环境的判断,以及最终的投资决策,仍然依赖于你作为研究者的专业知识和经验。把AI当作不知疲倦的副驾驶,你来掌舵,让它来处理复杂的仪表盘和导航计算,这样才能驶向真正的Alpha。