第四章:回扣套利策略基础
各位同学,今天我们来聊聊回扣套利。说实话,这个策略在圈内一直有点神秘色彩。很多人觉得它就是个“薅羊毛”的活儿,但真正在机构里做过的人都知道——这里面的门道深着呢。
我最早接触回扣套利是在2016年,当时帮一家做市商搭建交易系统。客户说:“你们能不能帮我把交易所的返佣吃下来?”我当时心想,这不就是刷单吗?后来深入研究才发现,事情远没那么简单。
4.1 回扣套利的定义与分类
回扣套利,说白了就是利用交易所提供的流动性返佣机制来获利。交易所为了吸引做市商提供流动性,会按照挂单量、成交量和挂单时长等指标给予返佣。套利者通过策略性地挂单和撤单,在承担有限风险的前提下,把这些返佣“吃”下来。
我个人习惯把回扣套利分成三类:
- 纯回扣套利:只吃返佣,不承担方向性风险
- 混合回扣套利:在吃返佣的同时,结合其他策略
- 统计回扣套利:基于历史数据预测返佣机会
嗯,这里要注意一个关键点:不是所有交易所的返佣规则都一样。有的按挂单量算,有的按成交量算,还有的按挂单时长算。你想想看,如果按挂单时长算,那挂单时间越长越好;如果按成交量算,那就要想办法提高成交率。
核心要点:回扣套利的本质是“用风险换返佣”。你承担的风险越小,返佣就越稳定;但风险越小,返佣率通常也越低。
4.2 纯回扣套利策略
纯回扣套利,是我个人最喜欢的策略类型。为什么?因为它逻辑简单,风险可控。
具体怎么做呢?我举个例子:
# 纯回扣套利伪代码
def pure_rebate_strategy(symbol, exchange):
# 1. 获取当前最优买卖价
bid_price = exchange.get_best_bid(symbol)
ask_price = exchange.get_best_ask(symbol)
# 2. 在买一价下方挂买单(提供流动性)
buy_order = exchange.place_limit_order(
symbol=symbol,
side='buy',
price=bid_price - 0.01, # 比最优买价低1分钱
quantity=1000
)
# 3. 在卖一价上方挂卖单(提供流动性)
sell_order = exchange.place_limit_order(
symbol=symbol,
side='sell',
price=ask_price + 0.01, # 比最优卖价高1分钱
quantity=1000
)
# 4. 等待成交,获取返佣
# 如果成交了,就赚返佣;如果没成交,就撤单重挂
while True:
if buy_order.is_filled():
rebate = exchange.get_rebate(buy_order)
profit += rebate
# 重新挂单
buy_order = exchange.place_limit_order(...)
if sell_order.is_filled():
rebate = exchange.get_rebate(sell_order)
profit += rebate
sell_order = exchange.place_limit_order(...)
你看,这个策略的核心就是:挂单在盘口之外,等待被动成交。被动成交的订单,交易所会给你返佣;主动吃单的订单,不仅没有返佣,还要交手续费。
小技巧:我曾经在实盘中遇到过一个问题——挂单太远,成交率太低;挂单太近,又容易被主动吃单。后来我总结出一个经验:挂单距离盘口的价格,最好在0.5个最小变动价位到1个最小变动价位之间。这样既能保证一定的成交率,又不会频繁被吃单。
4.3 混合策略框架
纯回扣套利虽然稳定,但收益天花板很低。我见过很多团队,做纯回扣套利做到一定规模就上不去了。为什么?因为返佣率是固定的,你挂单量再大,返佣率也不会变。
这时候就需要引入混合策略框架。说白了,就是在吃返佣的同时,叠加其他策略来增厚收益。
我常用的混合策略框架是这样的:
# 混合回扣套利框架
class HybridRebateStrategy:
def __init__(self, exchange, symbol):
self.exchange = exchange
self.symbol = symbol
self.rebate_layer = RebateLayer() # 回扣层
self.arbitrage_layer = ArbitrageLayer() # 套利层
self.hedge_layer = HedgeLayer() # 对冲层
def run(self):
# 1. 回扣层:挂单吃返佣
rebate_orders = self.rebate_layer.place_orders()
# 2. 套利层:利用盘口价差做套利
if self.arbitrage_layer.detect_opportunity():
arb_orders = self.arbitrage_layer.execute()
# 用套利利润对冲回扣层的库存风险
self.hedge_layer.hedge(arb_orders)
# 3. 监控整体风险敞口
total_risk = self.calculate_total_risk()
if total_risk > threshold:
self.reduce_exposure()
这个框架的好处是:回扣层提供稳定现金流,套利层提供超额收益,对冲层控制风险。三个层次互相配合,形成一个完整的策略体系。
警告:混合策略虽然收益更高,但风险也更大。我曾经见过一个团队,在回扣层上叠加了高频套利策略,结果市场波动一上来,两个策略同时亏损,一天亏掉了三个月的返佣收益。所以,混合策略一定要做好风险隔离。
4.4 策略风险收益特征
说到风险收益特征,我习惯用三个维度来衡量:
| 策略类型 | 预期年化收益 | 最大回撤 | 夏普比率 | 容量 |
|---|---|---|---|---|
| 纯回扣套利 | 5%-15% | <1% | 3-5 | 中等 |
| 混合回扣套利 | 15%-40% | 2%-5% | 1.5-3 | 大 |
| 统计回扣套利 | 10%-25% | 1%-3% | 2-4 | 小 |
你看,纯回扣套利的夏普比率最高,但收益也最低。混合策略的收益最高,但回撤也大。怎么选?我个人建议:如果你刚开始做回扣套利,先从纯策略入手,跑顺了再考虑混合。
为什么会这样?因为纯策略的风险好控制。你想想看,纯回扣套利最大的风险是什么?是挂单被吃后,库存方向暴露。但只要你的挂单量不大,这个风险完全可以忽略。而混合策略就不一样了,套利层和对冲层一旦出问题,可能连回扣层的利润都赔进去。
我记得有一次,一个朋友问我:“我能不能直接上混合策略?”我说:“你先把纯策略跑三个月,看看能不能稳定盈利。”结果他跑了两个月就放弃了——因为纯策略的收益太低了,他觉得没意思。但后来他告诉我,其实纯策略帮他积累了很多经验,比如怎么选交易所、怎么调参数、怎么控制风险。这些经验,在混合策略里都用得上。
总结一下:回扣套利不是简单的“薅羊毛”,它是一个系统工程。纯策略是基础,混合策略是进阶。不管你选哪种,都要记住:风险控制永远是第一位的。