RE:CZ

资本持久战实验设计

量化金融

👤 量化交易者、资金管理策略研究者、对Anti-Martingale策略感兴趣的投资人士。
本文详细阐述了资本持久战的实验设计,核心是使用基准账户作为参考,投注账户采用Anti-Martingale策略动态调整仓位。关键内容包括:时间刻度t作为离散市场时刻;基准账户以固定仓位交易,提供累计盈亏曲线;投注账户根据基准表现计算输入现金流C(t)和基准止损额StopLoss(t),构建风控线RiskLine(t)和风险资金VC(t),通过公式Position(t) = floor(VC(t) / StopLoss(t))确定仓位大小;定义了止盈和止损事件的处理逻辑,以及观察期的交易暂停条件。整体旨在最大化风险资金利用效率,实现激进但受控的投注。
  • ✨ 时间刻度t是离散的市场时刻,用于所有时间序列。
  • ✨ 基准账户以固定仓位交易,提供累计盈亏BasePnL(t)作为参考。
  • ✨ 投注账户使用Anti-Martingale策略,根据基准表现动态调整仓位。
  • ✨ 输入现金流C(t)和基准止损额StopLoss(t)从基准账户历史表现计算得出。
  • ✨ 风控线RiskLine(t)随时间向下移动,确保未实现盈亏不低于该线。
📅 2026-02-02 · 1,345 字 · 约 5 分钟阅读
  • 资本持久战
  • 实验设计
  • Anti-Martingale
  • 资金管理
  • 风险控制
  • 仓位计算
  • 基准账户
  • 投注账户

资本持久战 实验设计

2026-02-02

重新梳理一下底层的实验设计的概念,因为 AI 编写的代码的细节仍有待完善。

时间刻度 t

时间刻度 t 是离散的,表示市场的每一个时刻。可以是分钟、小时、天等。通常是指每个 K 线。接下来会讨论很多时间序列,这些时间序列的自变量都是 t。

基准账户

基准账户是一个不使用任何资金管理策略的账户。它始终以初始仓位 1 单位进行交易。基准账户的表现用于指导投注账户的资金管理。

  • 基准账户的累计盈亏 BasePnL(t),时间序列,初始值为 0。始终以初始仓位 1 单位进行交易。以此得到的累计盈亏曲线。

投注账户

投注账户使用 Anti-Martingale 资金管理策略,根据基准账户的表现动态调整仓位大小。

重要参数:

  • 目标止盈金额 M_T,由投注策略参数决定。

考察对象:

  • 未实现盈亏 UnrealizedPnL(t),时间序列,表示基准账户当前持仓的未实现盈亏。初始值为 0。

  • 已实现盈亏 RealizedPnL(t),时间序列,表示基准账户已经实现的盈亏。初始值为 0。

  • 累计盈亏 PnL(t),时间序列,表示系统产生的损益。恒等于 PnL(t) = UnrealizedPnL(t) + RealizedPnL(t)。这个 PnL 就是净值曲线。可以线性缩放到任意初始资金规模。投注模型的表现可以通过 PnL(t) 来观察。

风险控制

确定输入现金流

输入现金流 C(t),时间序列,表示输入现金流的速度(注意不是总量)。

根据基准账户的历史表现得出,并动态更新。

推荐的计算方法是:计算基准账户的每笔交易中,最大的 亏损/时间长度 作为 C(t) 的值。

构建硬性风控线

风控线 RiskLine,初始值为 0。

自然按照 RiskLine(t+1) = RiskLine(t) - C(t) 迭代,在止盈时,RiskLine 会被重置为 0。

风控线跟随时间增长向下移动。任何时刻,都会保证 UnrealizedPnL(t) >= RiskLine(t)。

风险资金(Venture Capital, VC)

恒等于 VC(t) = UnrealizedPnL(t) - RiskLine(t),表示当前可用于投注的资金,承担完全亏损风险的资金。风险资金始终非负。

确定仓位大小

原则上,在风控条件下,尽可能地激进下注,以最大化风险资金的利用效率。任何浪费风险资金的行为都是无意义的。每次仓位大小都是奔着最大亏损直接将 VC(t) 亏完的决心去的,不浪费任何一份风险资金。

基准止损额,StopLoss(t)

表示当前每单位头寸设立的最大浮动亏损额,即持仓过程中的止损额,持仓过程中,如果触碰这个止损线就会造成盘中退出。基准止损额通过基准账户的历史表现得出,并动态更新。

推荐计算方法是:计算基准账户的每笔交易中,最大的盘中浮亏 作为 StopLoss(t) 的值。注意,要计算盘中浮亏,而不是最终的盈亏。多头仓位使用最低价,空头仓位使用最高价计算。

仓位大小,是一个非负整数,代表投注帐户相对于基准账户的头寸的倍数。

if StopLoss(t) > 0 then
    Position(t) = max(1, floor(VC(t) / StopLoss(t)))
else
    Position(t) = 0
end if

注意,如果 StopLoss(t) = 0.01,VC(t) = 1,这意味着我们会开仓 100 倍的基准头寸。这看起来是非常激进的仓位。例如,BTC 合约的最低交易额是 0.0001 BTC,那么下 100 倍的仓位也只是 0.01 BTC 的头寸,这看起来就不吓人了。不过,后续仍然需要观察这个倍数会不会过大,导致实际操作中无法实现。

观察期

当 C(t) 为 0 或者 StopLoss(t) 为 0 时,表示观察期,不进行交易,仅更新 C(t) 和 StopLoss(t)。Position(t) 始终为 0。

止盈事件

当 UnrealizedPnL(t) >= M_T 时,触发止盈事件,进行止盈处理。由于止盈是盘中触发的,因此 UnrealizedPnL(t) 只能达到 M_T,而不能超过。检查止盈事件的时候,需要使用持仓的最高浮盈,做多使用最高价,做空使用最低价计算。

记录止盈事件,重置 RiskLine(t) = UnrealizedPnL(t) = 0,使得 VC(t) = 0。

RealizedPnL(t) += M_T
UnrealizedPnL(t) = 0
RiskLine(t) = 0

已经观测到的信息 C(t) 和 StopLoss(t) 保持不变。

止损事件

当持仓期间的最大浮亏 >= StopLoss(t) 时,触发止损事件,进行止损处理。

记录止损事件,UnrealizedPnL(t) 最多只能回撤到 RiskLine(t),即 VC(t) = 0。

止损也是盘中止损的,发生止损后,本次交易中止,即使后面反弹了,也已经锁定亏损了。风控资金会归零,但是实际上不需要重置什么状态,止损,但是继续运行。

基准账户,已经观测到的信息 C(t) 和 StopLoss(t) 保持不变。

See Also

Referenced By