然而,量化交易里最让人难以面对的时刻,往往不是策略亏损,而是策略在回测中表现得过于完美。因为一条漂亮的净值曲线,未必代表策略真正拥有持续获取收益的能力,它也可能只是数据处理、成交假设和参数调整共同编织出的幻觉。
我们在研究量化策略回测指标时,真正需要问的并不是“收益率有多高”,而是:这些收益是否在当时真的有机会被交易系统获得?回测所使用的信息,在交易发生的那个时点是否已经存在?成交价格、股票池、交易成本和流动性,是否与现实保持了足够接近的边界?
回测不是历史的录像,而是一场带有假设的重演。假设稍微宽松一些,结果就可能从谨慎变得慷慨;而当这些慷慨的假设被带进实盘,市场往往会把它们一一收回。
先看成交价格:收盘价不是一个随时可以拿到的价格
在很多回测报告里,我们会看到这样的交易逻辑:当天收盘出现信号,于是策略按照当天的收盘价买入或卖出。代码通常只有一行,甚至看起来没有任何问题,但这恰恰是最容易被忽略的地方。
收盘价是在交易结束后才最终确定的。对于采用日线数据的策略来说,如果信号依赖当天的收盘价,那么在收盘价确定之前,策略并不知道这个信号是否成立;而收盘价一旦确定,交易通道也已经关闭。此时,系统如果仍然把当天收盘价当作成交价,就相当于同时拥有了两个能力:
一方面,提前知道收盘会落在哪里;另一方面,在市场已经结束交易之后,仍然能够按照这个价格完成成交。
这不是普通的误差,而是交易时序被悄悄改变了。
在中国股票市场中,日线策略通常还要面对交易制度带来的时间差。当天收盘形成的信号,现实中往往只能在下一个交易日开盘或盘中执行,而不是回到当天收盘的位置完成交易。这个差异对于低换手、长周期策略有时并不致命,但对于依赖短期价格变化的策略,影响可能非常明显。
交易时序应该怎样对齐
一套更接近现实的回测,至少要把“信号形成”和“订单成交”拆成两个时间点。
例如:
1. 使用交易日当天的开盘价、最高价、最低价和收盘价计算信号。
2. 信号在当天收盘后才被确认。
3. 订单放到下一个交易日执行。
4. 成交价格根据开盘价、盘中价格或预设的成交模型计算。
5. 如果市场没有足够流动性,订单还需要允许部分成交、延迟成交,甚至无法成交。
如果策略在盘中运行,情况则不同。系统可以使用当时已经完成的分钟线或逐笔数据产生信号,但不能使用尚未结束的那根K线的最终收盘价,更不能在价格形成之前提前引用最高价和最低价。
这类错误之所以隐蔽,是因为回测代码通常不会报错。程序会顺利运行,净值会正常增长,指标也能被完整计算出来。真正暴露问题的,往往是把执行时间整体向后移动一个交易日之后,策略收益突然明显下降,或者交易次数、胜率和回撤结构发生了变化。
回测中最昂贵的错误,常常不是公式写错,而是把“事后知道”误当成了“当时能够交易”。
怎样判断收盘成交是否扭曲了结果
可以做几组简单但有解释力的对照。
第一组,把所有收盘成交改成次日开盘成交。不要急着为开盘设置一个特别有利的价格,先观察策略的收益、胜率和换手率变化。
第二组,在次日开盘成交的基础上加入开盘跳空。对于隔夜持仓较多的趋势策略,开盘价和前一日收盘价之间的差异可能会直接改变单笔交易的盈亏。
第三组,将成交价从单一价格改成区间或随机滑点模型,例如在开盘价附近按照一定范围生成成交价格,再重复多次回测,观察策略是否仍然保持相近的结果。
第四组,检查信号本身是否使用了未来数据。很多“收盘价成交”并不是孤立问题,它常常与指标计算中的错位、复权方式和调仓日期混在一起。一个看似只是执行价格的问题,最后可能牵连整条数据链路。
如果策略只有在收盘价成交时才显得优秀,而改为次日开盘后就失去大部分收益,那么我们面对的也许不是一个稳定的交易系统,而是一种对时间穿越高度敏感的历史拟合。
幸存者偏差:回测里的股票,可能比当年的股票更健康
股票回测中还有一种更安静的偏差。它不一定让某一笔交易看起来异常,却会改变整个投资世界的组成。
许多数据平台默认提供当前仍然存在的股票列表,或者直接使用今天的指数成分股、行业成分股来回溯历史。这样做非常方便:股票代码整齐,数据连续,缺失值少,策略运行也更稳定。但如果我们用今天的成分股去代表过去的市场,就会自然地排除那些已经退市、长期停牌、经营恶化,或者后来被剔除出指数的公司。
留下来的,往往是经历过筛选之后仍然存在的公司。
这就是幸存者偏差。
它并不意味着所有回测收益都会被同样程度地夸大,具体影响取决于股票池、时间区间和策略类型。已有研究表明,在股票回测中,幸存者偏差可能使收益率每年虚高约1%至3%。对于短期结果而言,这个比例看起来似乎不算惊人;但当它累积多年,再叠加低估的交易成本、理想化成交和过拟合,最终的净值差距就可能变得非常遥远。
当前成分股,不等于历史成分股
以指数增强策略为例,如果回测从始至终只使用当前指数成分股,那么系统实际上知道哪些股票最终留在了指数里。那些曾经进入指数、后来被剔除的股票可能被完全删除;曾经存在但后来退市的股票,则更容易从数据集中消失。
这样生成的股票池,看起来像是历史市场,实际上更接近“站在今天回望过去时,挑出的幸存者”。
更严谨的做法,是使用带有历史时点信息的成分股数据。系统在每一个调仓日,只能使用当时真实存在、并且当时属于股票池的标的。股票进入或退出样本,都应该按照当时的公告和生效日期处理,而不是按照今天的数据倒推。
这会让回测变得麻烦,数据清洗也不再那么整齐,但这种麻烦本身就是市场现实的一部分。
退市股票不应被轻易删除
一只股票退市,并不意味着它在退市之前的历史交易可以从回测中抹去。相反,退市前的长期下跌、停牌、流动性恶化和无法卖出,往往正是某些策略必须面对的风险。
如果数据集只保留到“最后一个正常交易日”,却没有处理后续停牌和退市过程,系统可能会默认投资者在最有利的时点完成了退出。对于持有期较长、依赖定期调仓的策略,这种处理会让亏损样本变得不完整。
我们需要特别留意几类情况:
- 股票被暂停上市或长期停牌后,回测系统是否仍然保留持仓;
- 股票进入退市整理期后,是否允许按照理想价格卖出;
- 股票从指数或行业池中剔除时,调仓是否按照真实日期发生;
- 新上市股票何时进入样本,是否被过早纳入;
- 数据库中的缺失值,是代表没有交易,还是被程序直接删除。
这些细节不会像一条错误公式那样立刻跳出来,却会在多年回测中慢慢改变结果的形状。
一个只记录“后来留下什么”的数据库,很难准确回答“当时我们能够买到什么”。
复权数据与未来函数:价格被修正之后,历史也可能被悄悄改写
分红、送股和拆分会改变股票的价格表现。为了让历史价格具备连续性,量化研究中经常使用前复权或后复权数据。复权本身并不是问题,真正需要留心的是:复权价格是如何生成的,以及策略在什么时间点使用了这些信息。
前复权价格会根据未来发生的分红、送转等事件,对历史价格进行调整。这样处理后,历史价格曲线更适合观察长期收益,也便于计算技术指标,但它有一个容易被忽略的特征:随着未来分红和送转事件发生,过去的价格可能会被重新改变。
如果我们直接用最终版本的前复权价格回测过去,就可能让策略在历史某一天使用了当时尚未公布、甚至尚未发生的分红送转信息。这种信息穿越通常不会以“未来函数”的形式出现在代码中,而是藏在数据文件已经处理好的价格里。
例如,一家公司在多年之后实施了分红,数据供应商根据这次分红重新调整了更早时期的价格。回测系统如果拿到的是最终前复权序列,那么早期的价格已经带着后来事件留下的痕迹。策略虽然没有直接读取未来的分红字段,却间接使用了未来信息。
前复权并非完全不能使用
这里需要保持一点分寸。不能简单地说,前复权价格在所有量化回测中都不能使用。对于某些长期趋势分析、技术指标计算和收益展示,复权数据有其合理用途。问题在于,研究者必须明确区分不同场景:
- 如果只是观察长期价格走势,前复权可以帮助消除分红送转造成的价格断层;
- 如果要模拟历史时点的真实交易,数据应当按照当时可获得的信息进行对齐;
- 如果策略使用分红收益,就需要明确分红何时除权、何时到账,以及投资者是否具备再投资条件;
- 如果策略依赖价格突破、均线交叉或波动率变化,复权方式可能直接改变信号出现的日期。
在实际研究中,后复权价格常用于保持某个历史价格基准,前复权价格则更常用于保持当前价格连续性。两者没有简单的优劣之分,关键在于它们是否与策略的交易逻辑匹配。
更稳妥的方式,是把价格行为和公司行为拆开处理:价格用于生成信号,分红送转作为独立事件进入收益计算,同时保存事件的公告日、生效日和到账时间。这样虽然系统设计更复杂,却能减少“价格已经知道未来”的风险。
数据对齐,比指标公式更值得反复审视
很多人在搭建策略时,会花大量时间寻找更好的均线周期、波动率窗口或因子组合,却很少检查数据的时间戳是否统一。实际上,一列数据只要错位一天,结果就可能产生系统性偏差。
需要逐项确认的,不只是交易日,还包括:
- 行情数据的时间点,是开盘、收盘还是数据发布时刻;
- 财务数据使用的是报告期、公告日还是数据库入库日;
- 指数成分股调整按照公告日还是生效日处理;
- 分红信息是在登记日、除权除息日还是到账日进入系统;
- 基本面因子是否引用了当时尚未披露的财务报表。
对于量化系统来说,“知道某件事”与“在什么时候知道某件事”同样重要。信息只要提前了一天,哪怕没有任何主观恶意,也足以让回测出现不属于现实的优势。
交易成本:换手率越高,纸面收益越容易变得轻盈
有些策略在回测中看起来非常灵活:每天都能捕捉到小幅波动,胜率不算夸张,但交易次数很多,利润像细小水流一样持续汇入净值曲线。
这类策略最需要面对的,往往不是信号本身,而是交易摩擦。
佣金、印花税、过户费、买卖价差和滑点,都会从每一次交易中拿走一部分收益。单笔看起来很小,经过高频交易和长期累积之后,可能成为策略生死的边界。
尤其是高换手策略,它需要的不是“手续费大概估一个数”,而是尽可能还原真实交易中的成本结构。买入和卖出的费用可能不同,市场制度也会发生变化,不同券商、不同资金规模和不同标的之间,实际费率并不完全一致。
为什么一个看似合理的成本参数仍然可能失真
假设回测系统给每笔交易设置了固定手续费,但没有加入买卖价差,策略成交价仍然使用中间价或收盘价,那么交易成本仍然可能被低估。
又或者,系统使用一个全市场统一的滑点比例,却没有区分大盘股、小盘股、低价股和成交稀疏的股票。对于流动性充足的标的,这个滑点或许偏保守;对于成交量较小、盘口较薄的标的,它可能远远不够。
交易成本至少可以拆成几层:
| 成本来源 | 回测中常见的简化 | 现实中容易出现的差异 |
|---|---|---|
| 佣金 | 按固定比例计算 | 可能存在最低收费,买卖费率也可能不同 |
| 印花税 | 统一计入卖出 | 税费政策可能变化,且只影响特定方向的交易 |
| 过户费 | 直接忽略或使用固定值 | 与市场、品种和制度有关 |
| 买卖价差 | 以收盘价或中间价成交 | 实际成交可能跨越盘口,价差随流动性变化 |
| 滑点 | 设置一个固定百分比 | 会受到订单规模、波动率、时段和成交量影响 |
| 冲击成本 | 通常不纳入 | 大额订单可能推动价格向不利方向移动 |
当策略的平均单笔收益只有几个基点时,任何一项成本估计偏差都可能改变最终结论。这里的“基点”并不需要被理解成一个抽象的金融术语:如果一次交易本来只赚很小的一点价格差,那么买卖之间多付出的那一点点成本,就可能让盈利变成亏损。
滑点不是一个固定数字,而是一种市场状态
固定滑点模型容易使用,却不一定足够真实。滑点通常会随以下因素变化:
- 市场波动越剧烈,报价更新越快,实际成交偏离信号价格的幅度可能越大;
- 订单规模相对于该股票成交量越大,冲击成本越明显;
- 开盘和收盘附近的订单集中,成交环境与盘中并不相同;
- 价格快速上涨时买单更容易向上追价,快速下跌时卖单更容易向下成交;
- 停牌、临时停牌和流动性枯竭会让理论上的成交变成无法成交。
如果策略的收益依赖大量小额交易,就不能只看加入成本后的年化收益,还应当观察收益对成本参数的敏感度。可以把手续费和滑点分别提高,再运行多组回测,看看净值是否依旧保持基本结构。
一个能够承受成本变化的策略,通常比一个只在单一参数下表现惊艳的策略更值得继续研究。它未必最耀眼,却有更清楚的边界。
涨跌停与流动性:信号出现,不等于订单一定成交
在回测中,最容易被忽略的一种“成交”是根本不存在的成交。
当股票涨停时,策略可能生成买入信号,但现实中并不一定能够买到;当股票跌停时,策略可能生成卖出信号,但卖单也可能长时间排队,无法按照理想价格离场。若回测系统只要出现信号就默认完成交易,净值自然会显得干净许多。
这对于事件驱动策略、短期反转策略和小盘股策略尤其敏感。某些策略的历史收益,可能正是建立在“涨停当天可以买入、跌停当天可以卖出”这种理想化假设上。
回测需要描述订单,而不只是描述信号
一个成熟的交易模拟,不应只记录“今天买入”或“今天卖出”,还应当回答:
- 信号出现时,标的是否处于涨停或跌停状态;
- 当天是否有足够成交量支持订单执行;
- 订单是立即成交,还是进入排队;
- 未成交部分如何处理;
- 订单有效期是当天,还是可以延续到下一个交易日;
- 停牌期间的持仓如何计价;
- 复牌后出现大幅跳空时,系统如何计算可成交价格。
如果这些问题没有进入回测模型,策略得到的并不是完整的交易结果,而只是信号结果。
信号研究当然有价值,但它与可执行策略之间仍然隔着一段距离。我们可以先研究某个因子的方向是否有效,再研究在真实限制下能够实现多少收益。不能把前一个阶段的结果,直接当成后一个阶段的承诺。
市场从来不会因为系统产生了信号,就替我们准备好对应数量的成交。
流动性还会带来另一个问题:回测里买入的金额可能很小,所以价格似乎不会受到影响;但一旦实盘资金规模扩大,订单就不再是市场中的轻微扰动。尤其在成交量较低的标的中,回测收益可能依赖一个并不存在的“无限深度盘口”。
因此,除了看策略收益,还应该估算订单金额相对于标的平均成交额的比例。交易量限制可以设置成更接近现实的规则,例如单笔订单不超过过去一段时间平均成交量的一定比例。这个比例并不需要被当成适用于所有市场的固定答案,但它能提醒我们:资金容量也是策略的一部分。
参数优化的边界:从发现规律到记住历史
当一个策略表现不够理想时,我们往往会自然地调整参数。均线周期换一组,止盈止损范围改一改,因子权重重新分配,调仓频率也可以尝试不同组合。随着优化次数增加,回测结果通常会越来越漂亮。
这正是过拟合开始发生的地方。
过拟合并不是“参数调整”本身有问题,而是策略逐渐从寻找可重复的市场规律,变成了记住过去价格路径中的特殊细节。它在历史数据上能够解释几乎每一次波动,却未必能够面对下一段尚未出现的行情。
假设我们尝试了几十组均线周期,最后选择历史收益最高的一组。这个结果表面上说明“最佳参数”被找到了,实际上还应该问:在这么多次尝试里,出现一组看起来特别好的参数,本来是不是就有一定概率?
如果我们不断筛选,总能从历史中挑出一条漂亮曲线。真正困难的部分,是证明这条曲线并非只是筛选过程的产物。
训练集和测试集不能只做形式上的切分
比较基本的做法,是把历史数据划分为训练区间和测试区间。参数只允许在训练区间内调整,测试区间则作为未参与优化的样本,用来观察策略是否仍然有效。
但简单的一次切分仍可能不够。市场环境会变化,牛市、熊市、震荡市、低波动和高波动阶段的结构并不一样。如果参数只在某一种行情中表现突出,测试区间恰好与训练区间处于相似环境,结果仍然可能过于乐观。
因此,我们更关心的不是某个参数在一段历史里的最高收益,而是:
- 参数在相邻时间窗口中是否相对稳定;
- 轻微改变参数后,收益曲线是否仍保留基本形状;
- 不同市场阶段下,策略的亏损方式是否可理解;
- 换一组合理的交易成本后,结论是否仍然成立;
- 换一个相关但不完全相同的股票池后,结果是否还能维持;
- 经过样本外测试和滚动测试后,策略是否仍有可解释的优势。
如果均线周期从19改成20,策略就从大幅盈利变成持续亏损,那么这组参数很可能承载了过多的历史偶然性。相反,如果一个合理范围内的参数变化只带来温和差异,策略通常拥有更宽的容错空间。
过拟合不仅来自参数,也来自研究过程
我们经常把过拟合理解为“参数太多”,但它也可能来自更隐蔽的选择偏差。
例如,我们先看了全部历史结果,再决定哪一段时间作为测试集;看到某个因子在某些行业表现很好,于是只选择这些行业;尝试过许多止损规则,只展示最终最好的一套;或者在策略失效后不断修改逻辑,直到回测重新变得漂亮。
这些做法并不一定带有欺骗意图。很多时候,我们只是希望把研究做得更完整,或者不愿意放弃已经投入大量时间的策略。但沉没成本会让我们不断给旧模型寻找新的解释,确认偏差则会让支持策略的证据显得格外醒目。
量化研究需要给自己留出一块“不被解释”的空间。不是每个亏损都必须被修正,不是每个回撤都意味着规则需要重新设计。有时,保留原始版本,记录每次修改的原因,比不断优化出一条更好的曲线更接近真实研究。
一张回测净值曲线,无法替我们完成风险理解
收益率、夏普比率、最大回撤、胜率和盈亏比,是回测报告中常见的指标。但指标本身不会告诉我们策略为什么赚钱,也不会自动识别数据处理中的未来信息。
一个策略的年化收益率很高,可能是因为少数几笔极端盈利交易;最大回撤很小,可能是因为回测期没有覆盖真正不利的行情;胜率很高,可能是因为亏损交易被停牌、退市或未成交规则从样本中排除了。
所以,回测指标需要放回交易过程里理解。
收益率之外,还要看收益是如何形成的
可以从几个方向拆解策略的结果:
1. 收益来源是否集中。
如果大部分收益来自少数几只股票、少数几个月份或少数几笔交易,那么策略对偶然事件的依赖可能很高。
2. 不同市场阶段是否有清晰表现。
牛市中赚钱并不难,真正值得观察的是趋势反转、连续下跌、波动放大和成交萎缩时,策略如何承受压力。
3. 亏损是否具有可解释性。
一个策略可以亏损,但亏损最好与它的逻辑相一致。趋势策略在震荡中反复止损,反转策略在单边行情中承受压力,这些都比无法解释的随机崩塌更容易管理。
4. 换手率是否支撑得住。
回测收益越依赖频繁调仓,就越需要关注成本、容量和成交约束。
5. 净值曲线是否对参数敏感。
轻微改变参数、时间区间和成本假设,结果就完全不同,说明系统的边界可能很窄。
6. 样本外结果是否仍然存在。
样本内的漂亮表现只能说明模型能够解释过去,不能单独证明它能够面对未来。
7. 回测过程是否可复现。
数据版本、股票池、交易规则、复权方式、手续费和滑点都应当被记录,否则即使结果看起来不错,也很难判断它究竟是由什么产生的。
这些指标并不是为了把策略审查变成一场令人疲惫的考试,而是帮助我们把“收益”重新还原成许多具体的交易决定。越能说清楚收益从哪里来,越不容易被一条平滑曲线牵着走。
七类陷阱,通常不是单独出现的
前面谈到的收盘价成交、幸存者偏差、复权未来函数、交易成本、滑点、涨跌停和过拟合,看起来是七个不同的问题,但在实际回测里,它们经常互相叠加。
一个使用当前成分股的策略,可能同时忽略退市股票;一个高换手策略,可能同时使用收盘价成交和固定滑点;一个经过大量参数优化的模型,可能恰好又建立在前复权数据之上。每个单项偏差看起来都不算巨大,叠加之后却会把策略推向一个现实中难以抵达的位置。
可以把这七类风险放在同一张表里,帮助我们理解它们分别改变了什么:
| 回测陷阱 | 被改变的现实条件 | 常见后果 |
|---|---|---|
| 收盘价成交 | 信号确认与订单执行的时间关系 | 提前获得理想成交价,收益被抬高 |
| 幸存者偏差 | 历史股票池的真实组成 | 亏损、退市和被剔除的样本被弱化 |
| 前复权未来信息 | 历史价格是否保持当时可知状态 | 指标和信号可能引用未来公司行为 |
| 忽略手续费 | 每笔交易的固定摩擦 | 高频策略的微小利润被虚化 |
| 低估滑点 | 订单与真实盘口的差异 | 实盘成交价格持续劣于回测假设 |
| 忽略涨跌停 | 信号与可执行性的关系 | 回测默认买得到、卖得出 |
| 过拟合 | 模型对历史细节的依赖程度 | 样本外或实盘中迅速失效 |
面对这些问题,我们不必一开始就追求一个极其复杂的模拟器。复杂并不天然等于真实,真正值得做的是先让关键假设显式化,再逐步增加市场约束。
可以从以下顺序开始:
- 先确认数据的时间顺序,确保信号不会使用未来信息;
- 再处理历史股票池,避免只使用今天仍然存在的标的;
- 将成交时间从信号时间中分离出来;
- 加入手续费、印花税、过户费和合理滑点;
- 对涨跌停、停牌和无成交情况作出明确处理;
- 使用样本外、滚动窗口和不同市场阶段进行测试;
- 保存每次参数和代码变更,避免只留下最终版本;
- 最后再讨论收益率、夏普比率和最大回撤是否足够理想。
这并不是一条能够保证策略盈利的路径。它所能做的,是让我们更清楚地知道:策略的表现究竟来自市场规律,还是来自模拟环境给出的额外宽容。
回测与实盘之间,需要一段不急于证明自己的时间
当回测结果很好时,我们很容易想要尽快验证它。可是,从历史数据直接跳到真实资金,中间缺少的不只是技术联调,还有一段观察策略在现实摩擦中的时间。
纸面交易、仿真运行和小规模实盘,能够帮助我们发现一些回测无法呈现的问题:行情接口是否延迟,订单是否按预期送达,撤单是否成功,开盘时能否成交,交易成本是否与估计接近,策略在连续信号下是否出现重复下单。
这些环节并不能证明策略未来一定有效,但它们能让系统从一条研究曲线,逐渐变成一个真正受到市场约束的运行流程。
我们也需要给策略设置清晰的边界,而不是只给它一个收益目标。比如,什么程度的滑点偏离会触发暂停研究,连续多少次无法成交需要重新评估,样本外表现与回测差异达到什么程度时应当停止扩大资金规模。这里的边界不是为了制造一种控制感,而是为了避免我们在情绪最强烈的时候,临时修改判断标准。
交易心理在这个阶段同样会参与进来。
当实盘结果低于回测,我们可能产生失望,开始怀疑是不是执行得还不够好;当偶尔获得超额收益,我们又可能把它解释为策略已经成熟。锚定效应会让我们不断拿现实收益与回测高点比较,沉没成本则会让我们难以放下已经投入许久的模型。
如果能够把回测结果看成一个区间,而不是一条必须兑现的承诺,心里会多一些空间。策略不是用来证明我们足够聪明的证据,它更像是一套关于市场的暂时假设,等待新的数据和真实交易来修正。
最后,留一点空间给“不知道”
我们当然希望找到稳定、清晰、可执行的量化策略,也希望回测能够尽可能接近实盘。但任何历史模拟都无法消除未来本身的不确定性。数据可以更干净,成交模型可以更细,成本估计可以更保守,参数选择可以更克制,却不能因此获得一个确定的结果。
看穿量化策略回测指标的虚与实,第一步不是寻找一套更漂亮的评价公式,而是愿意承认:一条超高收益率曲线可能同时包含规律、偶然和错误。我们要做的不是立刻否定它,也不是急着相信它,而是把它拆开,逐层询问每一部分是否经得起现实的触碰。
当收盘价不再被当成随时可得的成交价,当退市股票重新出现在历史样本里,当手续费和滑点开始真正占据净值曲线的一部分,当涨跌停让某些信号停留在纸面上,当参数不再被反复雕刻到只适合过去——回测的收益或许会下降,曲线也可能不再那么顺滑。
但那时留下来的结果,反而更接近我们能够理解和承受的东西。
交易是一场向外寻找价格、向内辨认自己的过程。我们无法要求市场替我们消除所有不确定性,只能尽量不让自己的模型提前消除现实。等夜深一些,再回头看那条净值曲线,也许真正值得留下的,不是它曾经有多耀眼,而是我们终于知道,它在哪些地方诚实,在哪些地方仍然需要保持怀疑。
Related reading: 量化回测中的滑点与手续费设置:为什么模拟盘赚钱实盘却亏损 and 交易员决策疲劳应对策略:减少日内无效交易的系统化方案.
