一、交易执行概述

交易执行,说白了就是「怎么把订单变成成交」。很多人以为交易就是点一下鼠标,等它成交就行了。嗯,我刚开始做量化的时候也这么想,直到有一次在实盘里吃了大亏——一个几百万的订单,我直接丢了个市价单进去,结果滑点吃掉了我整整一周的利润。

从那天起,我彻底明白了:交易执行不是简单的下单,而是一门平衡速度、成本和风险的学问。

1.1 交易执行的定义

交易执行,是指将交易决策转化为实际成交的过程。它包含三个核心环节:

  • 订单路由:把订单发到哪个交易所、哪个流动性池
  • 订单拆分:大单拆成小单,避免冲击市场
  • 时机选择:什么时候发单、发多少、要不要等

你想想看,一个基金经理说「我要买100万股茅台」,这不是一句话就能搞定的。100万股如果直接砸进去,股价可能直接被你拉高3个点。这就是交易执行要解决的问题。

核心观点:交易执行不是「下单」,而是「如何聪明地下单」。

1.2 核心目标:降低滑点、提高成交率

交易执行有两个核心目标,我习惯把它们叫做「鱼和熊掌」:

目标 定义 我的经验
降低滑点 实际成交价与预期价的偏差 我曾经在港股做一笔大单,滑点直接吃掉0.8%,相当于白干三天
提高成交率 订单最终成交的比例 限价单挂得太保守,结果只成交了30%,策略信号都变了

这两个目标其实是矛盾的。你想降低滑点,就得用限价单慢慢等,但成交率就下来了。你想提高成交率,用市价单一把梭,滑点又上去了。怎么平衡?这就是执行算法的价值所在。

我的建议:别追求「零滑点」,那是不可能的。设定一个可接受的滑点范围,比如0.1%-0.3%,在这个范围内尽量提高成交率。

1.3 执行算法分类

市面上主流的执行算法,我按使用频率排个序:TWAP、VWAP、POV、IS。每个算法都有自己的脾气,我一个个说。

1.3.1 TWAP(时间加权平均价格)

TWAP 是最基础的算法。它的逻辑很简单:把订单按时间均匀拆分。比如你要在1小时内买100万股,那就每分钟买16667股左右。

为什么用这个?说白了,就是「我不知道市场会怎么走,但我也不想赌」。TWAP 适合那些对价格不敏感、只求平稳执行的场景。

我记得有一次做 ETF 套利,需要快速建仓一篮子股票。我用了 TWAP,因为 ETF 成分股太多,我没精力一个个盯盘。结果执行下来,滑点控制得还不错。

// TWAP 算法伪代码
function twap(totalShares, durationMinutes):
    interval = durationMinutes / totalShares  // 每笔间隔
    for each minute:
        shares = totalShares / durationMinutes
        sendOrder(shares)
        sleep(interval)

注意:TWAP 有个致命缺陷——它完全不考虑市场成交量。如果市场流动性突然枯竭,你的订单可能把价格打飞。

1.3.2 VWAP(成交量加权平均价格)

VWAP 比 TWAP 聪明一点。它不按时间均匀拆分,而是按市场成交量来分配。市场成交量大的时候多买,成交量小的时候少买。

为什么这样更好?因为你的订单对市场的冲击,跟你的交易量占市场成交量的比例有关。VWAP 就是尽量让你的交易量跟市场成交量保持同步。

我做过一个回测:同样的100万股,用 TWAP 滑点0.25%,用 VWAP 滑点0.18%。虽然差距不大,但日积月累就是一笔不小的钱。

// VWAP 算法核心逻辑
function vwap(totalShares, volumeProfile):
    totalVolume = sum(volumeProfile)
    for each period:
        weight = volumeProfile[period] / totalVolume
        shares = totalShares * weight
        sendOrder(shares)

1.3.3 POV(参与率算法)

POV 的全称是 Percentage of Volume,也就是「我参与市场成交量的百分之多少」。比如你设定参与率为10%,那么市场每成交1000股,你就买100股。

这个算法的好处是:它自适应市场流动性。市场活跃的时候你买得快,市场冷清的时候你买得慢。我个人比较喜欢用 POV 做日内交易,因为它能很好地控制冲击成本。

我曾经在美股盘前用 POV 做一笔大单,设定参与率15%。结果开盘后流动性突然暴增,我的订单在5分钟内就执行完了,滑点只有0.05%。

关键参数:参与率一般设置在5%-20%之间。太高了容易暴露意图,太低了执行时间太长。

1.3.4 IS(Implementation Shortfall,执行缺口算法)

IS 是最复杂的算法,也是机构最常用的。它的目标不是跟踪某个基准价格,而是「最小化执行成本」。这个成本包括:

  • 显性成本:佣金、税费
  • 隐性成本:滑点、市场冲击、机会成本

IS 算法会动态决策:现在是赶紧买,还是再等等?它会根据市场波动、流动性、信号强度等因素,实时调整执行策略。

说实话,IS 算法我用了三年才真正理解。它的核心思想是「权衡」——你等得越久,可能买到更好的价格,但也可能错过机会。IS 就是帮你找到那个最优的平衡点。

// IS 算法简化模型
function is(totalShares, urgency):
    cost = 0
    while remainingShares > 0:
        marketImpact = estimateImpact(remainingShares)
        priceRisk = estimatePriceRisk(urgency)
        if marketImpact > priceRisk:
            // 市场冲击太大,慢点执行
            slowExecute()
        else:
            // 价格风险更大,赶紧执行
            fastExecute()
        cost += calculateCost()

知识体系总览

下面这张图,是我自己画的一个执行算法知识体系。你可以看到,四个算法从简单到复杂,从被动到主动,各有各的适用场景。

交易执行算法知识体系 核心目标 降低滑点 提高成交率 四大执行算法 TWAP 时间加权平均 VWAP 成交量加权平均 POV 参与率算法 IS 执行缺口算法 简单、均匀 跟随成交量 自适应流动性 动态优化成本 选择算法 = 平衡速度、成本、确定性

这张图你看懂了吗?从 TWAP 到 IS,算法的复杂度在增加,但灵活性和潜在收益也在增加。我的建议是:新手从 TWAP 和 VWAP 开始,等你对市场冲击有了感觉,再尝试 POV 和 IS。

避坑指南:我曾经在流动性差的股票上用了 IS 算法,结果算法频繁调整策略,反而产生了更多的交易成本。后来我学乖了——流动性差的品种,老老实实用 TWAP 或者手动拆单。

好了,这一章的内容就到这里。交易执行不是一蹴而就的技能,需要你在实战中慢慢积累感觉。记住一句话:没有最好的算法,只有最适合当前场景的算法。

专注资料整理