2. 佣金结构解析

在交易成本建模中,佣金是最容易被低估、却对高频或大额交易影响显著的一项。要准确建模,第一步不是套公式,而是搞清楚“券商/经纪商到底按什么规则收钱”。本节围绕三种最常见的佣金模式——固定佣金、比例佣金、阶梯佣金——展开,并对比股票、期货、外汇三类市场的规则差异与计算方式。

一、三种基本佣金模式

固定佣金(Flat Fee):每笔交易收取一个与成交金额无关的固定金额。例如“每笔 5 元”。其特点是单笔成本恒定,但折算成费率会随成交金额变化:金额越大,实际费率越低。建模时佣金 = 固定值 × 成交笔数,与价格、数量无关。

比例佣金(Percentage / Ad Valorem):按成交金额的一定比例收取,常见形式为“成交金额 × 费率”,并常设最低收费。例如费率 0.03%、最低 5 元。此时佣金 = max(成交金额 × 费率, 最低收费)。比例佣金在大额交易中成本线性增长,是股票市场最主流的模式。

阶梯佣金(Tiered / Laddered):费率随交易量、账户资产或月度累计成交额分档递减。例如月成交额 0–100 万按 0.03%,100–500 万按 0.025%,500 万以上按 0.02%。阶梯佣金的关键在于“分档方式”:是全额累退(全部金额按所在档费率)还是超额累进(各档分别计算后加总),两者结果不同,建模时必须明确。

建模提示:阶梯佣金要区分“按单笔金额分档”还是“按周期累计金额分档”。前者逐笔独立判断,后者需要维护周期内的累计状态,属于带状态的计费逻辑。

二、三类市场的佣金规则差异

股票市场:A 股通常采用“比例佣金 + 最低收费 + 印花税 + 过户费”的组合。佣金由券商收取(双向),印花税卖出时单边征收,过户费按成交金额比例收取。建模时不能只算佣金,要把税费一并纳入单边/双边成本。港股、美股规则又不同(如美股常按股数或笔数计费),跨境策略需分别建模。

期货市场:佣金常按“手数”计费,分固定值(如每手 3 元)和按成交金额比例两种,且平今仓、平昨仓费率可能不同。期货还有交易所手续费与经纪商加收部分,建模时应把两者相加。由于期货是保证金交易,佣金相对合约名义价值的比例更能反映真实成本负担。

外汇市场:零售外汇多以“点差(Spread)”形式体现成本,而非显性佣金;ECN 账户则采用“每手固定佣金 + 原始点差”模式。因此外汇成本建模要把点差折算成金额,再与佣金合并,统一到“每标准手成本”口径上比较。

三种佣金模式与三类市场的计费结构 固定佣金 每笔 5 元 佣金 = 5 × 笔数 金额↑ → 实际费率↓ 适合小额、低频 比例佣金 0.03%,最低 5 元 佣金 = max(金额×费率, 5) 成本随金额线性增长 股票市场主流 阶梯佣金 0–100万:0.03% 100–500万:0.025% 500万以上:0.02% 需区分全额累退/超额累进 三类市场的成本构成 股票 佣金(双向,比例+最低) 印花税(卖出单边) 过户费(按金额比例) 建模:单边/双边成本分开 期货 按手数固定 / 按金额比例 交易所费 + 经纪商加收 平今 / 平昨费率可能不同 建模:折算到名义价值比例 外汇 点差(隐性成本) ECN:每手固定佣金 点差 + 佣金合并 建模:统一到每标准手成本

三、计算示例:同一笔交易在三种模式下的成本

假设买入某股票,成交金额 200,000 元,单笔交易。分别按三种模式计算佣金(示例参数为合理假设,仅用于说明计算逻辑):

  • 固定佣金 5 元/笔:佣金 = 5 元,折算费率 = 5 / 200000 = 0.0025%。
  • 比例佣金 0.03%、最低 5 元:200000 × 0.03% = 60 元,高于最低收费,佣金 = 60 元,费率 0.03%。
  • 阶梯佣金(超额累进,档位同上):前 100 万按 0.03%……本例 20 万落在第一档,佣金 = 200000 × 0.03% = 60 元。

若成交金额降到 10,000 元:固定佣金仍为 5 元(费率 0.05%);比例佣金 = max(10000×0.03%, 5) = max(3, 5) = 5 元(触发最低收费);阶梯佣金同样触发最低收费。可见最低收费是小额交易成本建模中不可忽略的“地板”。

再看阶梯佣金的分档差异。假设月累计成交额 600 万元,档位为 0–100 万 0.03%、100–500 万 0.025%、500 万以上 0.02%:

  • 全额累退:600 万全部按 0.02%,佣金 = 1,200 元。
  • 超额累进:100万×0.03% + 400万×0.025% + 100万×0.02% = 300 + 1000 + 200 = 1,500 元。

两者相差 300 元。若建模时误把超额累进当成全额累退,会系统性低估成本。因此拿到费率表后,第一件事是确认分档口径。

四、建模落地要点

把上述规则转成可执行的计算函数时,建议统一“输入—判断—输出”的口径:输入为成交金额、方向、市场、账户周期累计量;判断依次为“是否触发最低收费”“是否跨档”“平今/平昨是否不同”;输出为单笔佣金及折算费率。对带状态的阶梯佣金,需要在回测中维护周期累计变量,并在周期切换时重置。

def commission(amount, market, side, cum_month=0):
    if market == "stock":
        fee = max(amount * 0.0003, 5)          # 比例 + 最低
        tax = amount * 0.001 if side == "sell" else 0  # 印花税卖出单边
        return fee + tax
    if market == "futures":
        return 3 * lots                        # 按手固定(示例)
    if market == "fx":
        return 7 * lots                        # ECN 每手固定(示例)
常见误区:只比较名义费率而忽略最低收费与税费;把“按手计费”直接与“按金额比例”混算;阶梯佣金未区分全额累退与超额累进。这些都会让回测成本偏离真实值,尤其在小额高频策略中放大误差。

掌握三种模式的计费逻辑与市场差异后,下一步才能把它们与滑点合并,构建完整的单笔与累计交易成本模型。