查看全课大纲(第 50 / 59 节)
- 1.量化投资必备基础知识
- 2.趋势型策略及模型原理
- 3.均值回复型策略及模型原理
- 4.配对交易策略及模型原理
- 5.量化策略研发流程与基本技能
- 6.常用的量化平台概述及如何选择
- 7.如何量化一个主观策略思路
- 8.常用技术指标及指标计算过程
- 9.如何编写指标代码
- 10.指标的物理意义
- 11.技术指标的应用技巧
- 12.更多的交易决策
- 13.编写程序去量化一个趋势型技术指标
- 14.编写趋势型技术指标的性能评价
- 15.策略对交易成本和持仓周期的影响
- 16.股票池策略的原理及基本框架
- 17.基于多因子分析的股票池设计与实现
- 18.股票池的性能评估
- 19.使用定制化财务因子构建股票池
- 20.趋势型策略原理及股票池机制的设计
- 21.趋势型择时信号的设计方法与编程实现
- 22.趋势型策略的回测与性能评估
- 23.优化趋势型策略的思路及方法
- 24.量化体系中的风险控制思想
- 25.风险的度量-波动率
- 26.常用的风险控制方法
- 27.实现止盈止损模块以提高策略性能
- 28.策略性能的评估与优化
- 29.探讨波动率与风险的关系
- 30.量化策略中的经典资金管理模型
- 31.用python编程实现资金管理模块
- 32.构建一个完善的量化交易策略
- 33.趋势型量化策略必备的期货知识
- 34.期货量化工具介绍
- 35.商品期货趋势型策略原理
- 36.用TB编写商品期货趋势型策略(上)
- 37.用TB编写商品期货趋势型策略(下)
- 38.分析优化商品期货趋势型策略的方法思路
- 39.期货交易策略的注意事项
- 40.均值回复型策略的原理
- 41.A股市场有没有稳定的均值回复效应?
- 42.编写一个均值回复型股票量化策略
- 43.编写多空组合策略进行策略改进
- 44.在策略中实现头寸管理进行策略优化
- 45.套利策略原理及常见套利类型
- 46.用MC开发一个跨品种套利交易策略(上)
- 47.用MC开发一个跨品种套利交易策略(下)
- 48.统计套利之股票配对交易策略
- 49.实盘中的细节问题:加减仓
- 50.关于高频交易
- 51.如何评价实盘量化策略的性能
- 52.量化系统的工作过程及研发流程
- 53.运气or实力
- 54.量化实盘交易需要满足什么条件
- 55.未来函数的坑
- 56.实盘数据接口异常的自动报警
- 57.交易系统的压力测试
- 58.自动运行的交易策略,什么时候需要人工干预
- 59.预案准备和实盘心理建设
关于高频交易
约 14 分钟
📺 正在播放小象学院官方高清录播(支持倍速与清晰度调节)
小象实战讲义 · 进阶量化交易实战:迭代式的量化策略研发 本讲义仅用于编程与量化方法教学,不构成任何投资建议。
高频交易(High-Frequency Trading, HFT)充满了神秘色彩与技术神话。微波通信塔、FPGA 纳秒级硬件加速、订单流做市(Market Making)与低延迟套利构成了高频交易的真实物理世界。本节深入剖析高频交易的微观机制、技术军备竞赛以及中低频量化面对高频环境的生存之道。
💡 核心导读
- 高频交易四大核心特征与生态位认知:
- 超低延迟与算力竞争(Sub-microsecond Latency):通过 FPGA 硬件解包行情与微波专线争夺 1-Tick 盘口优势;
- 做市与流动性提供(Market Making):在买一卖一同时挂单赚取半买卖价差(Bid-Ask Spread),承担微观存货风险;
- 高胜率与极低单笔毛利:单笔交易盈亏可能仅有千分之几甚至几厘钱,依赖日交易数万笔的大数定律;
- 中低频量化的应对策略:不与高频做市商在毫秒级微观结构上拼速度,主打中长周期基本面与截面 Alpha。
┌─────────────────────────────────────────────────────────────┐
│ 高频做市商与中低频量化生态位图 │
└──────────────────────────────┬──────────────────────────────┘
│
┌─────────────────────────────┴─────────────────────────────┐
▼ ▼
┌─────────────────────────┐ ┌─────────────────────────┐
│ 高频做市与极速套利 (HFT)│ │中低频多因子/趋势 (Quant)│
├─────────────────────────┤ ├─────────────────────────┤
│ • 延迟: < 1微秒 (FPGA) │ │ • 延迟: 秒级 / 日间 │
│ • 目标: 盘口价差 Spread │ │ • 目标: 宏观与基本面溢价│
│ • 门槛: 千万级硬件投入 │ │ • 门槛: 算法与投研深度 │
└─────────────────────────┘ └─────────────────────────┘国内市场适用性提示:上图为美股式高频做市的一般形态。中国 A 股现货受 T+1 交收、卖出印花税、报撤单收费与监管限制,基本不存在美股式纯高频做市商;国内高频主战场在期货(CTP 柜台)、可转债、ETF 以及融券变相 T+0 等品种,股票现货侧的中低频团队无需对标毫秒级做市。
一、高频做市商 Avellaneda-Stoikov 存货控制数学模型
高频做市商在提供流动性时面临资产价格跳跃的存货风险(Inventory Risk)。最优买卖挂单报价偏离度公式为:
其中 为当前净持仓存货, 为风险厌恶系数。当持有多头存货()时,做市商主动降低报价以加速出清存货。下文代码实现令剩余到期时间 进行简化计算。
import numpy as np
def calculate_as_optimal_quotes(mid_price: float, inventory: int, gamma: float = 0.1, sigma: float = 0.02, kappa: float = 1.5, time_left: float = 1.0) -> dict:
"""
Avellaneda-Stoikov 经典高频做市最优挂单报价模型(合成教学样例,参数估计误差与模型简化风险)
time_left 为剩余到期时间 (T-t): 默认 1.0 即正文声明的简化口径, 复现既有结果;
临近收盘传入更小值(如 0.1)可观察存货惩罚衰减、报价向中间价收敛的动态。
"""
# 保留价与价差均含时间衰减项 (T-t), 由 time_left 参数化
reservation_price = mid_price - inventory * gamma * (sigma ** 2) * time_left
spread = (gamma * (sigma ** 2) + (2.0 / gamma) * np.log(1.0 + gamma / kappa)) * time_left
bid_quote = reservation_price - spread / 2.0
ask_quote = reservation_price + spread / 2.0
return {
'Mid_Price': mid_price,
'Reservation_Price': float(reservation_price),
'Optimal_Bid': float(bid_quote),
'Optimal_Ask': float(ask_quote),
'Spread': float(spread)
}
# 合成场景:中间价 100.0,不同存货水平下的最优报价(模型参数为教学设定,不代表实际市场)
mid_price = 100.0
quotes_neutral = calculate_as_optimal_quotes(mid_price=mid_price, inventory=0, time_left=1.0)
quotes_long = calculate_as_optimal_quotes(mid_price=mid_price, inventory=5, time_left=1.0)
quotes_short = calculate_as_optimal_quotes(mid_price=mid_price, inventory=-5, time_left=1.0)
print("===== Avellaneda-Stoikov 做市报价模型:存货影响 =====")
print(f"中间价: {mid_price:.2f}")
print(f"中性存货(0): 保留价={quotes_neutral['Reservation_Price']:.4f}, 买价={quotes_neutral['Optimal_Bid']:.4f}, 卖价={quotes_neutral['Optimal_Ask']:.4f}, 价差={quotes_neutral['Spread']:.4f}")
print(f"多头存货(+5): 保留价={quotes_long['Reservation_Price']:.4f} (低于中间价,促抛售)")
print(f"空头存货(-5): 保留价={quotes_short['Reservation_Price']:.4f} (高于中间价,促平空)")
print("✅ 存货调节报价逻辑验证完成")===== Avellaneda-Stoikov 做市报价模型:存货影响 =====
中间价: 100.00
中性存货(0): 保留价=100.0000, 买价=99.3546, 卖价=100.6454, 价差=1.2908
多头存货(+5): 保留价=99.9998 (低于中间价,促抛售)
空头存货(-5): 保留价=100.0002 (高于中间价,促平空)
✅ 存货调节报价逻辑验证完成二、高频微观撮合与订单流毒性(VPIN)检测
量化策略需监测知情交易者发起的有毒订单流(VPIN),在知情交易者砸盘时主动撤单避险。
import numpy as np
def calculate_vpin_toxicity(buy_volume: float, sell_volume: float, bucket_size: float) -> float:
"""
计算订单流毒性指标 VPIN(合成教学样例,历史统计特征不代表未来)
"""
order_imbalance = abs(buy_volume - sell_volume)
vpin = order_imbalance / (bucket_size + 1e-8)
return float(vpin)
# 合成场景:不同订单流不平衡下的 VPIN 值(桶大小固定为 1000)
bucket_size = 1000.0
scenarios = [
("平衡流", 500.0, 500.0),
("轻微买压", 550.0, 450.0),
("强烈卖压", 200.0, 800.0),
]
print("===== 订单流毒性指标 VPIN 计算 =====")
print(f"桶大小 (bucket_size): {bucket_size}")
for desc, buy_vol, sell_vol in scenarios:
vpin_val = calculate_vpin_toxicity(buy_volume=buy_vol, sell_volume=sell_vol, bucket_size=bucket_size)
imbalance = buy_vol - sell_vol
print(f"{desc}: 买量={buy_vol:.0f}, 卖量={sell_vol:.0f}, 净额={imbalance:+.0f}, VPIN={vpin_val:.4f}")
print("✅ VPIN 值随订单不平衡度单调递增")===== 订单流毒性指标 VPIN 计算 =====
桶大小 (bucket_size): 1000.0
平衡流: 买量=500, 卖量=500, 净额=+0, VPIN=0.0000
轻微买压: 买量=550, 卖量=450, 净额=+100, VPIN=0.1000
强烈卖压: 买量=200, 卖量=800, 净额=-600, VPIN=0.6000
✅ VPIN 值随订单不平衡度单调递增📝 动手练一练
编写 Python 测试脚本,模拟高频做市商在不同存货状态下的报价偏移与 VPIN 毒性测算:
import numpy as np
def calculate_as_optimal_quotes(mid_price: float, inventory: int, gamma: float = 0.1, sigma: float = 0.02, kappa: float = 1.5, time_left: float = 1.0) -> dict:
reservation_price = mid_price - inventory * gamma * (sigma ** 2) * time_left
spread = (gamma * (sigma ** 2) + (2.0 / gamma) * np.log(1.0 + gamma / kappa)) * time_left
bid_quote = reservation_price - spread / 2.0
ask_quote = reservation_price + spread / 2.0
return {
'Mid_Price': mid_price,
'Reservation_Price': float(reservation_price),
'Optimal_Bid': float(bid_quote),
'Optimal_Ask': float(ask_quote),
'Spread': float(spread)
}
def calculate_vpin_toxicity(buy_volume: float, sell_volume: float, bucket_size: float) -> float:
order_imbalance = abs(buy_volume - sell_volume)
vpin = order_imbalance / (bucket_size + 1e-8)
return float(vpin)
# 合成高频做市与微观结构测试场景(模型与指标均为教学简化,不构成交易建议)
mid = 100.0
quotes_long_inv = calculate_as_optimal_quotes(mid_price=mid, inventory=5, gamma=0.1, sigma=0.02)
quotes_short_inv = calculate_as_optimal_quotes(mid_price=mid, inventory=-5, gamma=0.1, sigma=0.02)
vpin = calculate_vpin_toxicity(buy_volume=800, sell_volume=200, bucket_size=1000)
print("================ 高频做市机制与微观结构测试 ================")
print(f"多头存货(+5)做市中间价偏离: {quotes_long_inv['Reservation_Price']:.4f} (主动下移促抛售)")
print(f"空头存货(-5)做市中间价偏离: {quotes_short_inv['Reservation_Price']:.4f} (主动上移促平空)")
print(f"当前市场订单流毒性 VPIN : {vpin:.4f} (知情交易者占比高)")
assert quotes_long_inv['Reservation_Price'] < mid, "存货调节报价逻辑异常!"
print("✅ 高频做市原理与存货风险控制验证 PASS")
print("==========================================================")运行结果输出:
================ 高频做市机制与微观结构测试 ================
多头存货(+5)做市中间价偏离: 99.9998 (主动下移促抛售)
空头存货(-5)做市中间价偏离: 100.0002 (主动上移促平空)
当前市场订单流毒性 VPIN : 0.6000 (知情交易者占比高)
✅ 高频做市原理与存货风险控制验证 PASS
==========================================================👉 点击查看解析
暂无具体练习内容,无法提炼解析。
本章小结
- 客观理解高频交易本质:高频做市商是市场的流动性提供者与微观套利者,依赖微秒级算法与存货平衡获利。
- 避免陷入军备竞赛死胡同:中小型量化团队应主攻低频 Alpha 与多资产策略,无需盲目投入重资购买 FPGA 硬件。
- 监控订单流毒性防踩坑:通过 VPIN 等微观指标识别市场知情交易异动,在极端单边来临时及时撤回被动挂单。
📋 行动清单 (Action Checklist)
- 运行高频做市仿真代码,测试不同波动率 对买卖报价宽度的影响;
- 编写基于成交量分布的订单流不平衡度(Order Flow Imbalance)计算脚本;
- 预习下一节,掌握如何科学客观地评价实盘量化策略的真实性能。
—— 小象教研组
配套资料 · 直接下载
课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。
- 下载第10章课件:实盘中的细节问题讨论PDF · 1.7MB