第 02 章 期货市场机制
学习目标
读完本章,你应当能够:
- 说出一份期货合约必须规定的要素(资产、合约规模、交割地点、交割时间、报价、涨跌停与持仓限额),理解"交割可能性"如何让期货价在交割期收敛于现货价。
- 手算逐日盯市(marking to market)下的保证金账户:初始保证金、维持保证金、追加保证金与变动保证金,并能写成程序。
- 解释清算所、中央对手方(CCP)、双边清算与 ISDA/CSA 抵押品如何控制信用风险,以及 LTCM 为什么在"有抵押"的情况下仍然崩溃。
- 读懂期货行情表中的结算价、成交量、持仓量,识别正常市场与反向市场。
- 区分市价、限价、止损、止损限价、触价(MIT)等指令类型,了解交割流程与现金结算。
- 列出远期与期货的六项差异,并理解逐日结算对盈亏时间分布的影响。
读前导读
这一章在解决什么问题。 本章讲期货的"管道":合约怎么规定、保证金怎么算、清算所怎么挡住违约、行情怎么读、怎么交割。CFA 一级你已经算过初始保证金、维持保证金和追保,这部分可以快读。
本章比 CFA 多出来、对量化真正有用的是三点。第一,把保证金账户写成一条递推公式(今天余额 = 昨天余额 + 今天盈亏 + 追保),这正是回测引擎里期货资金模块的写法。第二,逐日结算让期货的盈亏"按天到账",而远期"到期一次到账"。总额相同,但每天到账的钱可以拿去生息,这一点会在第 05 章导致期货价与远期价理论上不相等,CFA 只说"二者近似相等"。第三,章末代码用厚尾分布检验"按正态分布设保证金"会被击穿多少次,这是你熟悉的 VaR 概念的回测检验。
需要先想起来的数学。
- 求和记号与"错位相消"。 \(\sum_{t=1}^{n}a_t\) 表示 \(a_1+a_2+\dots+a_n\)。若每项是相邻两数之差 \(a_t=F_t-F_{t-1}\),中间各项正负抵消,总和只剩 \(F_n-F_0\)。例:\((1441-1450)+(1438.3-1441)=1438.3-1450=-11.7\)。这解释了为什么逐日盯市的累计盈亏只取决于开仓价和平仓价。见 第 00 册第 07 章 概率中的分析工具。
- 正态分位数与 \(\sqrt{T}\) 规则。 标准正态 99% 分位数约 2.326,99.9% 约 3.090。若日变动标准差为 \(\sigma\) 且各日独立,\(n\) 日变动的标准差是 \(\sigma\sqrt n\)。例:日标准差 3 美元,两日标准差 \(3\sqrt2\approx4.24\),99% 两日最大不利变动约 \(2.326\times4.24\approx9.9\)。这就是 CFA 中 VaR 的平方根法则。
- 对数收益与累加。 对数收益 \(r_t=\ln(F_t/F_{t-1})\) 可以直接相加:\(\ln(F_n/F_0)=\sum r_t\),所以 \(F_n=F_0\exp(\sum r_t)\)。代码里的
np.exp(np.cumsum(r))就是这一行。见 第 00 册第 04 章 级数与收敛。 - \(t\) 分布与厚尾。 自由度为 \(\nu\) 的 \(t\) 分布形状像正态,但尾部更厚;\(\nu\) 越小尾部越厚,\(\nu\to\infty\) 时变回正态。\(\nu>2\) 时其方差为 \(\nu/(\nu-2)\),例如 \(\nu=3\) 时方差为 3,不是 1。
怎么读这一章。 必读:2.3(收敛的套利论证)、2.4.1–2.4.2(保证金演算,建议自己跟着表格算一遍)、2.10(远期与期货盈亏时间分布不同)。2.2、2.6–2.8 是制度细节,浏览,需要时回查。2.9 可以跳过。量化实战的两段代码都值得读懂:第一段是回测记账的模板,第二段是"正态假设低估尾部风险"的直接演示。
2.1 期货合约是如何产生和了结的
期货在交易所交易,条款由交易所标准化;远期在场外交易,可以定制。本章讨论期货市场的"机械结构"——这些制度细节决定了一个期货量化策略在回测中该如何记账、在实盘中会遇到哪些约束。
主要期货交易所有 CME Group(由 CBOT、CME、NYMEX 合并而成)、ICE(InterContinental Exchange)、Eurex、巴西 BM&F BOVESPA、东京金融交易所等。
一张合约的诞生。 6 月 5 日,纽约的一位交易者让经纪人买入 5,000 蒲式耳 9 月交割的玉米,经纪人随即下单买入 1 张 CME 9 月玉米合约(每张恰好 5,000 蒲式耳)。与此同时,堪萨斯的另一位交易者卖出 1 张。双方在某个价格(如 600 美分/蒲式耳)成交——过去由场内交易员见面议价,现在由计算机撮合。前者持多头,后者持空头。价格由供求决定:卖方多则价格下跌、吸引新的买方,反之亦然。
平仓。 绝大多数期货合约不会进入交割。交易者在交割期之前做一笔反向交易平仓(closing out):比如纽约交易者 7 月 20 日卖出 1 张 9 月合约,原头寸就被对冲掉了,总盈亏由开仓日到平仓日期货价格的变化决定。虽然交割很少发生,但正是最终交割的可能性把期货价与现货价联系在一起。
商业快照:意外交割。 某金融机构的新员工替客户平掉 CME 活牛期货(每张 40,000 磅)多头时,误下了"买入"而不是"卖出",结果变成 2 张多头,发现时合约已停止交易。机构只能等空头发出交割通知,最后在 2,000 英里外收到活牛;当地每周二拍卖,牛要到下周二才能转卖,员工只好安排养牛一周。——对量化系统而言,这就是"临近交割月必须强制平仓或移仓"的现实理由。
2.2 合约规格
交易所必须规定:资产、合约规模、交割地点、交割时间。当允许多种等级或地点时,一般由空头选择(1995 年 CME 活牛期货曾给过买方部分选择权,是少见的例外)。空头准备交割时向交易所提交交割意向通知(notice of intention to deliver),注明所选等级与地点。
- 资产。 商品质量参差不齐,须规定可接受的等级。ICE 橙汁期货要求美国 A 级冷冻浓缩橙汁,糖度(Brix)不低于 62.5 度;CME 玉米标准等级为 2 号黄玉米,可用其他等级替代并按规则调价——1 号黄玉米每蒲式耳加 1.5 美分,3 号减 1.5 美分。金融资产一般定义明确(日元不需要规定等级),但 CBOT 国债期货可以交割期限 15–25 年的任何美国国债,交易所用公式按息票和期限调整价格(原书第 6 章)。
- 合约规模。 太大,小额对冲者和投机者无法参与;太小,每张合约的交易成本太高。农产品每张价值约 $1–2 万,金融期货大得多(CME 国债期货交割面值 $100,000)。交易所还推出"迷你"合约:Mini Nasdaq 100 为指数 × 20,常规合约为指数 × 100。
- 交割地点。 对运输成本高的商品尤其重要。ICE 橙汁在佛罗里达、新泽西、特拉华的许可仓库交割;多个地点可选时,价格按空方所选地点调整,离主产地越远价格越高。
- 交割月份。 合约以交割月命名,交割期通常是整个月。CME 玉米交割月为 3、5、7、9、12 月。任何时候都交易最近交割月及其后若干个月份的合约;交易所规定合约的开始交易日和最后交易日,后者通常比最后可交割日早几天。
- 报价。 如美国原油期货以美元和美分报价;国债期货以美元和 1/32 美元报价。
- 涨跌停与持仓限额。 每日价格变动限额(daily price limit):跌到限额称 limit down,涨到限额称 limit up,任一方向触及称 limit move,通常当日停止交易。其目的是防止投机导致过度波动,但在标的确实快速变化时也会人为阻碍交易,利弊有争议。持仓限额(position limits)规定投机者可持有的最大合约数,防止其过度影响市场。
2.3 期货价格向现货价格收敛
临近交割期,期货价收敛于标的现货价;进入交割期时两者相等或非常接近(原书图 2.1:期货价可能从上方向下收敛,也可能从下方向上收敛)。
论证是一个干净的套利:若交割期内期货价 > 现货价,就 (1) 卖出期货,(2) 买入资产,(3) 交割,必然赚到价差。大家都这样做,期货价被压下来。反过来,若期货价 < 现货价,想得到资产的企业会买入期货等着交割,期货价被推上去。两种力量使收敛成立。至于交割期之前期货在现货之上还是之下,由第 05 章的持有成本模型决定。
白话解释:这里的"收敛"是一个带摩擦的结论,不是严格的等式。套利要付运输、仓储、交易成本,还要承担等级与地点由空头选择的不确定性,所以实际得到的是"期货价与现货价的差不超过套利成本",即被夹在一个区间里。区间外有人套利,区间内没人动手。这也是为什么第 03 章会专门讨论基差(现货价减期货价):到期时基差接近零,但在平仓那一刻不一定是零,这就是对冲者面对的"基差风险"。
2.4 保证金账户:期货的心脏
交易所的关键作用之一是组织交易以避免违约,手段就是保证金账户和逐日结算(daily settlement,又称 marking to market,逐日盯市)。
2.4.1 机制
例。 投资者买入 2 张 COMEX 12 月黄金期货,价格 $1,450/盎司,每张 100 盎司,共 200 盎司。初始保证金(initial margin)每张 $6,000,共 $12,000。每个交易日收盘后,账户按当日盈亏调整:
- 第 1 天期货价跌 $9 到 $1,441,亏 \(200\times9=\$1{,}800\),余额降为 $10,200;
- 若当天涨到 $1,459,余额则升为 $13,800。
交易在成交当日收盘时首次结算,之后每日收盘结算。这不只是经纪人与客户之间的安排:多头账户减少 $1,800 时,其经纪人要向清算所付 $1,800,清算所再转给空头的经纪人。
投资者可以提取超过初始保证金的部分。维持保证金(maintenance margin)略低于初始保证金;余额跌破它,就会收到追加保证金通知(margin call),必须在次日结束前把余额补回初始保证金水平,补入的资金称为变动保证金(variation margin)。不补,经纪人就强制平仓——本例中即卖出 2 张 12 月黄金期货,把原头寸对冲掉。
计算规则可以写成两行:
其中 \(F_t\) 是第 \(t\) 天的结算价(settlement price)。
推导拆解:把第一个式子从第 1 天加到第 \(n\) 天(\(F_0\) 记开仓价): \(\sum_{t=1}^{n}\text{当日盈亏}_t=Q\big[(F_1-F_0)+(F_2-F_1)+\dots+(F_n-F_{n-1})\big]=Q\,(F_n-F_0)\),\(Q\) 为头寸数量。 这一步只是把括号展开:每个中间价格 \(F_1,\dots,F_{n-1}\) 都一正一负出现一次,互相抵消,叫"错位相消"(telescoping)。 结论有两层。第一,不计利息时,期货的总盈亏和交割价为 \(F_0\) 的远期完全一样,只由开仓价和平仓价决定,中间怎么波动都不影响总额。表 2.1 中累计亏损 \((1426.90-1450)\times200=-4{,}620\) 就是这么来的。第二,中间的波动影响的是现金流的时间和路径:哪天要交多少追保、钱放在账户里能赚多少利息。总额相同、时间不同,这正是 2.10 节和第 05 章"期货价 ≠ 远期价"的根源。 第二个式子是一条递推:要算第 \(t\) 天的余额,需要第 \(t-1\) 天的余额。程序里用一个循环、每天更新一次变量即可,下面代码中的
bal += pnl就是它。
2.4.2 原书表 2.1 的完整演算
初始保证金 $12,000,维持保证金 $9,000(每张 $4,500),第 0 天按 $1,450 开仓,第 16 天按 $1,426.90 平仓:
| 日 | 结算价 | 当日盈亏 | 累计盈亏 | 余额 | 追保 |
|---|---|---|---|---|---|
| 1 | 1,441.00 | −1,800 | −1,800 | 10,200 | |
| 2 | 1,438.30 | −540 | −2,340 | 9,660 | |
| 3 | 1,444.60 | +1,260 | −1,080 | 10,920 | |
| 6 | 1,436.20 | −780 | −2,760 | 9,240 | |
| 7 | 1,429.90 | −1,260 | −4,020 | 7,980 | 4,020 |
| 8 | 1,430.80 | +180 | −3,840 | 12,180 | |
| 9 | 1,425.40 | −1,080 | −4,920 | 11,100 | |
| 11 | 1,411.00 | −3,420 | −7,800 | 8,220 | 3,780 |
| 12 | 1,411.00 | 0 | −7,800 | 12,000 | |
| 15 | 1,423.00 | +1,380 | −5,400 | 14,400 | |
| 16 | 1,426.90 | +780 | −4,620 | 15,180 |
第 7 天余额 $7,980,比维持水平低 $1,020,追保 $4,020 把余额补回 $12,000(假设第 8 天收盘前到账);第 11 天再追保 $3,780。第 16 天平仓,累计亏损 \((1426.90-1450)\times200=-\$4{,}620\)。(原书正文此处把平仓价误印为 $1,226.90,按累计亏损反算应为 $1,426.90。)第 8、13、14、15 天有超额保证金,假设未提取。表中省略的第 4、5、10、13、14 天见下面"量化实战"的完整输出。
2.4.3 更多细节
- 利息与充抵。 多数经纪人对保证金余额付息,利率有竞争力的话,保证金不构成真实成本。初始保证金(不含后续追保)可以用证券充抵:国库券约按面值 90% 计,股票约按市值 50% 计。
- 逐日结算 = 每天重新签约。 远期在到期日一次结算;期货每天把盈亏计入账户,合约价值随即归零,等价于每天按新价格平仓并重新签一份合约。
- 最低保证金由波动性决定。 清算所规定初始与维持保证金的最低水平(经纪人可以要求更高),标的波动越大保证金越高;维持保证金通常约为初始保证金的 75%。
- 按交易目的区别对待。 真实对冲者(bona fide hedger,例如生产该商品的公司)被认为违约风险较低,保证金要求低于投机者;日内交易(day trade)和跨期价差交易(spread transaction,同时买入一个月份、卖出另一个月份的同一资产合约)的保证金要求通常更低。
- 多空对称。 期货的多空保证金要求相同,做空与做多一样容易;现货市场则不对称,做空需要借券(第 05 章)。
2.4.4 清算所与会员
清算所是期货交易的中介,保证各方履约。非会员经纪人须通过会员清算,并向会员缴保证金。清算所跟踪当日所有交易以计算每个会员的净头寸。会员向清算所缴纳初始保证金(也称清算保证金,clearing margin),没有维持保证金一说,每日亏损交变动保证金、盈利收取。初始保证金通常按净头寸计算:会员的两个客户分别多 20 张、空 15 张,按 5 张计。会员还须向担保基金(guaranty fund)出资,在某会员未能缴变动保证金且平仓有损失时动用。
信用风险的实际表现。 保证金制度的全部目的是保证盈利方拿到钱,整体非常成功,主要交易所的合约始终得到履行。1987 年 10 月 19 日 S&P 500 跌超 20%,持 S&P 500 期货多头的人保证金变负,未追保者被平仓后仍欠经纪人钱,部分人赖账导致一些经纪人破产,但清算所资金充足,所有空头都拿到了钱。
2.5 场外市场如何借鉴保证金制度
场外市场传统上有信用风险:A、B 之间有多笔交易,若 A 违约时这些交易对 B 的净值为正,B 就会受损。场外市场借鉴交易所的做法来降低它。
中央对手方(CCP)。 CCP 是标准场外交易的清算所。会员缴初始保证金和每日变动保证金,并向担保基金出资。A、B 成交后提交 CCP,CCP 接受后就成为双方的对手方:若 A 一年后以约定价向 B 买资产,CCP 就同意 (1) 一年后以约定价向 B 买入,(2) 以约定价卖给 A——它承担了双方的信用风险。危机后的立法要求金融机构之间的多数标准场外交易经 CCP 清算。
双边清算。 不经 CCP 的交易双边清算,双方通常签署 ISDA 主协议(master agreement),并常附 信用支持附件(credit support annex, CSA),要求一方或双方提供抵押品,类似保证金。典型 CSA 每日估值:若一天内交易对 A 的价值增加 \(X\),B 须向 A 提供价值 \(X\) 的抵押品(\(X\) 即变动保证金)。传统 CSA 很少要求初始保证金;2012 年新规要求金融机构之间的双边交易提供初始与变动保证金,初始保证金通常隔离存放在第三方。
期货与场外的一个记账差别。 现金形式的初始保证金通常计息;期货的每日变动保证金不计息,因为它本身就是逐日结算的盈亏;场外交易(CCP 或双边)通常不逐日结算,所以现金形式的变动保证金计息。保证金或抵押品常可用证券充抵(期货的变动保证金必须是现金),证券市值打折后计入,折扣称为折扣率(haircut)。
原书图 2.2 对比了两种网络:(a) 8 个参与者之间的众多双边协议;(b) 全部通过单一 CCP 的星形结构。实际市场两者兼有,CCP 对信用风险的净影响取决于 CCP 的数量和经其清算的交易比例(Duffie & Zhu 2011)。
商业快照:LTCM 巨亏。 LTCM 是 1990 年代中期成立的对冲基金,对双边交易始终提供抵押品。它的核心策略是收敛套利(convergence arbitrage):找同一公司发行、承诺相同支付的两只债券 X 和 Y,X 流动性较差,市场为流动性定价,X 价低于 Y;买 X、卖空 Y,等待价格收敛。利率变化时两只债券同向同幅变动,X 上付出的抵押与 Y 上收到的大致相抵。1998 年 8 月俄罗斯债务违约引发"逃往优质资产"(flight to quality),流动性溢价急剧扩大:买入的债券跌、卖空的债券涨,两边都要交抵押品,高杠杆迫使平仓,亏损约 $40 亿。若杠杆低一些,它本可以熬到价差回归。教训:收敛策略的致命风险不在于"最终是否收敛",而在于收敛之前的保证金现金流。
2.6 读懂期货行情
原书表 2.2 是 2013 年 5 月 14 日中午 CME Group 商品期货报价,列包括开盘价、最高、最低、前一日结算价、最新成交价、变化、成交量。例如 2013 年 6 月黄金:开盘 1429.5、最高 1444.9、最低 1419.7、前结算 1434.3、最新 1425.3、变化 −9.0、成交 147,943。
- 结算价用于计算每日盈亏和保证金,通常取交易时段结束前的最后成交价。若 6 月黄金当日结算价为 1,425.3,多头 1 张当日亏 \((1425.3-1434.3)\times100=-\$900\),空头赚 $900。
- 成交量(trading volume)是一天内成交的合约数;持仓量(open interest)是未平仓合约数,等于多头数也等于空头数。日内交易者多时,当日成交量可能大于日初或日末持仓量。
- 期限结构形态。 结算价随期限递增称正常市场(normal market),递减称反向市场(inverted market)。表 2.2 中黄金、小麦、活牛为正常;原油(2013 年 6 月前结算 95.17,2015 年 12 月 86.99)整体递减;玉米(2013-07 655.50,2013-12 539.25,2014-07 564.25)部分正常、部分反向。术语 contango 与 backwardation 有时也指期货价随期限递增或递减,但严格含义是期货价相对预期未来即期价的高低(第 05 章)。
2.7 交割
交割流程。 何时交割由空头(设为 A)决定:A 的经纪人向清算所发出交割意向通知,注明张数,商品还要注明等级和地点。交易所随后选择一个多头来接收——不一定是当初的对手 B(B 可能早已平仓给 C,C 又平给 D……),通常的规则是交给持有最早未平仓多头的一方。多头必须接受;若通知可转让,多头有很短时间(通常半小时)找到愿意接收的其他多头替代。
商品交割通常是接受仓单(warehouse receipt)并立即付款,接收方承担仓储成本(牲畜还有饲养成本);金融期货通常电汇交割。支付价格通常是最近结算价,再按等级、地点调整。从发通知到交割一般 2–3 天。
三个关键日。 首个通知日(first notice day)、最后通知日(last notice day)、最后交易日(last trading day,通常比最后通知日早几天)。多头为避免交割,应在首个通知日前平仓。
现金结算。 股指期货等合约交割标的不便或不可能(S&P 500 期货若实物交割要交 500 只股票),采用现金结算(cash settlement):在预定日所有未平仓合约按当日开盘或收盘时的标的现货价宣布平仓。CME S&P 500 期货的预定日是交割月第三个星期五,按开盘价结算。
2.8 交易者与指令类型
执行交易的人分两类:期货佣金商(futures commission merchant, FCM)按客户指令交易收佣金;场内自营交易者(locals)为自己的账户交易。投机者按持仓期限又分为抢帽子者(scalpers,持仓几分钟,捕捉极短期趋势)、日内交易者(day traders,不持仓过夜)、头寸交易者(position traders,长期持仓)。
指令类型是执行系统的基本词汇:
| 指令 | 规则 | 用途与风险 |
|---|---|---|
| 市价单 market order | 立即以市场最优价成交 | 成交确定,价格不确定 |
| 限价单 limit order | 只以指定价或更优价成交(买入限价 $30 只在 ≤$30 成交) | 价格确定,可能永不成交 |
| 止损单 stop order | 出现指定价或更不利价时变为市价单(市价 $35 时挂 $30 卖出止损) | 限制损失;触发后按市价成交,有滑点 |
| 止损限价单 stop–limit | 触及止损价后变为限价单(市价 $35,买入止损 $40、限价 $41) | 控制滑点,但可能不成交;两价相同称 stop-and-limit |
| 触价市价单 MIT(board order) | 成交价达到指定价或更有利价后变为市价单 | 有利变动足够大时锁定利润 |
| 酌情指令 discretionary / market-not-held | 按市价单处理,但经纪人可酌情延迟 | 争取更好价格 |
对持多头准备平仓的人而言,止损单用于在不利变动时限制损失,MIT 用于在有利变动足够大时兑现利润。时间条件方面:默认当日有效(day order);时段指令(time-of-day);长期有效(open order / good-till-canceled),直到成交或该合约交易结束;全部成交否则撤销(fill-or-kill),收到后必须立即成交,否则作废。
2.9 监管、会计与税务(简介)
这部分与量化研究关系较弱,了解其存在即可,需要时回原书。
监管。 美国期货市场由 1974 年成立的商品期货交易委员会(CFTC)联邦监管:确保价格公开、超过一定规模的持仓须报告、为向公众提供期货服务的人发执照、处理投诉与纪律处分。1982 年成立的全国期货协会(NFA)是行业自律组织。2010 年《多德—弗兰克法案》扩大了 CFTC 职责,负责标准场外衍生品在 SEF 交易、经 CCP 清算的规则。典型违规是逼仓(corner the market):建立巨量多头并控制标的供应,使空头难以交割、被迫高价平仓——最著名的是亨特兄弟 1979–80 年逼仓白银,银价从 $6 涨到 $50/盎司。监管手段包括提高保证金、收紧持仓限额、禁止增加投机头寸、强制平仓。1989 年 FBI 卧底调查还揭露了场内交易中的多收费用、利用客户订单信息抢先交易(front running)等行为。
会计。 期货市值变动须在发生时确认,除非符合套期会计(hedge accounting)条件——此时其盈亏与被套期项目在同一期间确认。例:12 月年末的公司 2014 年 9 月买入 2015 年 3 月玉米期货,2015 年 2 月底平仓,价格依次为 650、670(2014 年末)、680 美分/蒲式耳,每张 5,000 蒲式耳。不符合套期:2014 年确认 \(5000\times(6.70-6.50)=\$1{,}000\),2015 年确认 $500;若用于对冲 2015 年 2 月的玉米采购并符合套期会计,$1,500 全部在 2015 年确认。FAS 133(1998)要求所有衍生品按公允价值入表,并大幅收窄套期会计适用(须高度有效、每 3 个月评估),国际准则对应 IAS 39。
税务(美国)。 关键问题是盈亏性质(资本利得还是普通收入)与确认时点。期货头寸一般视为在税年最后一天平仓;非公司纳税人适用"60/40 规则":不论持有期,60% 视为长期、40% 视为短期资本利得。符合税法定义的套期交易豁免,盈亏按普通收入处理。
2.10 远期与期货的比较
原书表 2.3:
| 远期 | 期货 |
|---|---|
| 双方私下签订 | 交易所交易 |
| 非标准化 | 标准化 |
| 通常单一交割日 | 一段交割日期 |
| 到期结算 | 逐日结算 |
| 通常实物交割或最终现金结算 | 通常到期前平仓 |
| 有一定信用风险 | 几乎无信用风险 |
盈亏的时间分布不同。 设 90 天英镑远期汇率 1.5000,同时也是恰好 90 天后交割的期货价。交易者 A 远期做多 £100 万,B 做多 16 张期货(每张 £62,500)。若 90 天后即期为 1.7000,A 在第 90 天一次性获利 $200,000;B 的总获利相同,但分散在 90 天里逐日实现,有些天亏、有些天赚。第 05 章会看到,这一差别使得期货价与远期价在利率随机时理论上略有不同。
金融直觉:为什么"什么时候到账"会影响价格?关键在于盈利当天就能拿去投资,亏损当天就要去借钱补。设想一个资产的价格和利率正相关(如某些股指在加息周期中上涨)。期货多头赚钱的日子往往利率也高,赚到的钱可以按高利率再投资;亏钱的日子利率往往低,补仓的融资成本也低。逐日结算对多头有利,所以市场愿意为期货多头付更高的价格,期货价略高于远期价。相关性为负时则相反。如果利率是确定的(不随机),这种好处与坏处会精确抵消,期货价等于远期价;原书附录对此有证明,第 05 章会说明。这个差别在短期合约上很小,但在长期利率期货上会变得重要(第 06 章的"凸性调整")。
外汇报价惯例。 涉及美元的期货总是报"每单位外币的美元数(或美分数)";远期报价与即期报价方式相同:英镑、欧元、澳元、纽元报为每单位外币美元数,可与期货直接比较;其他主要货币报为每美元外币数。例:加元期货 0.9500 USD/CAD 对应远期报价 \(1/0.9500=1.0526\) CAD/USD。
量化实战
本章内容在量化交易中的用法
- 期货回测的资金模块。 表 2.1 的逻辑就是期货回测引擎的记账核心:按结算价(不是收盘价或最新价)逐日盯市;保证金占用决定可用资金与杠杆;余额跌破维持保证金触发追保,资金不足则强平。很多回测框架只按"价格变化 × 合约乘数"算盈亏,忽略了追保可能在最坏时刻迫使你平仓——这正是 LTCM 与第 03 章德国金属公司失败的机制。
- 换月与连续合约。 合约有最后交易日和首个通知日,系统必须在首个通知日之前移仓;构造主力/连续合约序列时要处理换月跳空(不能把新旧合约价差当成收益),第 03 章的"叠加与展期"会继续讨论。
- 执行建模。 止损单触发后按市价成交,回测中应加入滑点;限价单可能不成交,应建模成交概率。涨跌停时无法交易,回测中触及限额的日子不能假设成交。
- 保证金水平与尾部风险。 原书习题 2.35 要求用历史数据在正态假设下估计 99% 的两日价格变动来设定维持保证金,再回测被击穿的频率——这是 VaR 思想的雏形(本册第 22 章与第 06 册第 07b 章的厚尾建模)。
- 期限结构。 正常/反向市场形态是商品期限结构与展期收益因子的原始数据(第 05 章给出理论解释)。
Python 示例:保证金账户引擎与保证金击穿检验
第一部分把表 2.1 写成一个可复用的函数;第二部分模拟厚尾(自由度 3 的 \(t\) 分布)日收益下的期货价格,用"正态 99% 两日变动"设定保证金,统计实际击穿频率。
白话解释:第二部分代码有几行值得逐一看懂(不需要会写,读懂意图即可)。 第一,
stats.t.rvs(nu, ...) * daily_vol / np.sqrt(nu/(nu-2)):自由度 3 的 \(t\) 分布方差是 \(\nu/(\nu-2)=3\),除以 \(\sqrt3\) 把它的标准差调成 1,再乘 2%,得到"日波动率 2%、但尾部比正态厚"的收益。这样做保证了和正态世界比较时波动率相同,差别只来自分布形状。 第二,F = 80 * np.exp(np.cumsum(r)):把对数收益逐日累加再取指数,得到从 80 出发的价格路径,即 \(F_t=80\exp(r_1+\dots+r_t)\)。 第三,sd_est = np.std(np.diff(F)) * np.sqrt(2):先估计一日价格变动的标准差,再按 \(\sqrt{2}\) 放大成两日,前提是各日独立。 第四,stats.norm.ppf(q):标准正态的 \(q\) 分位数(ppf 是累积分布函数的反函数),99% 时约 2.326。阈值 = 分位数 × 两日标准差,这正是参数法 VaR 的写法。
import numpy as np
import pandas as pd
from scipy import stats
def margin_account(settle, entry, contracts, size, init_m, maint_m, long=True):
"""逐日盯市保证金账户:低于维持保证金即追保至初始保证金(假设次日前补足)。"""
sign = 1 if long else -1
qty = contracts * size
bal, prev, cum, rows = init_m, entry, 0.0, []
for day, p in enumerate(settle, start=1):
pnl = sign * (p - prev) * qty
cum += pnl
bal += pnl
call = init_m - bal if bal < maint_m else 0.0
rows.append((day, p, round(pnl), round(cum), round(bal), round(call)))
bal += call # 追保入金(变动保证金)
prev = p
return pd.DataFrame(rows, columns=["日", "结算价", "当日盈亏", "累计盈亏", "余额", "追保"])
# 原书表2.1:2张COMEX黄金多头,每张100盎司,初始$12,000、维持$9,000
settle = [1441.00, 1438.30, 1444.60, 1441.30, 1440.10, 1436.20, 1429.90, 1430.80,
1425.40, 1428.10, 1411.00, 1411.00, 1414.30, 1416.10, 1423.00, 1426.90]
tab = margin_account(settle, 1450.0, 2, 100, 12_000, 9_000)
print(tab.to_string(index=False))
print("追保合计:", tab["追保"].sum())
# ---- 习题2.35思路:用正态假设设定维持保证金,再看厚尾世界中被击穿的频率 ----
rng = np.random.default_rng(0)
n, nu, daily_vol = 5000, 3, 0.02 # 自由度3的t分布模拟日收益
r = stats.t.rvs(nu, size=n, random_state=rng) * daily_vol / np.sqrt(nu/(nu-2))
F = 80 * np.exp(np.cumsum(r)) # 模拟期货结算价
two_day = F[2:] - F[:-2] # 两日价格变动
sd_est = np.std(np.diff(F)) * np.sqrt(2) # 正态假设下的两日标准差
for q in (0.99, 0.999):
thr = stats.norm.ppf(q) * sd_est # 正态分位数
print(f"正态{q:.1%}阈值={thr:.3f} 多头击穿频率={np.mean(two_day < -thr):.4f} (理论 {1-q:.4f})")
关键输出:
日 结算价 当日盈亏 累计盈亏 余额 追保
1 1441.0 -1800 -1800 10200 0
2 1438.3 -540 -2340 9660 0
3 1444.6 1260 -1080 10920 0
4 1441.3 -660 -1740 10260 0
5 1440.1 -240 -1980 10020 0
6 1436.2 -780 -2760 9240 0
7 1429.9 -1260 -4020 7980 4020
8 1430.8 180 -3840 12180 0
9 1425.4 -1080 -4920 11100 0
10 1428.1 540 -4380 11640 0
11 1411.0 -3420 -7800 8220 3780
12 1411.0 0 -7800 12000 0
13 1414.3 660 -7140 12660 0
14 1416.1 360 -6780 13020 0
15 1423.0 1380 -5400 14400 0
16 1426.9 780 -4620 15180 0
追保合计: 7800
正态99.0%阈值=6.337 多头击穿频率=0.0152 (理论 0.0100)
正态99.9%阈值=8.418 多头击穿频率=0.0078 (理论 0.0010)
解读:引擎逐行复现了原书表 2.1。注意追保合计 $7,800 远大于最终亏损 $4,620——即使最终亏损不大,过程中也需要准备额外现金,回测必须把这部分资金需求计入。第二部分显示,在厚尾世界里按正态分位数设定的保证金,99% 水平下击穿频率约为名义值的 1.5 倍,99.9% 水平下约为 8 倍:越往尾部,正态假设低估得越严重。
金融直觉:为什么越往尾部偏差越大?正态分布的尾部概率随距离按 \(e^{-x^2/2}\) 的速度衰减,极快;\(t\) 分布的尾部只按幂函数 \(x^{-\nu}\) 的速度衰减,慢得多。两者在"1–2 个标准差"附近差别不大,在"3 个标准差以外"差距可以是数量级的。这就是 CFA 风险管理中"VaR 在正态假设下低估极端损失"的定量版本。对量化系统的含义:用历史波动率乘正态分位数来定止损或保证金缓冲,在平常日子看起来很稳,真正出事的那几天恰好最不够用。第 22 章会讲用历史模拟和期望损失(ES)来补这个洞。
本章小结
期货是交易所标准化合约,规格包括资产等级、合约规模、交割地点与月份、报价单位、涨跌停与持仓限额;多数合约平仓了结,但交割的可能性使期货价在交割期收敛于现货价。保证金制度(初始保证金、约为其 75% 的维持保证金、追保补回初始水平)配合逐日盯市,使期货几乎没有信用风险,相当于每天按新价格重新签约。清算所按净头寸向会员收保证金并设担保基金;场外市场借鉴这一机制,形成 CCP 中央清算与 ISDA/CSA 双边抵押,新规还要求金融机构间交易缴初始保证金。远期与期货的核心差异在交易场所、标准化、逐日结算与信用风险;期货的盈亏逐日实现,远期到期一次实现。行情表中的结算价、成交量、持仓量与正常/反向期限结构,以及各类指令,是期货量化系统的基本输入。
| 概念 / 公式 | 含义 |
|---|---|
| 当日盈亏 \(=(F_t-F_{t-1})\times\) 数量 | 按结算价逐日盯市 |
| 维持保证金 ≈ 75% × 初始保证金 | 跌破即追保,补回初始水平 |
| 变动保证金 | 追保补入的资金;期货的变动保证金须为现金、不计息 |
| 收敛 | 交割期内期货价 ≈ 现货价,靠期现套利保证 |
| 持仓量 vs 成交量 | 未平仓合约数 vs 当日成交合约数 |
| 正常 / 反向市场 | 期货价随期限递增 / 递减 |
| CCP / 双边清算 | 中央对手方承担违约风险 / ISDA 主协议 + CSA 抵押 |
| 止损单 / MIT | 不利价触发市价单 / 有利价触发市价单 |
| 首个通知日 | 多头为避免交割须在此前平仓 |
练习
基础
- 某投资者做空 2 张白银期货,每张 5,000 盎司,价格 $17.20/盎司,每张初始保证金 $4,000、维持保证金 $3,000。价格涨到多少时收到追保通知?若此后可以提取 $2,000,价格需要跌到多少?(提示:每张亏损 $1,000 触发,\(1000/5000=0.20\),即 $17.40;可提取 $2,000 需每张盈利 $1,000,即 $17.00。参见原书 2.3。)
- 交易者 A 新开多 1 张、对手 B 新开空 1 张;随后 A 把多头卖给新交易者 C(A 平仓、C 新开多);再后来 B 买入 1 张、C 卖出 1 张,两人成交(两人都平仓)。三笔交易后持仓量分别如何变化?(提示:+1、不变、−1。规律:双方都开仓则 +1,一开一平则不变,双方都平仓则 −1。)
- 为什么期货的变动保证金不计息,而场外交易中的现金变动保证金计息?
- 解释止损单与止损限价单在跳空行情中的不同风险。
- 列出远期与期货的六项差异,并说明哪一项使期货"几乎无信用风险"。
进阶
- 一家会员的两个客户分别持有某合约多头 20 张、空头 15 张,每张初始保证金 $2,000。会员要向清算所缴多少初始保证金?这对会员与客户之间的保证金有何不同?(提示:清算所按净头寸 5 张,$10,000;客户各自按总头寸向会员缴纳。)
- 6 月原油期货 $80,12 月期货 $86,利率 5%(连续复利),无储存成本。是否存在套利?如何操作?(提示:\(80e^{0.05\times0.5}\approx82.0<86\);买 6 月、卖 12 月,6 月接货持有到 12 月交割。原书 2.31。)
- 修改"量化实战"中的
margin_account,加入"追保未在次日补足则按次日结算价强平"的规则,并对表 2.1 的价格序列在"投资者从不追保"的假设下运行,求强平日和最终损失。 - 在模拟中把 \(t\) 分布自由度从 3 改为 5、10、∞(正态),观察 99.9% 击穿频率如何变化,并解释。
原书推荐习题: 2.3、2.11、2.30(追保触发价与可提取金额);2.15(清算所会员按净头寸追保);2.22、2.28(持仓量变化);2.27(逐日结算对期货 vs 远期盈亏时间分布的影响);2.31(跨期价差的无套利界限);2.35(用真实数据估计保证金并检验正态假设,适合编程)。
原书对照
| 本章小节 | 原书章节 | PDF 页码 |
|---|---|---|
| 2.1 合约的产生与了结 | 2.1 Background(含商业快照 2.1) | p.47–49 |
| 2.2 合约规格 | 2.2 Specification of a Futures Contract | p.49–51 |
| 2.3 收敛 | 2.3 Convergence of Futures Price to Spot Price | p.51–52 |
| 2.4 保证金账户 | 2.4 The Operation of Margin Accounts(表 2.1) | p.52–55 |
| 2.5 场外市场 | 2.5 OTC Markets(含商业快照 2.2 LTCM、图 2.2) | p.55–58 |
| 2.6 读懂行情 | 2.6 Market Quotes(表 2.2) | p.58–60 |
| 2.7 交割 | 2.7 Delivery | p.61–62 |
| 2.8 交易者与指令 | 2.8 Types of Traders and Types of Orders | p.62–63 |
| 2.9 监管、会计与税务 | 2.9 Regulation、2.10 Accounting and Tax | p.63–66 |
| 2.10 远期与期货比较 | 2.11 Forward vs. Futures Contracts(表 2.3) | p.66–67 |
| 小结、习题 | Summary、Practice Questions 2.1–2.26、Further Questions 2.27–2.35 | p.67–71 |