1. 从alpha这个词说起它到底指什么很多人第一次接触量化投资看到alpha策略这四个字第一反应是懵的。alpha在Python里是某个库的名字在数学里是希腊字母在投资圈里又是另一回事。我刚开始做策略研究那会儿也在这几个概念之间来回打转后来才慢慢理清楚在量化投资语境下alpha指的是策略相对于基准的超额收益也就是你跑赢市场的那部分。举个具体的例子。假设你设计了一个策略年化收益15%而同期沪深300指数的年化收益是8%那么这多出来的7%就是你的alpha。注意这里有个关键前提——你得先扣掉无风险利率。如果一年期国债收益率是2.5%那么真正的超额收益应该是15%减去2.5%再减去8%也就是4.5%。这个计算看起来简单但实际操作中很多人会忽略无风险利率这一项导致对自己的策略能力产生误判。那为什么叫alpha策略而不是超额收益策略这跟学术界的因子模型有关。经典的CAPM模型把收益拆成两部分一部分跟市场整体涨跌相关叫beta收益另一部分跟市场无关纯粹靠选股或择时能力赚到的叫alpha收益。后来Fama-French三因子模型、五因子模型不断扩展但核心逻辑没变——alpha就是剥离掉所有系统性风险暴露之后剩下的那部分收益。这里要特别提醒一点很多人把绝对收益和alpha混为一谈。绝对收益是指不管市场涨跌策略都要赚钱而alpha是相对于某个基准而言的。一个策略可能在熊市里亏了5%但同期指数跌了20%那它依然有15%的alpha。所以做实证研究时基准的选择直接决定了你alpha的计算结果这一点在后面会详细展开。理解了alpha的定义接下来就要面对一个更现实的问题怎么判断一个策略的alpha是真实的还是运气好这就引出了实证研究的核心价值。2. 为什么实证研究比回测报告更值得看市面上很多量化策略的展示页面动辄贴出一张漂亮的净值曲线年化收益30%以上最大回撤不到5%。但如果你真的拿真金白银去跑结果往往差得远。问题出在哪回测和实证之间隔着一道巨大的鸿沟。回测是在历史数据上模拟交易它天然带有几个致命缺陷。第一是幸存者偏差——你用的股票池是今天还在交易的股票那些已经退市、被ST、被并购的股票被自动剔除了这会让回测收益虚高。第二是前视偏差——你在回测时可能不小心用到了未来才知道的信息比如用当天的收盘价决定当天的买入这在实盘中根本不可能。第三是交易成本被低估——回测里往往只算个万分之几的佣金但实盘中还有滑点、冲击成本、流动性不足导致的无法成交。实证研究不一样。它要求你把策略放到一个更接近真实交易的环境里去检验包括样本外测试、滚动窗口验证、参数敏感性分析等等。我自己的习惯是任何一个策略在正式上线之前至少要经过三轮实证检验第一轮用样本内数据做初步筛选第二轮用样本外数据做验证第三轮用模拟盘跑至少三个月。这三轮下来能活下来的策略不到最初候选的十分之一。那具体怎么做实证研究核心思路是把策略开发和策略验证严格分开。开发阶段你可以尽情挖掘数据、调整参数但一旦进入验证阶段就不能再回头改参数了。这就像考试出题和答题必须分开一样否则你就是在作弊。还有一个容易被忽略的点实证研究要关注策略的容量。有些策略在小资金量下表现很好但资金规模一上去收益就急剧下降。比如一个基于小盘股的策略资金量超过5000万之后买卖股票本身就会推动价格变动导致滑点大幅增加。所以在实证阶段就要估算策略的容量上限而不是等到实盘才发现问题。3. 搭建实证研究框架从数据到信号到组合做alpha策略的实证研究不是随便写几行代码跑个回测就完事了。你需要一个完整的框架我把它拆成四个模块数据层、信号层、组合层、评估层。每个模块都有各自的坑下面逐个说。3.1 数据层清洗比获取更重要数据是量化研究的基石但很多人把80%的精力花在找数据上只留20%做清洗这是本末倒置。我自己的经验是数据清洗的时间应该占到整个研究流程的一半以上。具体要清洗什么首先是缺失值处理。股票数据里经常出现某天没有交易的情况可能是停牌也可能是数据源的问题。如果是停牌那当天的价格应该沿用前一天的收盘价而不是简单删除。如果是数据源问题那就要去核对原始数据。其次是异常值检测。比如某只股票一天涨了300%这大概率是数据错误需要标记出来单独处理。最后是复权处理。前复权、后复权、不复权三种方式算出来的收益率完全不同做实证研究时必须统一口径。提示数据清洗的代码一定要保留日志记录每一步删除了哪些数据、修改了哪些值。否则后面发现结果异常时根本无从排查。3.2 信号层因子构建的逻辑比公式重要信号层是alpha策略的核心也就是你用什么指标来决定买什么、卖什么。常见的因子包括动量因子、价值因子、质量因子、波动率因子等等。但我要说的是因子的经济学逻辑比它的计算公式重要得多。举个例子动量因子。它的计算很简单过去N个月的收益率。但为什么动量因子有效学术界有两种解释一是投资者反应不足好消息需要时间才能完全反映在价格里二是投资者反应过度导致价格趋势延续。这两种解释对应的是完全不同的市场环境。如果你不理解背后的逻辑就不知道什么时候该用动量因子什么时候该避开它。再比如价值因子。常用的指标是市净率、市盈率。但不同行业的合理估值水平差异巨大银行股的市盈率普遍在5到10倍而科技股可能在30倍以上。如果你直接拿全市场的市盈率排序那选出来的全是银行股。正确的做法是在行业内部做排序或者对行业进行中性化处理。3.3 组合层从信号到持仓的转化有了信号之后怎么把它变成具体的持仓这一步叫组合优化。最简单的做法是等权买入信号最强的N只股票但这种方法有几个问题一是没有考虑股票之间的相关性可能买入了很多同质化的股票二是没有考虑风险可能集中持有高波动股票三是没有考虑交易成本可能频繁调仓导致成本侵蚀收益。更专业的做法是用均值-方差优化或者风险平价模型。均值-方差优化需要估计预期收益和协方差矩阵但预期收益的估计非常不稳定稍微变一下参数结果就天差地别。所以实践中更常用的是风险平价也就是让每只股票对组合风险的贡献相等。这种方法不需要估计预期收益只依赖协方差矩阵稳健性更好。还有一个实操细节调仓频率。调仓太频繁交易成本高调仓太慢信号失效。我一般会做一个换手率分析看看在不同调仓频率下策略的净收益是多少。通常来说月度调仓是一个比较平衡的选择但具体还要看策略的类型。3.4 评估层不要只看夏普比率评估一个策略的好坏很多人只看夏普比率。夏普比率确实重要但它有一个致命缺陷它假设收益率服从正态分布。而实际的金融收益率往往是尖峰厚尾的极端事件发生的概率比正态分布预测的要高得多。所以除了夏普比率还要看最大回撤、卡玛比率、胜率、盈亏比等一系列指标。我自己的评估清单包括年化收益率、年化波动率、夏普比率、最大回撤、最大回撤持续时间、卡玛比率、月度胜率、盈亏比、换手率、容量估算。这些指标要综合起来看不能只盯着一个。4. 一个完整的实证研究案例拆解光说理论太抽象下面用一个具体的案例来演示整个实证研究流程。为了不涉及具体投资建议这里用模拟数据来说明。4.1 研究问题与假设假设我们要研究的问题是在A股市场中过去20个交易日的动量因子是否能够带来显著的alpha我们的假设是过去20个交易日涨幅靠前的股票在未来5个交易日中依然会跑赢市场。这个假设的理论基础是短期动量效应。行为金融学认为投资者对新信息的反应存在滞后导致价格趋势在短期内延续。但要注意这个效应在A股市场是否成立需要实证检验。4.2 数据准备与清洗我们选取某指数成分股作为股票池时间跨度从2018年1月到2023年12月共6年数据。数据清洗步骤包括剔除上市不足60个交易日的股票剔除ST、*ST股票对停牌股票的价格进行前向填充计算前复权收益率剔除日均成交额低于1000万的股票清洗完成后我们得到了一个相对干净的日频面板数据。4.3 因子计算与分组测试动量因子的计算公式是过去20个交易日的累计收益率。我们每个交易日计算所有股票的动量因子值然后按从高到低分成5组分别记为Q1到Q5。Q1是动量最强的组Q5是动量最弱的组。然后我们观察未来5个交易日各组的表现。如果动量效应成立Q1的收益应该显著高于Q5。实测结果如下表所示分组日均超额收益t统计量胜率Q10.08%2.3154%Q20.03%1.1251%Q30.00%0.0550%Q4-0.02%-0.8749%Q5-0.06%-1.9547%从结果看Q1组的日均超额收益为0.08%t统计量为2.31在5%的显著性水平下显著。Q5组的日均超额收益为-0.06%t统计量为-1.95接近显著。这说明动量因子在A股市场确实存在一定的预测能力。4.4 多空组合构建与回测基于上面的分组测试我们构建一个多空组合做多Q1组做空Q5组。调仓频率为每5个交易日一次交易成本按单边千分之二计算。回测结果显示这个多空组合的年化收益率为12.3%年化波动率为8.7%夏普比率为1.41最大回撤为-9.2%。看起来不错但这里有几个问题需要进一步检验。第一这个收益是否来自beta暴露也就是说多空组合的收益是不是因为做多了一些高beta股票、做空了一些低beta股票我们做了一个beta中性化处理发现年化收益降到9.8%夏普比率降到1.12。这说明有一部分收益确实来自beta暴露但alpha部分依然显著。第二这个策略的容量有多大我们估算了不同资金规模下的冲击成本。当资金规模在5000万以下时冲击成本对收益的影响不大当资金规模超过2亿时冲击成本会侵蚀掉大约3%的年化收益。第三参数敏感性如何我们把动量因子的回看窗口从20天改成15天、25天、30天发现收益变化不大说明策略对参数不太敏感这是一个好现象。4.5 样本外验证上面所有的测试都是在样本内做的。为了验证策略的稳健性我们把数据分成两段2018年到2021年为样本内2022年到2023年为样本外。在样本内确定好所有参数后直接在样本外跑一遍。样本外的结果显示年化收益率为8.7%夏普比率为0.95最大回撤为-12.4%。收益有所下降但依然为正。这说明策略有一定的样本外泛化能力但并没有样本内表现的那么好。这也是正常现象——样本内表现总是会优于样本外关键看下降幅度是否在可接受范围内。5. 实证研究中那些没人告诉你的坑做实证研究这些年踩过的坑比成功的策略多得多。下面挑几个最有代表性的说说希望能帮你少走弯路。5.1 过拟合你以为找到了规律其实只是噪声过拟合是量化研究中最常见也最致命的坑。它的表现是策略在历史数据上表现完美但一到实盘就亏钱。产生过拟合的原因有很多最常见的是参数挖得太细。比如你把均线的周期从5天试到60天发现23天的时候收益最高于是就用23天。但这个23天很可能只是历史数据中的偶然现象换一段数据就不灵了。怎么避免过拟合我的经验是控制自由度。一个策略的参数越少越好最好不超过3个。另外样本外测试是必须的而且样本外的时间跨度不能太短至少要有2到3年。还有一个技巧是交叉验证把数据分成多段轮流做样本内和样本外看策略在不同时间段的表现是否稳定。5.2 幸存者偏差你看到的股票池是幸存下来的幸存者偏差是指你在回测时使用的股票池是今天还在交易的股票那些已经退市或被并购的股票被自动剔除了。这会导致回测收益虚高因为退市的股票往往是表现差的。解决方法是使用历史成分股。也就是说在回测的每一个时间点只使用当时实际存在的股票。这需要你有一份历史成分股名单并且能够处理成分股的调入调出。很多数据源都提供这个功能但需要额外付费。5.3 交易成本滑点比你想象的大回测中很多人只算佣金忽略滑点。但滑点才是交易成本的大头。滑点是指你的成交价和预期价之间的差异它取决于你的交易量、市场的流动性、下单的方式等等。我做过一个测算对于日均成交额5000万的股票如果你单笔交易100万滑点大约在0.1%左右如果你单笔交易500万滑点可能上升到0.3%以上。所以策略的容量是有限的资金量越大滑点越高收益越低。注意回测时一定要把滑点算进去而且要用保守的估计。我一般按单边千分之二到千分之三来算具体取决于股票的流动性。5.4 数据窥探你看了太多遍数据数据窥探是指你在同一份数据上反复测试不同的策略最终找到一个看起来不错的。但这个过程本身就是在拟合噪声因为你有太多的尝试机会。就像让100个人抛硬币总有人能连续抛出10次正面但这不代表他有特殊能力。避免数据窥探的方法是保留一个最终验证集。这个数据集在你确定最终策略之前绝对不能看。只有当你已经确定了策略的所有细节才能在这个验证集上跑一次。而且只能跑一次不能反复调整。6. 从实证研究到实盘还有多远的路实证研究做完了策略看起来也不错是不是就可以直接上实盘了还差得远。从实证到实盘中间还有好几道坎。第一道坎是模拟盘验证。模拟盘是用真实的市场数据但用虚拟资金进行交易。它和实盘的区别在于你的交易不会真正影响市场所以没有冲击成本。但模拟盘可以帮你检验策略的执行逻辑是否正确比如信号是否及时生成、订单是否能够成交、持仓是否与预期一致。第二道坎是小资金实盘。用少量资金跑一段时间看看实际收益和模拟盘的差异。这个阶段最重要的是记录每一笔交易的细节包括下单时间、成交价格、滑点大小等等。这些数据可以帮助你校准交易成本模型为后续的大资金运作做准备。第三道坎是策略监控与迭代。策略上线之后不是就不管了。你需要持续监控策略的表现看它的收益是否偏离预期、回撤是否在可控范围内、因子是否失效。一旦发现异常要及时排查原因。同时市场环境在变化策略也需要不断迭代。但迭代的时候要注意不能因为短期表现不好就频繁修改参数这样很容易陷入过拟合。我自己的做法是给每个策略设定一个预警线和止损线。预警线是当回撤达到某个阈值时开始密切关注止损线是当回撤达到另一个阈值时暂停策略进行全面检查。这两个阈值要根据策略的历史回撤分布来设定不能拍脑袋决定。7. 关于工具链的一些个人选择最后聊聊工具。做量化研究工具的选择很重要但更重要的是你对工具的理解程度。我用过不少工具下面说说我的选择逻辑。数据存储方面我主要用关系型数据库存日频数据用列式存储存高频数据。关系型数据库的好处是查询灵活适合做探索性分析列式存储的好处是压缩率高、读取速度快适合做大规模回测。回测框架方面我倾向于自己写而不是用现成的框架。原因很简单现成的框架虽然方便但它的假设和你的策略需求可能不匹配而且出了问题很难排查。自己写的话每一行代码你都清楚它在做什么调试起来也方便。当然如果你刚开始做用现成的框架快速上手也没问题但一定要理解它的内部逻辑。编程语言方面Python是主流选择生态丰富社区活跃。但Python的性能是个问题特别是做大规模回测的时候。我的做法是核心计算用C或Rust写外层用Python调用。这样既保证了开发效率又保证了运行速度。版本控制方面强烈建议用Git管理代码。量化研究涉及大量的参数调整和策略迭代没有版本控制的话你很快就会忘记哪个版本对应哪个结果。我自己的习惯是每次做重要修改都提交一次并且写清楚修改内容和原因。工具链的搭建不是一蹴而就的需要根据你的研究需求不断调整。关键是不要为了用工具而用工具工具是为你服务的不是反过来。写到这里关于alpha策略量化投资实证研究的第一部分就差不多了。后面如果继续写我会重点讲多因子模型的构建与组合、风险模型的搭建、策略归因分析这些更深入的内容。量化投资这条路不好走但每一步踩实了积累下来的经验都是自己的。