第 02 课:金融市场与交易基础
如果你的 Agent 不懂订单簿、滑点和市场冲击,它就只是一个会写作文的机器。
一个昂贵的教训
一位量化新手开发了一个看起来很赚钱的策略:回测年化收益 80%,夏普比率 2.0。他兴奋地开始实盘。
第一周,策略信号说"买入 10,000 股某中小市值股票 XYZ"(日均成交量约 50 万股),他用市价单照做了。回测预期成本是 $250,000($25 × 10,000 股)。
实际成交价?$253,500。
他亏了 $3,500 还没开始赚钱。
发生了什么?
- 滑点:他的市价单"吃掉"了订单簿上的多档报价,均价比预期高了 $0.30/股(滑点成本 $3,000)
- 手续费:佣金 + SEC 费用 ≈ $50
- 市场冲击:他的大单占日均成交量的 2%,引起了其他交易者的注意,价格被进一步抬高(额外成本 ~$450)
三个月后,策略的实盘收益比回测低了 40%。不是策略不好——是他没算对成本。
教训:流动性差的标的 + 大订单 = 滑点放大。这就是为什么专业量化会把订单拆成小单执行。
这一课的目标:让你的 Agent 理解真实市场是如何运作的,避免这种"回测赚钱、实盘亏钱"的惨剧。
2.1 市场类型
不同市场的特点
| 市场 | 交易时间 | 杠杆 | 做空 | 适合策略 |
|---|---|---|---|---|
| 股票 | A股 9:30-11:30, 13:00-15:00;美股 9:30-16:00 ET | 融资融券有限 | 受限 | 多因子、事件驱动 |
| 期货 | 接近 24 小时 | 高(5-20倍) | 天然支持 | CTA、套利 |
| 外汇 | 24 小时(周末除外) | 受监管限制(美国≤50:1,欧盟≤30:1) | 天然支持 | 趋势跟随、套息 |
| 加密货币 | 7×24 小时 | 交易所自定(1-100倍) | 天然支持 | 高频、跨所套利 |
注意:外汇杠杆在 2018 年后受到严格监管——美国 NFA 限制为 50:1(主要货币对),欧盟 ESMA 限制为 30:1。离岸经纪商可能提供更高杠杆,但风险和监管保护都不同。
对 Agent 的影响:
- 加密货币 7×24 → Agent 必须全天候运行,需要更强的自动化
- 期货高杠杆 → Risk Agent 的止损逻辑必须更严格
- A股 T+1(普通股票当日买入次日才能卖,部分 ETF 除外)→ Execution Agent 需要考虑隔夜风险
一级市场 vs 二级市场
| 一级市场 | 二级市场 | |
|---|---|---|
| 定义 | 公司首次发行证券(IPO、增发) | 投资者之间买卖已发行证券 |
| 参与者 | 机构为主、散户打新 | 所有投资者 |
| 量化机会 | 打新策略、定增套利 | 绝大多数量化策略 |
本课程聚焦二级市场——这是量化交易的主战场。
交易所与撮合机制
不管是美股、A股还是加密货币,交易最终都汇聚到撮合引擎 (Matching Engine)。
交易所不是你的对手盘,它只是"媒婆",通过规则撮合买卖双方:
撮合规则(大多数交易所):
1. 价格优先:出价高的买单优先成交
2. 时间优先:同价格下,先到的订单优先成交
多智能体视角:
- Execution Agent:必须熟悉撮合逻辑,决定用市价单还是限价单
- Research Agent:通过成交数据识别大资金流向
2.2 交易的基本单位
标的 (Asset)
标的是你交易的对象。不同标的有不同的代码规范:
| 市场 | 标的示例 | 代码格式 |
|---|---|---|
| A股 | 贵州茅台 | 600519.SH |
| 美股 | Apple | AAPL |
| 加密货币 | 比特币 | BTC/USDT |
| 期货 | 沪深300股指期货 | IF2401 |
时间尺度:Tick → K线
量化系统处理数据时,有不同的颗粒度:
Tick 数据(最细)
↓ 聚合
分钟 K 线(1min, 5min, 15min)
↓ 聚合
日线 / 周线 / 月线(最粗)
Tick 数据:每一笔成交、每一档报价的变化。高频策略必需,存储成本高。
OHLCV (K线):将 Tick 聚合后的标准格式:
- Open (开盘价)
- High (最高价)
- Low (最低价)
- Close (收盘价)
- Volume (成交量)
订单簿 (Order Book)
订单簿显示市场"深度"——在不同价格上有多少人在排队:
Spread (买卖价差) = Best Ask - Best Bid = $185.01 - $184.99 = $0.02
- 价差越小 → 流动性越好 → 交易成本越低
- 价差越大 → 流动性越差 → 滑点风险越高
2.3 交易成本的真实影响
回测年化 50%,实盘亏钱?交易成本是罪魁祸首。
滑点 (Slippage)
回测假设你能以最优价买入,但实盘时:
你要买 1000 股 AAPL,订单簿如下:
$185.01 - 200 股 ← 你先吃掉这 200 股
$185.05 - 500 股 ← 再吃掉这 500 股
$185.10 - 300 股 ← 最后吃掉这 300 股
实际均价 = (185.01×200 + 185.05×500 + 185.10×300) / 1000 = $185.057
预期价格 = $185.01
滑点 = $0.047 / 股 = 总计 $47
手续费:累积效应
看似微小的手续费,高频交易会被放大:
# 假设每笔交易手续费 0.1%,本金 $100,000
fee_rate = 0.001
principal = 100_000
trade_size = 10_000 # 每笔交易 $10,000(本金的 10%)
trades_per_day = 50 # 每天 50 笔交易
trading_days = 250
# 年化手续费成本(相对本金)
daily_fee = fee_rate * trade_size * trades_per_day # 每天手续费
annual_fee = daily_fee * trading_days # 年化总手续费
annual_fee_rate = annual_fee / principal
print(f"年化手续费成本: {annual_fee_rate:.1%}") # 输出: 125.0%
年化 125% 的手续费成本——这意味着你的策略年化收益必须超过 125% 才能盈利!这就是为什么高频策略对手续费极其敏感。
关键洞察:0.1% 的手续费看似微小,但 50 笔/天 × 250 天 = 12,500 笔交易,累积效应惊人。
市场冲击 (Market Impact)
你的大单本身会改变市场。平方根定律估算:
市场冲击 ≈ Y × σ × √(Q/V)
Y = 常数(通常 0.5-1.0)
σ = 日波动率
Q = 你的下单量
V = 日均成交量
def estimate_market_impact(order_size, daily_volume, daily_volatility, Y=0.5):
"""估算市场冲击成本"""
participation = order_size / daily_volume
impact = Y * daily_volatility * (participation ** 0.5)
return impact
# 示例:买入占日均成交量 1% 的订单
impact = estimate_market_impact(
order_size=1_000_000,
daily_volume=100_000_000,
daily_volatility=0.02
)
print(f"预估市场冲击: {impact:.2%}") # 输出: 0.10%
成本汇总
| 成本类型 | 典型范围 | 谁最受影响 |
|---|---|---|
| 滑点 | 0.01% - 0.5% | 大单、低流动性标的 |
| 手续费 | 0.01% - 0.1% / 笔 | 高频策略 |
| 市场冲击 | 0.05% - 1%+ | 大资金、小市值标的 |
多智能体视角:Execution Agent 的核心职责就是最小化这三项成本。
📝 纸上练习:你的策略真的赚钱吗?
场景:你开发了一个美股日内策略,回测参数如下:
| 参数 | 数值 |
|---|---|
| 策略本金 | $100,000 |
| 回测年化收益 | 35% |
| 平均每日交易次数 | 20 次(买入+卖出各算一次) |
| 平均每笔交易金额 | $50,000(本金的 50%) |
| 券商佣金 | $0 (免佣券商,但有 PFOF) |
| SEC 费用 | 0.00278% (卖出时,2024 年费率) |
| 平均滑点 | 0.03% |
| 交易天数 | 252 天/年 |
提示:注意单笔交易额 $50,000 占本金 $100,000 的 50%——这意味着策略使用了相当大的仓位。
问题:考虑交易成本后,实盘年化收益会是多少?
逐步计算:
Step 1: 计算单笔交易成本
单笔滑点成本 = $50,000 × 0.03% = $____
单笔 SEC 费用 = $50,000 × 0.00278% = $____(仅卖出)
Step 2: 计算日均成本
日均滑点 = $____ × 20 次 = $____
日均 SEC = $____ × 10 次(卖出) = $____
日均总成本 = $____
Step 3: 计算年化成本
年化成本 = $____ × 252 天 = $____
交易总额 = $50,000 × 20 × 252 = $252,000,000
年化成本率 = $____ / $252,000,000 = ____%
Step 4: 计算实盘收益
实盘年化收益 = 35% - ____% = ____%
答案(先自己算,再对照):
点击展开答案
关键概念澄清:
- 本金:你投入的资金,如 $100,000
- 单笔交易额:每次买卖的金额,如 $50,000
- 总交易额:单笔 × 交易次数 × 天数(含杠杆和换手影响)
- 换手率:总交易额 ÷ 本金,表示资金周转次数
计算过程:
- 单笔滑点 = $50,000 × 0.03% = $15
- 单笔 SEC = $50,000 × 0.00278% = $1.39
- 日均滑点 = $15 × 20 = $300
- 日均 SEC = $1.39 × 10 = $13.9
- 日均总成本 = $313.9
- 年化总成本 = $313.9 × 252 = $79,103
成本率的两种计算(容易混淆!):
| 计算方式 | 公式 | 结果 | 含义 |
|---|---|---|---|
| 相对总交易额 | $79,103 ÷ $252,000,000 | 0.031% | 每笔交易的成本占比 |
| 相对本金 | $79,103 ÷ $100,000 | 79.1% | 成本侵蚀了多少本金 |
其中:年化总交易额 = $50,000 × 20次 × 252天 = $252,000,000(换手率 = 2520 倍!)
最终答案:
- 如果策略本金是 $100,000:
- 年化成本 相对本金 = $79,103 / $100,000 = 79.1%
- 实盘年化收益 = 35% - 79.1% = -44.1%
结论:这个策略实盘会大亏! 回测时忽略的 0.03% 滑点(相对交易额很小),在高换手率下累积成 79%(相对本金)的致命伤。
反思问题:
- 如果滑点降到 0.01%,策略还能盈利吗?
- 如果交易频率降到每天 5 次,情况会怎样?
- 这对你设计策略有什么启示?
2.4 策略生命周期
一个完整的交易从产生到结束,在多智能体系统中的流转:
具体流程:
-
信号生成 (Signal Agent)
- "AAPL 的 MACD 出现底背离,建议做多"
-
风控审核 (Risk Agent)
- "当前总仓位 60%,单笔最大 10%,这笔只能下 10%"
- 可能拒绝、缩小仓位、或通过
-
下单执行 (Execution Agent)
- "订单太大,拆成 10 个小单,每 30 秒发一个,用 TWAP 算法"
-
成交监控 (Monitor Agent)
- "第 5 个小单滑点超过阈值,暂停后续执行"
- 实时反馈执行质量
-
持仓管理与平仓 (Position Agent)
- "持仓盈利 5%,触发移动止盈"
- "持仓亏损 2%,触发止损平仓"
- 闭环完成
每个环节都可以是独立的专家 Agent,这就是多智能体架构的优势:专业分工、责任清晰、便于调试。
本课交付物
完成本课后,你将获得:
- 对市场结构的理解 - 知道不同市场(股票/期货/加密)的特点和限制
- 交易成本意识 - 能估算滑点、手续费、市场冲击对策略的影响
- 策略生命周期视角 - 理解从信号到平仓的完整闭环
✅ 验收标准
用以下检查点确认你真正理解了本课内容:
| 检查项 | 验收标准 | 自测方法 |
|---|---|---|
| 成本计算 | 能独立完成纸上练习,误差 < 10% | 重新计算一遍,不看答案 |
| 订单簿理解 | 能解释为什么大单会产生滑点 | 画出订单簿,模拟 1000 股市价单的执行 |
| 市场差异 | 能说出 A股 vs 美股 vs 加密 的 3 个关键差异 | 不看笔记,口述对比 |
| 生命周期 | 能画出策略从信号到平仓的流程图 | 白纸画图,标注每个 Agent 的职责 |
如果你能做到:
- ✅ 纸上计算准确 → 你具备了成本意识
- ✅ 画出订单簿执行过程 → 你理解了市场微观结构
- ✅ 画出完整生命周期 → 你具备了系统思维
如果你做不到:
- ❌ 重新阅读相关章节
- ❌ 用具体数字(如 AAPL $185)重新走一遍例子
- ❌ 在延伸阅读中找到更详细的解释
本课要点回顾
- 理解不同市场(股票/期货/外汇/加密)的特点和对策略的影响
- 掌握 OHLCV 和订单簿的基础结构
- 认识交易成本三大杀手:滑点、手续费、市场冲击
- 理解策略生命周期的完整闭环:信号 → 风控 → 执行 → 监控 → 平仓
延伸阅读
- 背景知识:交易所与订单簿机制 - 深入理解 L1/L2/L3 数据的区别
- 背景知识:高频市场微结构 - 如果你想和 HFT 竞争,必读
- 背景知识:加密货币交易特点 - 7×24 市场的独特挑战
下一课预告
第 03 课:数学与统计基础
市场在动,但怎么量化这些变动?为什么我们用"收益率"而不是"价格"?什么是"厚尾分布",为什么正态分布假设会让你爆仓?下一课揭晓。