前阵子帮一位刚转行做量化的朋友做策略体检,我打开他的回测脚本,第一反应不是看代码有没有bug,而是问了他一个问题:你这套策略到底在赚市场的什么钱?他愣住了,半天没答上来。这个问题我见过太多次了,很多人以为量化就是写几段漂亮的Python代码、跑出一条光滑的回测曲线,但真正支撑一套体系长期运转的,恰恰是代码和曲线底下那些看不见的东西。后来我习惯用“道法术器势”这套框架来审视自己手上的量化项目。听起来有点像玄学,可真放到A股实战里,这五个字每个都对应着非常实在的问题:你的底层信仰是什么,你的交易规则怎么定,你的实现手段是否可靠,你的工具链够不够用,以及你所在的市场环境允不允许你赚钱。这篇文章就把这五层逐一拆开讲,结合我在实盘和回测里踩过的坑,给你一份可以直接对照自查的实战指南。1. 道:想清楚自己在赚市场的什么钱,比写出第一个因子重要十倍1.1 量化的本质不是程序化,而是把概率决策纪律化先聊个基础问题:量化交易和主观交易的区别,真的只是“用程序代替人脑”吗?远不止。主观交易的致命伤不是分析能力不够,而是决策一致性极差。同一个交易员,昨天亏了两笔之后心态变了,同样的信号今天就不敢下单了;或者某天特别顺,本来该止损的仓位又“格局”了一下。人性里的恐惧、贪婪、锚定效应,会在每一次决策时悄悄改写规则,导致你没法用统一的标准去评价自己的交易逻辑。量化做的事情,本质上是把一套你认为有统计优势的规则固化成代码,让它在任何情绪状态下都能被无差别执行。但这里有个前提很容易被忽略:代码只能执行你要它执行的逻辑,它不能替你确认“这套逻辑在数学上有没有效”。所以“道”的第一层要解决的是:你凭什么相信某类交易模式能赚钱?我把答案归纳成两类,你可以对号入座。第一类叫“赚错误定价的钱”。市场在某些时候对某些资产给出了偏离内在价值的价格,你通过统计方法找出这种偏离并等待回归。这类策略的信仰是“市场长期有效但短期无效”,比如因子轮动、统计套利都属于这个范畴。第二类叫“赚风险补偿的钱”。你承担某种别人不愿意承担的风险,换取对应回报,比如趋势跟踪本质上是承认“市场会出现剧烈单边行情”,你靠忍受回撤去捕获尾部收益。这和买保险的逻辑相反——你像是那个卖保险的,平时收保费(扛浮亏),遇到大行情时赔付一次大的(吃到大趋势)。两类钱都有人长期赚到,但一个人很难同时做好两类。因为第一类要求你频繁交易、严格对冲,第二类要求你忍受长期回撤、敢下重注。如果一个策略连自己属于哪类都说不清,那回测再漂亮也大概率是巧合。1.2 常见的“道”之扭曲:指标崇拜、回测宗教、完美主义十几年前我刚入行时,踩过最典型的坑就是“指标拼盘”。把MACD、KDJ、均线、布林带全叠到一起,金叉共振就买入,死叉共振就卖出。回测跑出来曲线相当好看,实盘一上就开始亏钱。现在回头看,问题根本不在指标选得不好,而是我说不出这套系统到底在捕捉什么市场规律——均线捕捉趋势,KDJ捕捉超买超卖,两者逻辑互相矛盾,我只是在数据里偶然找到了一组自洽的参数,而自洽并不等于有效。类似的问题还有“回测宗教”。有些人把历史回测当成赚钱预言,年化收益调得越高越兴奋,完全忽略样本外验证、参数敏感性这些基本操作。更有甚者执着于寻找“胜率90%”的系统,仿佛亏钱是可耻的。但只要是概率游戏,胜率根本不重要,重要的是赔率和期望值,你见过哪个赌场是靠高胜率赚钱的?赌场靠的是每局微弱但稳定的正期望,量化的“道”也是这个意思:接受单笔亏损,追求大样本下的稳定正期望。我后来给自己定了一条检查标准:如果我不能用三句话讲清楚一个策略“到底赚的什么钱、在什么条件下会失效、最大亏损可能有多大”,我就不会让它上实盘。这三句话,本质上就是你的交易之“道”。1.3 道的落地方法:写一份属于你的交易信仰说明书很多人觉得这些太虚,不如直接告诉我要买什么。但恰恰是这部分思考,决定了后面所有工作的方向。我的建议非常具体:动笔之前,先写一份500字的《交易理念说明书》,回答四个问题。第一,你相信这个市场有效还是无效,在哪些环节无效?第二,你要赚两类钱中的哪一种,或者以哪个为主?第三,你能坦然接受的单笔亏损、连续亏损和最大回撤分别是多少?第四,你对年化收益的预期是多少,这个预期和你的资金量、时间精力匹配吗?这四个问题不写清楚,后面选策略、定参数、做风控全都是悬浮的。我帮朋友做策略体检时,第一件事就是问他要这份文档,没有的话先回去写完再跑代码,不是我在故意刁难,而是没有“道”的量化系统,跑得越快,毁得越快。2. 法:把“怎么赚”和“怎么活下来”写成不可违反的规则2.1 先划定战场:你适合哪类策略“法”的第一件事是制定方法论,也就是明确你的策略版图。A股常见的个人量化策略,大致可以分成下面四种,各自的赚钱逻辑、时间尺度和死法完全不同。策略类型赚什么钱时间尺度核心依赖常见死法日线趋势跟踪风险补偿,捕获单边行情几天到几周趋势持续性震荡市反复止损多因子选股错误定价,因子暴露溢价几周到几月因子有效性因子拥挤和失效统计套利价差偏离回归日内到几天相关性和均值回归价差不回归、流动性枯竭事件驱动确定性事件带来重估事件前后事件兑现概率黑天鹅、规则变化对个人交易者而言,我的建议是优先考虑日线级别的趋势策略和低频多因子组合,理由很实际:高频交易拼的是低延迟、机房位置、硬件投入和团队规模,个人在这些维度上几乎没有任何相对优势。这不是泼冷水,而是我见过太多人兴致勃勃冲进高频然后被佣金和滑点吃掉的案例。低频策略虽然信号少,但你有充足的时间做决策验证和风控复核,这是个人量化者仅存的阵地之一。2.2 资金管理是法的骨架:单笔风险和总敞口算法规则层面的第二块是资金管理。很多新手把仓位当成“感觉”,行情好就多买,被套了就扛一扛。但职业化的做法是:每一笔交易开仓之前,先算清楚如果错了你会亏多少,这个亏损是否在你可以承受的范围之内。我常用的方法是固定分数风险法,核心原则是“以损定量,而不是以仓定量”。举个例子:账户权益10万元,单笔风险设定为账户权益的1%,也就是1000元。如果某个标的的计划止损距离是2元,那么可买入数量就是1000元除以2元,等于500股。这里的关键在于头寸规模由“止损距离”决定,而不是由“我想买多少”决定。止损距离越近,仓位自然越重,反之亦然,账户风险始终保持恒定。def calc_position(equity, entry_price, stop_price, risk_pct=0.01): risk_amount = equity * risk_pct stop_distance = abs(entry_price - stop_price) if stop_distance == 0: return 0 shares = risk_amount / stop_distance # 再按整手、资金上限做约束 max_by_money = equity * 0.2 // entry_price return int(min(shares, max_by_money))组合层面的总敞口也要有约束。比如单行业暴露不超过权益的30%,单标的暴露不超过20%,相关性高的标的合并计算敞口。另一条硬规则是回撤熔断:账户回撤达到15%时,所有仓位减半;回撤达到25%时,清空全部仓位并停止新开仓至少一周。这套数字只是示例,真正合适的数值取决于你的风险偏好,但“熔断后再复盘”这件事必须写死在规则里,否则亏损到一定程度时,你的情绪一定会接管决策,促使你加码赌一把回本,那是万劫不复的开端。2.3 风控规则:止损、停摆、黑名单风控是“法”的核心,我的经验是宁可多设几条不可执行的规则,也不要只留一条“及时止损”的座右铭。你得把风控做成一串可以逐项打钩的检查项。止损方面,每笔交易进场前必须确定一个价格止损位,通常是技术位或波动率倍数。一个简单实用的设定是用ATR(平均真实波幅)来锚定:止损位设在进场价减去2倍ATR,因为ATR能跟随标的当前波动水平动态调整,比固定百分比更适应不同个股的脾气。停摆方面,前面说的回撤熔断要配合时间条件:触发停摆后至少空仓观察一周,不允许当日重新入场。黑名单方面,我一般会拉一个“不交易名单”,包括流动性差的标的、临近财报或有重大消息但看不清影响的标的、以及被异常放量的游资恶炒标的。黑名单的意义在于,把容易出幺蛾子的交易标的提前挡在门外,而不是等盘中情绪上头了再现场判断。2.4 从规则到协议:每条法都要变成可执行的检查清单再好的规则,如果不落成纸面文字,遇到极端行情时大脑会直接把它忽略掉。所以“法”的最后一步是把上面的原则转成一份可复核的日常协议。我的做法是设计一张三栏表,每天开盘前、盘中、收盘后各执行一遍。盘前检查内容包括:今日是否有账户层面风险警报、隔夜消息面是否有黑名单事件、当前各策略运行条件是否满足。盘中主要监控止损和敞口上限有没有被触及。盘后则记录当日交易日志、对比预期信号与实际成交的偏差、更新组合敞口报表。落盘的好处是出了问题可以回溯,也可以在做策略月度复盘时拿出数据来讨论,而不是靠“我印象里最近亏了不少”这种模糊感觉。3. 术:从数据到信号的六类实操细节,含踩坑实录3.1 数据处理中三个毁掉策略的坑:前视偏差、幸存者偏差、复权选择“术”这一层是我花时间最多的地方,因为大部分回测结果和实盘表现的巨大差异,根源都在数据处理上。第一个坑是前视偏差,也就是无意中用到了当时根本无法获得的信息。我有一次写基本面选股因子时,直接把“当季财报净利润”作为一个字段塞进了信号计算,回测表现好得惊人。后来复盘才发现,财报的披露日期比报告期截止日晚了好几个星期,我用截止日当天的价格和“还没公布”的财报生成信号,实盘根本不可能提前知道。结果是重写数据管道,把所有基本面字段都对齐到“实际披露日期”之后才敢用。第二个坑是幸存者偏差。早期做全市场选股回测时,我直接取当前交易状态下的股票列表,把过去退市的股票全部漏掉了。这等于让策略在一个“永远不会退市”的完美世界里做统计,高估是必然的。后来改成每次回测都用那个历史时点的成分股全集,包括后来退市和ST的,结论才回归现实。第三个坑是复权方式。前复权和后复权对均线系统、动量因子的计算都有影响,尤其是长期回测中除权除息频繁的个股。我的建议是:因子计算尽量用后复权价格,买卖收益率计算再用考虑现金分红的总收益口径,把两种口径分开,避免混用。3.2 因子构造:少而可靠优于多而杂乱很多人一谈到多因子,就恨不得往模型里塞几百个因子,好像特征越多越高级。真实的经验恰恰相反:大部分因子之间高度相关,堆在一起不仅没带来独立的预测能力,反而让模型变成了几个底层因子的线性组合。我习惯的流程是这样的:第一步对原始特征做去极值和标准化,把不同量纲拉齐;第二步做市值和行业中性化处理,排除因子本身只是暴露了市值大小或行业风格的情况;第三步看因子间相关性矩阵,皮尔逊相关系数超过0.7的只保留逻辑更清晰的一个;第四步单因子测试,按十分位分组看收益单调性。整套流程做完,真正能留下来的可靠因子往往只有五到八个。有一段时间我同时测了上百个特征,最后发现模型的绝大部分表现来自三个底层逻辑:估值修复、盈利超预期、短期动量。知道这一点之后,模型表达反而干净多了,也更容易解释。3.3 回测中的参数敏感性与过拟合判别过拟合是策略研发期最隐蔽的杀手。判断一套策略到底是捕捉到了真实规律,还是恰好拟合了历史噪声,我有一套简单的压力测试方法。先看参数扰动。把某个核心参数从最优值上下浮动20%,观察回测绩效的变化幅度。如果参数从30改到28,年化收益就从30%掉到5%,那这套策略的运行并不稳健,它在依赖几个偶然凑对的数字。再看分时段稳定性。把回测区间切成三段,分别看每个子区间的表现,如果策略只在某一段特定行情里赚钱,其他时段全是回撤,那它更像市场状态拟合而不是交易逻辑。最后是样本外验证。策略研发期的最后20%数据不要碰,等全部开发结束再用它做一次终极验证,如果样本外绩效和样本内差距巨大,请回到设计阶段重新思考。我早期做过一个动量策略,全时段回测看起来完美,但分时段一看,利润几乎全部来自某一段单边上涨行情。换成震荡市后,策略被来回收割,连续止损。后来我想明白了一件事:这不是策略,这是对那段上涨行情的记忆。3.4 执行环节的术:成本模型和订单拆分策略信号做得再好,执行层面如果忽略交易成本,竹篮打水一场空。A股交易成本包括佣金、卖出时产生的税费、以及最容易被低估的冲击成本和滑点。冲击成本是指大单买入时把价格推高、大单卖出时把价格砸低的部分,这在流动性差的中小盘股上尤其明显。我给自己定的标准是:回测中把交易成本按常规标准的二到三倍来估算,如果这样的成本假设下策略仍然盈利,才考虑进入实盘验证。很多看起来高换手的策略,算上真实的冲击成本后,毛利润直接变成负数。订单拆分方面,实盘下单时不应该把计划仓位一次性砸出去,尤其是单笔超过一定金额时。我通常把订单拆成三到五份,每隔一段时间或根据盘口流动分批执行,减少对市场价格的瞬间影响。虽然简单市价单执行速度快,但代价可能是一根长上影线,反而让成交均价变得很差。4. 器:一套不过度烧钱的量化兵器库,以及工具边界的清醒认识4.1 数据源选择和数据对账“器”是指你使用的工具和基础设施,首先绕不开的是数据。市面上的数据服务大体分两类:免费的开源数据社区和商业收费数据终端。免费数据的优点是门槛低、文档多,缺点是字段完整性、更新时效和数据质量偶尔有坑,尤其是财务数据的对齐。收费数据则更稳定,但年费不便宜。我的建议是:核心回测至少用两份独立数据源交叉验证。具体做法是同一个因子分别用两套数据算,对比结果差异。如果两套数据算出来的因子值偏差很大,说明数据处理逻辑或复权口径很可能有问题。有一次我计算某财务因子时,A源和B源的净利润数值差异在10%以上,后来发现是“归母净利润”和“净利润”两个口径的差别,导致信号排序不同。数据对齐这件事,值得在前期多花时间,因为它决定了后续所有工作的地基。4.2 回测引擎:用框架之前先知道它在哪做简化回测框架是另一个容易让人迷信的环节。主流的开源回测框架大体分两类:向量化回测和事件驱动回测。向量化回测适合因子研究和策略快速验证,计算效率高,但撮合逻辑简化较多,很难精细处理涨跌停无法成交、停牌、分批成交这些现实情况。事件驱动回测则更贴近真实交易流程——它会按时间顺序逐笔处理信号、订单、成交和风控,因此更慢但更真实。我的建议是:研究阶段用向量化回测快速筛选思路,进入实盘前再跑一遍事件驱动回测,重点观察两类回测结果是否一致。如果差异巨大,大概率是某个现实约束被你忽略了。无论用哪个框架,都要先读清楚它的撮合假设、手续费算法、涨跌停处理方式,否则框架计算结果和真实结果之间的沟壑,早晚会以亏损的形式出现在你的账户里。4.3 从模拟到实盘的过渡路径工具链里最有价值的一条经验:别一步跨进全自动实盘。我推荐一条渐进路线——先做半自动:策略负责产生信号,人工负责确认和下单。这个阶段要坚持至少一两个月,记录每一笔“信号价”和“实际成交价”的差异,积累你自己真实的滑点分布。滑点不是均匀分布的,它和流动性、波动率、你的下单时段都有关系,只有拿到自己的统计数据,才能校准回测里的成本假设。有了稳定的滑点统计之后再考虑全自动。全自动运行的最低要求包括:独立的行情数据源、独立的程序化下单接口、自动止损止盈监控、日志系统、异常报警和紧急手动熔断开关。这几样缺一样都别上。我认识不止一个开发者因为漏了报警而错过止损,等发现的时候仓位已经被动躺了很久。4.4 算力与网络够用就行关于硬件,我想给你省点钱:个人量化需要的算力远比想象中低。如果你做的是日线级别的多因子或趋势策略,一台普通的云服务器、一个数据库、每天收盘后跑一次批量计算,绰绰有余。我见过有人一上来就配双路CPU加四张显卡,最后95%的时间在吃灰。判断是否需要升级硬件的标准只有一个:你的回测任务是否已经成为迭代策略的瓶颈。如果是,优先考虑优化代码逻辑,然后再考虑加配置。高频低延迟那些动辄要求机房托管和专用网络的事,对个人量化者来说基本属于另一个世界,不用在这个维度上焦虑。5. 势:A股市场的结构性现实,决定了哪套策略有容错空间5.1 市场生态的现实:从散户主导到机构化竞争最后一层是“势”,也就是客观环境。很多人做量化时完全不看行情的大环境,关起门来研究参数,实盘以后才发现自己是在和整个市场生态对抗。A股这些年最大的变化之一,是市场参与结构的变化。早期散户交易占绝对主导,行情容易走极端,技术分析和情绪指标有效性很高。随着机构投资者和量化交易占比提升,很多简单的统计规律开始失效,原因是使用方法的人太多,机会被迅速抹平。对个人量化者来说,这并不意味着没有机会,而是要注意,你的相对优势已经不是“比机构知道更多”,而是“决策链路短、没有排名压力、可以耐心等待低竞争的机会”。在策略风格上,这种生态环境更适合低频、深度、带着基本面逻辑的挖掘,而不是拼速度、拼信息扩散的短线玩法。5.2 交易制度的硬约束:T+1、涨跌停、交易成本A股还有一套必须刻进回测的硬约束:交易制度。如果你在A股做量化,却用美股那种可以做日内回转、无涨跌停限制的框架去设计策略,结果会非常失真。T+1制度意味着当天买入的股票当天不能卖出,所以纯日内短线策略很难实现完整的风控闭环,买入后一旦逻辑快速变化,只能等到次日处理。涨跌停制度意味着极端行情下,你很可能面临“想买买不进、想卖卖不掉”的情况,回测时必须把涨停无法买入、跌停无法卖出作为一种约束条件加入撮合逻辑。交易成本方面,频繁换手会显著侵蚀利润,这要求策略的预期毛利必须足够高才能承受对冲成本和交易成本。这些制度约束,本质上划定了个人量化在A股的能力边界——策略设计不能和制度对着干,在边界之内寻找空间才是正道。5.3 因子拥挤:一个公开的秘密不再是秘密“势”还体现在策略生命周期的变化上。任何一个因子,从发现到被广泛使用,超额收益大概率会逐渐衰减,这就是因子拥挤。原因不复杂:当一个规律被越来越多的人知道后,套利资金会快速抹平价差,直到机会消失。这和集市上人人都知道的消息一样,传得越多,越不值钱。应对因子拥挤,没有办法一劳永逸,只有持续迭代。我的习惯是给每个因子标注“逻辑寿命”:依据市场结构变化的因子更新迭代,依据统计巧合的因子随时准备弃用。提升因子的基本面逻辑约束是另一个办法,纯粹统计挖掘的因子容易失效,但有清晰经济含义的因子,即便收益下降,也不会突然变成负的。5.4 顺势而为:不同市场状态下的策略启停“势”的最后一个应用是策略启停。不同的策略适应不同的市场状态:趋势策略在单边行情里如鱼得水,在震荡行情里会被来回打脸;低估值轮动策略在存量博弈环境里表现尚可,但在价值持续重估的趋势行情里可能跑输。我现在每个策略都会配一个“运行条件”:用一系列市场指标判断当前更接近哪种状态,条件不满足就让对应策略空仓等待。这相当于在传统买卖信号之上加了一层战术开关,目的是避开“用趋势策略打震荡市”这种错配。空仓不是无能,而是对“势”的尊重。不要试图让一套策略在所有行情里都赚钱,那只会让它成为所有行情的牺牲品。最后再分享一条个人体会。这套“道法术器势”框架用到今天,给我最大的价值不是保证了收益,而是每次实盘出问题时,我能快速定位是哪一层出了故障。连续亏损了,先查“道”——是不是底层信仰本来就是错的;再查“法”——止损和风控规则是否被严格执行;然后才查“术”和“器”有没有疏漏。很多人的困惑在于把所有问题都归咎于“策略不够好”,然后陷入调参循环,其实问题的根源往往在低层。如果你准备认真做量化,我的建议是从今晚开始写那500字的交易理念说明书,然后把它贴在显示器边上。等你的“道”“法”“器”“术”“势”五层都能在五句话之内复述出来,再考虑碰实盘也不迟。这套框架不会让你暴富,但它能让你在这个市场里活得更久,而久,本身就是量化交易里最重要的复利来源。
前阵子帮一位刚转行做量化的朋友做策略体检,我打开他的回测脚本,第一反应不是看代码有没有bug,而是问了他一个问题:你这套策略到底在赚市场的什么钱?他愣住了,半天没答上来。这个问题我见过太多次了,很多人以为量化就是写几段漂亮的Python代码、跑出一条光滑的回测曲线,但真正支撑一套体系长期运转的,恰恰是代码和曲线底下那些看不见的东西。后来我习惯用“道法术器势”这套框架来审视自己手上的量化项目。听起来有点像玄学,可真放到A股实战里,这五个字每个都对应着非常实在的问题:你的底层信仰是什么,你的交易规则怎么定,你的实现手段是否可靠,你的工具链够不够用,以及你所在的市场环境允不允许你赚钱。这篇文章就把这五层逐一拆开讲,结合我在实盘和回测里踩过的坑,给你一份可以直接对照自查的实战指南。1. 道:想清楚自己在赚市场的什么钱,比写出第一个因子重要十倍1.1 量化的本质不是程序化,而是把概率决策纪律化先聊个基础问题:量化交易和主观交易的区别,真的只是“用程序代替人脑”吗?远不止。主观交易的致命伤不是分析能力不够,而是决策一致性极差。同一个交易员,昨天亏了两笔之后心态变了,同样的信号今天就不敢下单了;或者某天特别顺,本来该止损的仓位又“格局”了一下。人性里的恐惧、贪婪、锚定效应,会在每一次决策时悄悄改写规则,导致你没法用统一的标准去评价自己的交易逻辑。量化做的事情,本质上是把一套你认为有统计优势的规则固化成代码,让它在任何情绪状态下都能被无差别执行。但这里有个前提很容易被忽略:代码只能执行你要它执行的逻辑,它不能替你确认“这套逻辑在数学上有没有效”。所以“道”的第一层要解决的是:你凭什么相信某类交易模式能赚钱?我把答案归纳成两类,你可以对号入座。第一类叫“赚错误定价的钱”。市场在某些时候对某些资产给出了偏离内在价值的价格,你通过统计方法找出这种偏离并等待回归。这类策略的信仰是“市场长期有效但短期无效”,比如因子轮动、统计套利都属于这个范畴。第二类叫“赚风险补偿的钱”。你承担某种别人不愿意承担的风险,换取对应回报,比如趋势跟踪本质上是承认“市场会出现剧烈单边行情”,你靠忍受回撤去捕获尾部收益。这和买保险的逻辑相反——你像是那个卖保险的,平时收保费(扛浮亏),遇到大行情时赔付一次大的(吃到大趋势)。两类钱都有人长期赚到,但一个人很难同时做好两类。因为第一类要求你频繁交易、严格对冲,第二类要求你忍受长期回撤、敢下重注。如果一个策略连自己属于哪类都说不清,那回测再漂亮也大概率是巧合。1.2 常见的“道”之扭曲:指标崇拜、回测宗教、完美主义十几年前我刚入行时,踩过最典型的坑就是“指标拼盘”。把MACD、KDJ、均线、布林带全叠到一起,金叉共振就买入,死叉共振就卖出。回测跑出来曲线相当好看,实盘一上就开始亏钱。现在回头看,问题根本不在指标选得不好,而是我说不出这套系统到底在捕捉什么市场规律——均线捕捉趋势,KDJ捕捉超买超卖,两者逻辑互相矛盾,我只是在数据里偶然找到了一组自洽的参数,而自洽并不等于有效。类似的问题还有“回测宗教”。有些人把历史回测当成赚钱预言,年化收益调得越高越兴奋,完全忽略样本外验证、参数敏感性这些基本操作。更有甚者执着于寻找“胜率90%”的系统,仿佛亏钱是可耻的。但只要是概率游戏,胜率根本不重要,重要的是赔率和期望值,你见过哪个赌场是靠高胜率赚钱的?赌场靠的是每局微弱但稳定的正期望,量化的“道”也是这个意思:接受单笔亏损,追求大样本下的稳定正期望。我后来给自己定了一条检查标准:如果我不能用三句话讲清楚一个策略“到底赚的什么钱、在什么条件下会失效、最大亏损可能有多大”,我就不会让它上实盘。这三句话,本质上就是你的交易之“道”。1.3 道的落地方法:写一份属于你的交易信仰说明书很多人觉得这些太虚,不如直接告诉我要买什么。但恰恰是这部分思考,决定了后面所有工作的方向。我的建议非常具体:动笔之前,先写一份500字的《交易理念说明书》,回答四个问题。第一,你相信这个市场有效还是无效,在哪些环节无效?第二,你要赚两类钱中的哪一种,或者以哪个为主?第三,你能坦然接受的单笔亏损、连续亏损和最大回撤分别是多少?第四,你对年化收益的预期是多少,这个预期和你的资金量、时间精力匹配吗?这四个问题不写清楚,后面选策略、定参数、做风控全都是悬浮的。我帮朋友做策略体检时,第一件事就是问他要这份文档,没有的话先回去写完再跑代码,不是我在故意刁难,而是没有“道”的量化系统,跑得越快,毁得越快。2. 法:把“怎么赚”和“怎么活下来”写成不可违反的规则2.1 先划定战场:你适合哪类策略“法”的第一件事是制定方法论,也就是明确你的策略版图。A股常见的个人量化策略,大致可以分成下面四种,各自的赚钱逻辑、时间尺度和死法完全不同。策略类型赚什么钱时间尺度核心依赖常见死法日线趋势跟踪风险补偿,捕获单边行情几天到几周趋势持续性震荡市反复止损多因子选股错误定价,因子暴露溢价几周到几月因子有效性因子拥挤和失效统计套利价差偏离回归日内到几天相关性和均值回归价差不回归、流动性枯竭事件驱动确定性事件带来重估事件前后事件兑现概率黑天鹅、规则变化对个人交易者而言,我的建议是优先考虑日线级别的趋势策略和低频多因子组合,理由很实际:高频交易拼的是低延迟、机房位置、硬件投入和团队规模,个人在这些维度上几乎没有任何相对优势。这不是泼冷水,而是我见过太多人兴致勃勃冲进高频然后被佣金和滑点吃掉的案例。低频策略虽然信号少,但你有充足的时间做决策验证和风控复核,这是个人量化者仅存的阵地之一。2.2 资金管理是法的骨架:单笔风险和总敞口算法规则层面的第二块是资金管理。很多新手把仓位当成“感觉”,行情好就多买,被套了就扛一扛。但职业化的做法是:每一笔交易开仓之前,先算清楚如果错了你会亏多少,这个亏损是否在你可以承受的范围之内。我常用的方法是固定分数风险法,核心原则是“以损定量,而不是以仓定量”。举个例子:账户权益10万元,单笔风险设定为账户权益的1%,也就是1000元。如果某个标的的计划止损距离是2元,那么可买入数量就是1000元除以2元,等于500股。这里的关键在于头寸规模由“止损距离”决定,而不是由“我想买多少”决定。止损距离越近,仓位自然越重,反之亦然,账户风险始终保持恒定。def calc_position(equity, entry_price, stop_price, risk_pct=0.01): risk_amount = equity * risk_pct stop_distance = abs(entry_price - stop_price) if stop_distance == 0: return 0 shares = risk_amount / stop_distance # 再按整手、资金上限做约束 max_by_money = equity * 0.2 // entry_price return int(min(shares, max_by_money))组合层面的总敞口也要有约束。比如单行业暴露不超过权益的30%,单标的暴露不超过20%,相关性高的标的合并计算敞口。另一条硬规则是回撤熔断:账户回撤达到15%时,所有仓位减半;回撤达到25%时,清空全部仓位并停止新开仓至少一周。这套数字只是示例,真正合适的数值取决于你的风险偏好,但“熔断后再复盘”这件事必须写死在规则里,否则亏损到一定程度时,你的情绪一定会接管决策,促使你加码赌一把回本,那是万劫不复的开端。2.3 风控规则:止损、停摆、黑名单风控是“法”的核心,我的经验是宁可多设几条不可执行的规则,也不要只留一条“及时止损”的座右铭。你得把风控做成一串可以逐项打钩的检查项。止损方面,每笔交易进场前必须确定一个价格止损位,通常是技术位或波动率倍数。一个简单实用的设定是用ATR(平均真实波幅)来锚定:止损位设在进场价减去2倍ATR,因为ATR能跟随标的当前波动水平动态调整,比固定百分比更适应不同个股的脾气。停摆方面,前面说的回撤熔断要配合时间条件:触发停摆后至少空仓观察一周,不允许当日重新入场。黑名单方面,我一般会拉一个“不交易名单”,包括流动性差的标的、临近财报或有重大消息但看不清影响的标的、以及被异常放量的游资恶炒标的。黑名单的意义在于,把容易出幺蛾子的交易标的提前挡在门外,而不是等盘中情绪上头了再现场判断。2.4 从规则到协议:每条法都要变成可执行的检查清单再好的规则,如果不落成纸面文字,遇到极端行情时大脑会直接把它忽略掉。所以“法”的最后一步是把上面的原则转成一份可复核的日常协议。我的做法是设计一张三栏表,每天开盘前、盘中、收盘后各执行一遍。盘前检查内容包括:今日是否有账户层面风险警报、隔夜消息面是否有黑名单事件、当前各策略运行条件是否满足。盘中主要监控止损和敞口上限有没有被触及。盘后则记录当日交易日志、对比预期信号与实际成交的偏差、更新组合敞口报表。落盘的好处是出了问题可以回溯,也可以在做策略月度复盘时拿出数据来讨论,而不是靠“我印象里最近亏了不少”这种模糊感觉。3. 术:从数据到信号的六类实操细节,含踩坑实录3.1 数据处理中三个毁掉策略的坑:前视偏差、幸存者偏差、复权选择“术”这一层是我花时间最多的地方,因为大部分回测结果和实盘表现的巨大差异,根源都在数据处理上。第一个坑是前视偏差,也就是无意中用到了当时根本无法获得的信息。我有一次写基本面选股因子时,直接把“当季财报净利润”作为一个字段塞进了信号计算,回测表现好得惊人。后来复盘才发现,财报的披露日期比报告期截止日晚了好几个星期,我用截止日当天的价格和“还没公布”的财报生成信号,实盘根本不可能提前知道。结果是重写数据管道,把所有基本面字段都对齐到“实际披露日期”之后才敢用。第二个坑是幸存者偏差。早期做全市场选股回测时,我直接取当前交易状态下的股票列表,把过去退市的股票全部漏掉了。这等于让策略在一个“永远不会退市”的完美世界里做统计,高估是必然的。后来改成每次回测都用那个历史时点的成分股全集,包括后来退市和ST的,结论才回归现实。第三个坑是复权方式。前复权和后复权对均线系统、动量因子的计算都有影响,尤其是长期回测中除权除息频繁的个股。我的建议是:因子计算尽量用后复权价格,买卖收益率计算再用考虑现金分红的总收益口径,把两种口径分开,避免混用。3.2 因子构造:少而可靠优于多而杂乱很多人一谈到多因子,就恨不得往模型里塞几百个因子,好像特征越多越高级。真实的经验恰恰相反:大部分因子之间高度相关,堆在一起不仅没带来独立的预测能力,反而让模型变成了几个底层因子的线性组合。我习惯的流程是这样的:第一步对原始特征做去极值和标准化,把不同量纲拉齐;第二步做市值和行业中性化处理,排除因子本身只是暴露了市值大小或行业风格的情况;第三步看因子间相关性矩阵,皮尔逊相关系数超过0.7的只保留逻辑更清晰的一个;第四步单因子测试,按十分位分组看收益单调性。整套流程做完,真正能留下来的可靠因子往往只有五到八个。有一段时间我同时测了上百个特征,最后发现模型的绝大部分表现来自三个底层逻辑:估值修复、盈利超预期、短期动量。知道这一点之后,模型表达反而干净多了,也更容易解释。3.3 回测中的参数敏感性与过拟合判别过拟合是策略研发期最隐蔽的杀手。判断一套策略到底是捕捉到了真实规律,还是恰好拟合了历史噪声,我有一套简单的压力测试方法。先看参数扰动。把某个核心参数从最优值上下浮动20%,观察回测绩效的变化幅度。如果参数从30改到28,年化收益就从30%掉到5%,那这套策略的运行并不稳健,它在依赖几个偶然凑对的数字。再看分时段稳定性。把回测区间切成三段,分别看每个子区间的表现,如果策略只在某一段特定行情里赚钱,其他时段全是回撤,那它更像市场状态拟合而不是交易逻辑。最后是样本外验证。策略研发期的最后20%数据不要碰,等全部开发结束再用它做一次终极验证,如果样本外绩效和样本内差距巨大,请回到设计阶段重新思考。我早期做过一个动量策略,全时段回测看起来完美,但分时段一看,利润几乎全部来自某一段单边上涨行情。换成震荡市后,策略被来回收割,连续止损。后来我想明白了一件事:这不是策略,这是对那段上涨行情的记忆。3.4 执行环节的术:成本模型和订单拆分策略信号做得再好,执行层面如果忽略交易成本,竹篮打水一场空。A股交易成本包括佣金、卖出时产生的税费、以及最容易被低估的冲击成本和滑点。冲击成本是指大单买入时把价格推高、大单卖出时把价格砸低的部分,这在流动性差的中小盘股上尤其明显。我给自己定的标准是:回测中把交易成本按常规标准的二到三倍来估算,如果这样的成本假设下策略仍然盈利,才考虑进入实盘验证。很多看起来高换手的策略,算上真实的冲击成本后,毛利润直接变成负数。订单拆分方面,实盘下单时不应该把计划仓位一次性砸出去,尤其是单笔超过一定金额时。我通常把订单拆成三到五份,每隔一段时间或根据盘口流动分批执行,减少对市场价格的瞬间影响。虽然简单市价单执行速度快,但代价可能是一根长上影线,反而让成交均价变得很差。4. 器:一套不过度烧钱的量化兵器库,以及工具边界的清醒认识4.1 数据源选择和数据对账“器”是指你使用的工具和基础设施,首先绕不开的是数据。市面上的数据服务大体分两类:免费的开源数据社区和商业收费数据终端。免费数据的优点是门槛低、文档多,缺点是字段完整性、更新时效和数据质量偶尔有坑,尤其是财务数据的对齐。收费数据则更稳定,但年费不便宜。我的建议是:核心回测至少用两份独立数据源交叉验证。具体做法是同一个因子分别用两套数据算,对比结果差异。如果两套数据算出来的因子值偏差很大,说明数据处理逻辑或复权口径很可能有问题。有一次我计算某财务因子时,A源和B源的净利润数值差异在10%以上,后来发现是“归母净利润”和“净利润”两个口径的差别,导致信号排序不同。数据对齐这件事,值得在前期多花时间,因为它决定了后续所有工作的地基。4.2 回测引擎:用框架之前先知道它在哪做简化回测框架是另一个容易让人迷信的环节。主流的开源回测框架大体分两类:向量化回测和事件驱动回测。向量化回测适合因子研究和策略快速验证,计算效率高,但撮合逻辑简化较多,很难精细处理涨跌停无法成交、停牌、分批成交这些现实情况。事件驱动回测则更贴近真实交易流程——它会按时间顺序逐笔处理信号、订单、成交和风控,因此更慢但更真实。我的建议是:研究阶段用向量化回测快速筛选思路,进入实盘前再跑一遍事件驱动回测,重点观察两类回测结果是否一致。如果差异巨大,大概率是某个现实约束被你忽略了。无论用哪个框架,都要先读清楚它的撮合假设、手续费算法、涨跌停处理方式,否则框架计算结果和真实结果之间的沟壑,早晚会以亏损的形式出现在你的账户里。4.3 从模拟到实盘的过渡路径工具链里最有价值的一条经验:别一步跨进全自动实盘。我推荐一条渐进路线——先做半自动:策略负责产生信号,人工负责确认和下单。这个阶段要坚持至少一两个月,记录每一笔“信号价”和“实际成交价”的差异,积累你自己真实的滑点分布。滑点不是均匀分布的,它和流动性、波动率、你的下单时段都有关系,只有拿到自己的统计数据,才能校准回测里的成本假设。有了稳定的滑点统计之后再考虑全自动。全自动运行的最低要求包括:独立的行情数据源、独立的程序化下单接口、自动止损止盈监控、日志系统、异常报警和紧急手动熔断开关。这几样缺一样都别上。我认识不止一个开发者因为漏了报警而错过止损,等发现的时候仓位已经被动躺了很久。4.4 算力与网络够用就行关于硬件,我想给你省点钱:个人量化需要的算力远比想象中低。如果你做的是日线级别的多因子或趋势策略,一台普通的云服务器、一个数据库、每天收盘后跑一次批量计算,绰绰有余。我见过有人一上来就配双路CPU加四张显卡,最后95%的时间在吃灰。判断是否需要升级硬件的标准只有一个:你的回测任务是否已经成为迭代策略的瓶颈。如果是,优先考虑优化代码逻辑,然后再考虑加配置。高频低延迟那些动辄要求机房托管和专用网络的事,对个人量化者来说基本属于另一个世界,不用在这个维度上焦虑。5. 势:A股市场的结构性现实,决定了哪套策略有容错空间5.1 市场生态的现实:从散户主导到机构化竞争最后一层是“势”,也就是客观环境。很多人做量化时完全不看行情的大环境,关起门来研究参数,实盘以后才发现自己是在和整个市场生态对抗。A股这些年最大的变化之一,是市场参与结构的变化。早期散户交易占绝对主导,行情容易走极端,技术分析和情绪指标有效性很高。随着机构投资者和量化交易占比提升,很多简单的统计规律开始失效,原因是使用方法的人太多,机会被迅速抹平。对个人量化者来说,这并不意味着没有机会,而是要注意,你的相对优势已经不是“比机构知道更多”,而是“决策链路短、没有排名压力、可以耐心等待低竞争的机会”。在策略风格上,这种生态环境更适合低频、深度、带着基本面逻辑的挖掘,而不是拼速度、拼信息扩散的短线玩法。5.2 交易制度的硬约束:T+1、涨跌停、交易成本A股还有一套必须刻进回测的硬约束:交易制度。如果你在A股做量化,却用美股那种可以做日内回转、无涨跌停限制的框架去设计策略,结果会非常失真。T+1制度意味着当天买入的股票当天不能卖出,所以纯日内短线策略很难实现完整的风控闭环,买入后一旦逻辑快速变化,只能等到次日处理。涨跌停制度意味着极端行情下,你很可能面临“想买买不进、想卖卖不掉”的情况,回测时必须把涨停无法买入、跌停无法卖出作为一种约束条件加入撮合逻辑。交易成本方面,频繁换手会显著侵蚀利润,这要求策略的预期毛利必须足够高才能承受对冲成本和交易成本。这些制度约束,本质上划定了个人量化在A股的能力边界——策略设计不能和制度对着干,在边界之内寻找空间才是正道。5.3 因子拥挤:一个公开的秘密不再是秘密“势”还体现在策略生命周期的变化上。任何一个因子,从发现到被广泛使用,超额收益大概率会逐渐衰减,这就是因子拥挤。原因不复杂:当一个规律被越来越多的人知道后,套利资金会快速抹平价差,直到机会消失。这和集市上人人都知道的消息一样,传得越多,越不值钱。应对因子拥挤,没有办法一劳永逸,只有持续迭代。我的习惯是给每个因子标注“逻辑寿命”:依据市场结构变化的因子更新迭代,依据统计巧合的因子随时准备弃用。提升因子的基本面逻辑约束是另一个办法,纯粹统计挖掘的因子容易失效,但有清晰经济含义的因子,即便收益下降,也不会突然变成负的。5.4 顺势而为:不同市场状态下的策略启停“势”的最后一个应用是策略启停。不同的策略适应不同的市场状态:趋势策略在单边行情里如鱼得水,在震荡行情里会被来回打脸;低估值轮动策略在存量博弈环境里表现尚可,但在价值持续重估的趋势行情里可能跑输。我现在每个策略都会配一个“运行条件”:用一系列市场指标判断当前更接近哪种状态,条件不满足就让对应策略空仓等待。这相当于在传统买卖信号之上加了一层战术开关,目的是避开“用趋势策略打震荡市”这种错配。空仓不是无能,而是对“势”的尊重。不要试图让一套策略在所有行情里都赚钱,那只会让它成为所有行情的牺牲品。最后再分享一条个人体会。这套“道法术器势”框架用到今天,给我最大的价值不是保证了收益,而是每次实盘出问题时,我能快速定位是哪一层出了故障。连续亏损了,先查“道”——是不是底层信仰本来就是错的;再查“法”——止损和风控规则是否被严格执行;然后才查“术”和“器”有没有疏漏。很多人的困惑在于把所有问题都归咎于“策略不够好”,然后陷入调参循环,其实问题的根源往往在低层。如果你准备认真做量化,我的建议是从今晚开始写那500字的交易理念说明书,然后把它贴在显示器边上。等你的“道”“法”“器”“术”“势”五层都能在五句话之内复述出来,再考虑碰实盘也不迟。这套框架不会让你暴富,但它能让你在这个市场里活得更久,而久,本身就是量化交易里最重要的复利来源。