投资组合回测可能呈现平滑的权益曲线,却把同一美元花了两次。当模拟器把权益、现金、抵押品和购买力当成可以互换的概念时,就会出现这种情况。它们彼此相关,却回答着不同的问题:账户持有什么、欠了什么,以及此刻还能为另一笔订单动用多少资金。
假设某个策略以 $10,000 起步,买入价值 $6,000 的资产。此时它有 $4,000 可用现金。如果回测接着按全部 $10,000 权益的 100% 来确定第二个仓位,就相当于承诺了 $16,000 的敞口,却只记录了 $10,000 的资金。根据某些账户规则,这种杠杆可能合理;但仅仅因为定仓代码用的是“权益”,并不能证明它合理。
错误做法一:把权益当现金
这种简化常见于多资产策略。每个信号都按当前投资组合价值的一定比例确定订单规模,而且每笔订单都能使用全部价值。投资组合循环分别计算订单,之后直接相加,却没有预留资金。
在交易标的流动性充足、没有保证金追缴的回测中,这类问题很容易被忽视。收益看起来合理;事后加总的仓位权重有时却会达到 140% 或 180%。实盘账户可能会拒绝后续订单,或者承担策略根本无意使用的杠杆。
生成订单时就预留现金。现金账户买入 $2,000 的资产,需要占用 $2,000 加手续费。保证金账户则应按交易场所的规则计算所需保证金,再从可用购买力中扣除。如果多笔订单同时到达,还要明确它们的优先级;否则结果可能取决于循环恰好先处理了哪一笔。
错误做法二:把锁定的抵押品算作可用购买力
在衍生品交易场所,存入 $1,000 抵押品并不一定意味着账户权益减少了 $1,000,但这笔抵押品确实已用于支持未平仓头寸。一种常见的会计简化会先从现金中扣除抵押品,再把头寸的全部名义价值从购买力中扣除。另一种做法则反过来,把抵押品同时当作可用现金和保证金。
这两种错误都会扭曲下一笔订单可执行的规模。前者可能让策略看起来受到不必要的限制;后者则可能批准账户无法支撑的订单。在 5× 杠杆下,$5,000 的仓位可能需要约 $1,000 的初始保证金,但维持保证金、手续费、未实现亏损和交易场所特定的档位都会改变实际可用金额。名义价值不等于抵押品。
| 账户指标 | 含义 | 能否为新订单提供资金? |
|---|---|---|
| 权益 | 扣除负债并按市值计价持仓后的账户价值 | 可以,但须遵守保证金和购买力规则 |
| 可用现金 | 尚未支出、预留或质押的现金 | 可以,但须符合该交易品种的规则 |
| 锁定的抵押品 | 用于支持未平仓头寸或订单的资金 | 通常要等释放后才能使用 |
| 购买力 | 交易场所计算出的新增订单承载能力 | 可以,但不得超过当前限额 |
应将这些指标分别建模,即使在某个交易场所的简单情形下,其中几项数值相等。接着测试持仓亏损时会发生什么:权益下降,维持保证金占名义价值的比例可能上升,可用购买力的收缩幅度也可能快于单看任何一项指标所能反映的程度。
错误做法三:信号触发退出时就释放现金
回测往往在退出信号出现的瞬间释放资金。但退出信号不等于成交。订单可能仍在等待、只部分成交,或已被取消;在头寸真正平仓前,其保证金和敞口都还在。即使订单成交,手续费和已实现盈亏也会影响可用资金。
这类问题往往集中在快速换仓期间。模拟器平掉一笔交易,立刻把所得资金用于另一笔交易,接着假定两笔订单都按预期价格顺利成交。在模拟交易中,第一笔仓位可能还未平仓,第二笔订单就已被拒绝。也可能退出订单只部分成交,导致账户可用资金低于回测预期。
要把待处理订单和持仓都记为资金承诺。成交后再释放资金,而不是在有意下单时就释放。部分成交的退出订单,应在扣除成本后,按实际平仓数量的比例释放资金。等到波动剧烈的交易日里两种策略争用同一笔现金,你就会明白这份细致为何必要。
明确记录账本
每个决策时点都应按固定顺序更新账本:按市值重估现有持仓,计算权益和保证金,处理成交与成本,重新计算购买力,然后确定新订单规模并预留资金。记录足够详细,才能核对现金和持仓价值的每一次变动。
一条实用的恒等原则:每笔获准订单在提交时,都必须符合账户模型下的资金承载能力。如果模拟器无法说明订单由哪笔现金或保证金支持,这次回测就没有证明投资组合实际上能够持有该订单。
在计算收益的同时做一项小型审计。报告总敞口峰值、可用现金最低值、保证金缓冲最低值,以及超出购买力的订单数量。如果一个策略只有在资金被悄悄重复使用时才能表现良好,那它得到的只是仓位规模结果,还算不上可部署的回测。
← 全部文章


