☰
量化求真06|一百万元能赚,一千万元还能赚吗?
2026/9/29 1:52:49 网站建设 项目流程

前言|把资金乘十之前

假设一套策略用100万元回测,扣完费用,某年赚了12%。有人问:如果拿1,000万元来做,是不是就能赚120万元?

纸上计算只需要乘十。真实交易却要多问一步:原先计划买10万元的股票,现在可能需要买100万元。市场在我们想买的时间,是否有人愿意卖出这么多?如果只成交了其中一部分,剩下的钱怎么办?如果为了买到而付出更差的价格,利润又会少多少?

第五篇讨论参数是否只在一个历史点上好看。到了第六篇,我们暂时固定策略规则,转而检查另一个常被净值曲线遮住的问题:资金变大后,策略还能否按原本的计划执行。

第三篇已经给过容量审计的检查框架。这一篇把它做成一份可复核的研究方案,从一笔订单开始,走到多资金规模的完整重跑。文中数字均为手工教学算例,不是平台实测。容量不是某个脱离成交假设的固定额度;读到结论时,必须能找回所用的资金规模、流动性限制和成本条件。

目录

  • 前言|把资金乘十之前
  • 01|先看一笔买不完的订单
  • 02|“有成交”不等于“买够了”
  • 03|固定规则,逐档放大资金
  • 04|买不进去,也可能让净值变好看
  • 05|成交以后,价格可能也变了
  • 06|多大规模才算遇到边界?
  • 07|日频回测能证明到哪一步?
  • 08|写出一份读得懂的容量结论
  • 关于本文的研究口径
  • 参考资料

01|先看一笔买不完的订单

仍以本系列的动量策略为例:根据当时可得的价格和流动性信息选股,按规则调仓,在次日开盘附近模拟成交。股票选得对不对,是一个问题;计划买入的股票能否买到,是另一个问题。

看一笔手工算例。某股票前一日成交量和下单当日最终成交量都折算为100万股;参考价格是每股10元,因此全天成交额约1,000万元。策略希望买入10万股,参考金额为100万元。假设本次模拟最多成交参考日成交量的1%,按股数计算,上限是1万股。

模拟可成交股数上限 = ⌊ min ⁡ ( V t − 1 , V t ) × p ⌋ \text{模拟可成交股数上限} =\left\lfloor\min(V_{t-1},V_t)\times p\right\rfloor模拟可成交股数上限=⌊min(Vt−1​,Vt​)×p⌋

这里,V t − 1 V_{t-1}Vt−1​是前一交易日成交量,V t V_tVt​是下单日全天成交量,p pp是参与率上限。式子先忽略此前同日同股票已成交数量、整手交易、账户现金和涨跌停等限制。平台实际执行时还会检查这些条件。

按本例,min ⁡ ( 100 万 , 100 万 ) × 1 % = 1 万股 \min(100\text{万},100\text{万})\times1\%=1\text{万股}min(100万,100万)×1%=1万股。策略计划买10万股,模拟成交1万股,其余9万股没有按计划买到。折算到相同参考价格,计划金额100万元,完成金额10万元。

图1:手工算例。图中“全天成交量”和10元价格为教学假设,不代表开盘真实可得流动性。

这一笔交易还有一个时间上的限制:下单开盘时,我们不可能知道当天最终一共成交了多少股。模型用当天总量做事后约束,不能把它解释成开盘前已经观察到的市场深度。这个边界后面还会展开。

02|“有成交”不等于“买够了”

如果一张10万股的订单只成交1万股,它仍然是一张“发生过成交”的订单。按“至少成交过一次的订单数 ÷ 总订单数”统计,刚才这笔订单的订单成交率是100%。可投资者原本想完成的金额,只有10%进了账户。

为了把事情说清,至少要并排看三个量。

金额成交完成率 = ∑ i q i f i l l P i r e f ∑ i q i p l a n P i r e f \text{金额成交完成率} =\frac{\sum_i q^{\mathrm{fill}}_i P^{\mathrm{ref}}_i} {\sum_i q^{\mathrm{plan}}_i P^{\mathrm{ref}}_i}金额成交完成率=∑i​qiplan​Piref​∑i​qifill​Piref​​

其中,q p l a n q^{\mathrm{plan}}qplan是原计划股数,q f i l l q^{\mathrm{fill}}qfill是实际模拟成交股数,P r e f P^{\mathrm{ref}}Pref是同一笔订单采用的参考价格。分子和分母用同一参考价格,是为了让这个比例只衡量“买了多少”,不把滑点误当成数量变化。分母为零时,应该写“不适用”,不能写0%或100%。

第二个量是需求参与率:计划金额占相应市场成交金额的比例。第三个是实际参与率:真正成交的金额占相应市场成交金额的比例。两者的分母要使用同一股票、同一时间范围和一致价格口径。

在上述教学例子里,计划买100万元,全天成交额约1,000万元,所以需求参与率是10%;真正只买到10万元,实际参与率是1%;金额成交完成率是10%。实际参与率看起来很低,恰恰可能是因为订单被上限挡住了,并不能单独证明流动性宽裕。

图2:同一手工算例。1%是实际成交占全天量,10%分别是计划需求占全天量与计划完成比例,三者不能互换。

再看一个更极端的订单簿算例:9笔小订单每笔计划1万元,全部成交;另外1笔大订单计划91万元,只成交9.1万元。十笔订单都“有成交”,按笔数算,订单成交率仍是100%;按参考金额算,总计划100万元,完成18.1万元,金额成交完成率只有18.1%。

图3:独立手工算例。订单成交率100%并不表示资金按目标投入;部分成交要按金额保留。

真实报告还应单列未完成金额,按流动性限制、停牌、价格限制、现金不足、交易状态不明等原因解释。把这些原因全部写成“买不进去”,既不准确,也会掩盖数据质量问题。平台页面给出了订单成交率与拒单数,但这两项无法代替金额完成率;完整金额指标需要按订单和成交记录另算。

03|固定规则,逐档放大资金

容量研究不能用一条100万元的净值曲线直接乘十。每一个资金档位都要从相同的初始条件重新运行完整回测。资金改变以后,委托股数、整手取整、费用、成交限制、持仓与后续现金都会改变,路径不会只是原来的放大版。

可以先选100万、300万、1,000万、3,000万元四档。档位只是实验设计;具体数值应结合预期资金用途和策略交易量确定,不是所有策略都必须测到3,000万元。

要固定的条件包括:研究起止日、历史可投资范围、第五篇确认的参数选择规则、调仓频率、持股数量、风险控制、费用版本、参与率上限、冲击系数以及比较基准。每个档位都用同一版本的数据和程序,保存不同的运行编号。若中途改变了参数或证券范围,就不再是纯粹的资金规模比较。

图4:实验设计。每档独立重跑;保持规则与成交假设一致,再观察账户怎样变化。

主要结果建议放在一张共享资金规模横轴的三联图:上面是扣费后的年化收益,中间是金额成交完成率,下面是未完成委托的参考金额。另附最大回撤、成本占初始资金比例、平均与高分位需求参与率、拒单原因。

图5:正式结果图的版式示意;灰色占位,没有任何策略收益数据。实测完成后应以真实数值替换,不可按连线推断容量。

为什么一定要三张图一起看?因为净收益下降可能是价格冲击变大,也可能是目标股票买不进去;金额完成率下降可能主要发生在收益贡献最关键的几笔买单,而非均匀分布在全部订单中。单张净值曲线说不清这些差异。

还要同时保留买入与卖出两面的执行情况。买入受限会留下现金;卖出受限则可能把想退出的风险留在账户。只研究买单容量,容易低估策略退出拥挤持仓时的困难。

04|买不进去,也可能让净值变好看

“资金越大,回测收益越低”比较直观;但有时大资金组的收益率或回撤反而好看一些。这未必说明容量变好了。

设想市场某段时间大跌:小资金组按计划买入,承受了完整跌幅;大资金组因为流动性限制,只买到一部分,更多资金暂时留在现金里。后者回撤更小,甚至收益率略高。若只看总收益和最大回撤,可能误以为放大资金改善了策略。

反过来,强势上涨时未能买入的现金又可能拖累收益。因此,容量曲线不一定随资金单调下降。未成交会改变持仓本身,损失不只是多付了几笔交易费用。

图6:机制示意,没有指定真实收益率。现金既可能在下跌时减少损失,也可能在上涨时错过收益。

为避免把“没买到”误读成“选得更好”,报告要展示各档平均和关键日期的现金比例、目标持仓与实际持仓差异,并指出差异主要来自哪些股票和调仓日。如果某个资金档位表现突出,只是因为几笔原计划买入没完成,应把这一事实写在收益结论旁边。

也不能简单把未成交订单“补在下一天”来美化结果。若实际研究要采用延迟下单、拆单或追单,那是另一套执行规则,需要单独实现、重新回测,并承担后续价格和风险。当前模型下的未完成部分,应按当前模型的真实处理方式记录。

05|成交以后,价格可能也变了

即使订单全部成交,成交价也可能偏离我们读信号时想象的价格。

平台的模拟执行以次日原始开盘价为参考,加入固定滑点和随成交占比变化的冲击。简化写法是:

s = s 0 + k q u s e d + q f i l l V r e f s=s_0+k\sqrt{\frac{q^{\mathrm{used}}+q^{\mathrm{fill}}}{V^{\mathrm{ref}}}}s=s0​+kVrefqused+qfill​​

s 0 s_0s0​是固定滑点率,k kk是冲击系数,分子包括同日同股此前已成交股数与本次成交股数,V r e f V^{\mathrm{ref}}Vref是模型采用的参考成交量。买单按参考价上浮,卖单按参考价下调。公式描述的是本项目的模拟假设,不是从真实订单簿估计出来的普遍市场规律。Almgren与Chriss的执行研究解释了为何交易成本和市场冲击需要进入大额交易决策,但不能据此把本平台系数说成经过市场校准。[1]

图7:两条不同路径:部分成交改变持仓与现金;价格偏离影响已经成交的交易成本。

读账本时要避免重复扣钱:如果净值已经用实际模拟成交价计算,滑点和冲击已体现在买卖价中;展示“滑点成本”是解释损失来源,不应再从该净值里减一次。平台当前的滑点成本汇总包含冲击部分,没有可靠拆分记录时不能把“固定滑点”和“冲击”分别当成两笔额外费用。

金额完成率也不应直接用实际成交金额除以计划参考金额。买得更贵会抬高实际金额,造成“完成更多”的错觉。图2的完成率公式已经用同一参考价格排除了这一影响。

接下来可以做事先安排的情景检查:例如分别在0.5%、1%、2%的参与率上限下重跑,再变化冲击系数。每一组情景都需要重新运行,因为成交和持仓会跟着变。不能把1%上限的账户净值拿来,直接加减一项费用就当成另一个情景。

这些设置不是越宽松越真实。若只有把参与率放到2%、把冲击调低,策略才显得能承载大资金,报告的重点应是结论对这些假设的依赖,而不是挑其中最漂亮的一条线。

06|多大规模才算遇到边界?

“这套策略容量是1,000万元”,听起来精确,但背后常常没有写明判定标准。一个更可检验的说法是:在约定的成交模型、成本、数据和时期下,哪些资金档位仍达到事先的要求。

例如,研究前先约定两项门槛:整体金额成交完成率不低于95%;与最小资金档位相比,净年化收益下降不超过2个百分点。两项只用于说明怎样制定标准,不是行业规定。实际门槛应由投资者能够接受的执行偏差和收益要求决定,并可增加卖出完成率、个别大订单完成率等限制。

如果四档测试中,100万与300万元满足门槛,1,000万元首次不满足,可以写:“在已测试的离散档位和当前假设下,边界出现在300万与1,000万元之间;尚未定位更精确的额度。”进一步细化,需要在这一区间增加档位,且继续检查其他时段和成交情景。

如果3,000万元仍然满足门槛,写“在最高已测档位及当前假设下未观察到触发门槛”,不能写“容量超过3,000万元且未来没有问题”。如果中间某档不满足、更高一档又满足,先追查未成交和持仓差异;不应简单取最高通过档位作单一容量数字。

图8:研究结论的写法示意。出现门槛、未出现门槛和结果不规则,分别需要不同表述。

容量最终更像一组附条件的证据,而非刻在策略上的数字。市场成交量会变,策略偏好的股票也会变;即便同样金额,一段平静时期能执行,不代表波动剧烈时也能执行。

07|日频回测能证明到哪一步?

到这里还必须回头看数据的时间尺度。我们的策略按次日开盘模拟成交;执行模型用前一交易日和当日最终成交量中较小的一个,限制当天可成交股数。以前一日量做参考有事前依据,但当日最终成交量只有收盘后才知道。模型把它当事后的保守约束,是为了避免模拟成交超过全天量的一部分;它并不提供开盘时实际挂单深度。[2]

因此,日频实验可以回答:“在这些每日成交量、参与率和冲击假设下,模拟账户能容纳多少资金?”它不能独自回答:“次日开盘那几分钟,一定能按这些价格和数量完成交易。”

如果要把后一个问题也做实,需要集合竞价、逐笔或分钟级别的数据,以及与实际下单时间、订单类型、排队顺序和拆单规则相匹配的执行模型。数据更细也不自动等于真实成交;买卖盘随自己的大单变化,仍需要实盘或纸面跟踪去校验。

平台可信度审计可以显示参与率上限及相关拒单提醒,但审计通过只说明当前规则下的回测有可追溯的执行假设。它不会把日频模拟变成真实交易承诺,也不会自动给出一条容量收益曲线。

还有一个容易忽略的方向:当历史成交量本来就缺失,拒单或运行失败并不能证明市场没有流动性。应将“数据不足以评估”和“在有效数据下触及流动性限制”分开记录。

08|写出一份读得懂的容量结论

一份可供读者判断的容量报告,应同时交代:使用了哪套策略和参数,测试了哪些资金档位,采用了什么成交与费用假设,计划订单完成了多少,净收益和回撤怎样变化,最难成交的买卖单发生在哪些日期。

如果答案是“100万元可以,1,000万元在某种假设下不行”,这仍然是有价值的研究结果。它告诉我们策略的可使用范围,而不是宣告选股规律突然消失。

真正危险的结论,是只把小资金净值乘十,把新增资金最需要面对的订单缺口和价格变化全部留在图外。策略能赚多少钱,最后要经过的,不只是信号,还有市场愿意让我们成交的那道门。


关于本文的研究口径

本文没有运行新的多资金回测。100万元订单、1%上限、9笔小订单与1笔大订单、300万至1,000万元边界等均为手工教学算例或条件句;图5是待填的出版版式,不含实测收益。读者不应把这些数字理解为本项目策略已验证的容量。

第一笔订单的股数推算简化了整手取整、账户现金、涨跌停、同日已占用额度及其他拒单条件。实际实现按股数限制,不直接以成交金额百分比决定是否成交。公式中的当日最终成交量属于事后模拟约束,不构成未来交易信号;但它也不能被表述为开盘时可观察的可成交深度。

“订单成交率”按至少有一笔成交的订单数计算;部分成交的订单也可计入。因此正文另外定义金额成交完成率。实际汇总应依据每笔订单的计划股数、实际成交股数与同一参考价格,检查重复订单、撤单、缺失参考价、买卖方向及分母为零的情况。无法对齐的记录单列,不静默剔除。

平台功能依据本文整理时的本地实现核对:单次回测可调初始资金,展示净值、交易与成本、订单明细;执行模型含参与率上限和冲击假设;审计报告提示容量相关约束。当前页面没有自动生成本文的三联容量曲线或金额成交完成率,需要保留多次运行数据后另行汇总。平台页面只展示订单与成交明细的尾部记录,完整分析必须使用运行目录中的全量文件。配套指南列出截图和核对步骤。

参考资料

  1. Almgren, R., & Chriss, N. (2000/2001).Optimal execution of portfolio transactions.Journal of Risk, 3(2), 5–39. 期刊页面。本文借鉴其将执行成本与市场冲击纳入大额交易研究的基本问题意识;本文示例阈值及平台模型系数均非该论文实证结论。

  2. 本系列第三篇:《一份回测报告凭什么值得相信》。其中的执行与容量章节说明了日频参与率约束的时间边界;本篇进一步展开多资金实验与结果表述。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询