1987 -- 黑色星期一:投資組合保險的反噬#
案件描述#
1987 年 10 月 19 日(黑色星期一),道瓊工業指數單日暴跌 22.6%——美國股市史上最大單日跌幅,遠超 1929 年的 12.8%。而且事前沒有任何戰爭、恐怖攻擊或經濟崩潰的新聞。
這是金融計算史上最戲劇性的案件:
一支由 Black–Scholes 理論驅動的「投資組合保險」程式,本來設計用來保護投資人,卻在那天成為推倒市場的雪崩引擎。
前因:投資組合保險的發明#
- Leland 與 Rubinstein(加州伯克萊)在 1970 年代末構想「投資組合保險」(portfolio insurance):用 Black–Scholes 的動態避險邏輯,為股票組合合成一個「保證地板價」。
- 原理:持有股票 + 動態調整,模擬一個「保護性賣權」(synthetic put)。股價下跌時賣出股票、提高現金比例;上漲時買回。
- 到 1987 年,投資組合保險管理了約 600–1,000 億美元(約佔美股 3%)的資產,由 Leland O'Brien Rubinstein (LOR) 與各大券商執行。
- 線索:Black–Scholes 的動態避險假設「連續、小額、不影響市場價格的交易」。600 億美元絕對不是「小額」。
推理過程#
線索一:正回饋迴路的數學#
投資組合保險的交易規則是機械化的(程式驅動):
\[ \text{賣出量} \propto \text{跌幅} \times \text{組合規模} \]
把它寫成系統動力學:
- 市場下跌 → 保險程式賣出股票(與股票期貨)
- 賣出壓低價格 → 觸發更多保險程式賣出
- 正回饋(positive feedback loop)→ 雪崩
這與一般避險(負回饋)相反:避險者的賣出量與價格同向變動——美式賣權的 delta 在下跌時更負,需要賣更多。
線索二:那天早晨的時間線#
- 10 月 19 日早上,市場因前一週(10 月 14–16 日已跌 10%+)的程式賣壓低開。
- 賣單蜂擁而出,NYSE 的執行系統(當時靠人工撮合)癱瘓——報價延遲數十分鐘。
- 報價延遲 → 保險程式不知道當前價格,只能用舊價計算 delta → 賣出更多。
- 下午,CME 的 S&P 500 期貨一度貼水(期貨價遠低於現貨)——現貨與期貨市場脫鉤,套利者無法套利。
- 收盤:道瓊 -22.6%,S&P 500 期貨市場幾乎崩潰。
線索三:流動性的數學本質#
Black–Scholes 假設可以「以理論價格連續交易」。但流動性不是無限的:
- 當所有人同時賣出,價格由最急迫的賣家決定,不是理論價。
- Leland 後來承認:投資組合保險是「壓垮駱駝的最後一根稻草」,但它假設的流動性在壓力下不存在。
教訓的數學表述:動態避險的可行性依賴 \(\frac{\partial \text{市場衝擊}}{\partial \text{交易量}} \approx 0\) ;當所有人都用同一模型,這個偏導數爆增。
後果#
- 布雷迪委員會報告(1988):官方調查確認投資組合保險是主要放大器之一,催生熔斷機制(circuit breakers)——當指數跌 7%/13%/20% 時暫停交易。
- 機械化交易的覺醒:市場第一次集體意識到「所有人都用同一個模型」本身就是風險——這個教訓在 2008 年(CDO + 高斯 Copula)與 2010 年(高頻交易)重演。
- 跳躍風險與波動率微笑:1987 年後,選擇權市場出現持久的「波動率微笑」(深價外賣權的隱含波動率遠高)——市場用價格投票:常態分配錯了,股價會跳。這直接催生 Heston(1993)與跳躍模型。
- 諾貝爾獎得主 Merton 稱之為「模型的反噬」(models shaping markets)——MacKenzie(2006)的書名《An Engine, Not a Camera》正是講這個:模型不是照相機,是引擎——它會改變它所描述的世界。
現代程式重現:正回饋雪崩模擬#
import numpy as np
def simulate_crash(n_days=1, n_instants=100, insurance_size=600e9,
market_size=2e12, gamma=0.1):
"""正回饋雪崩:保險程式賣出 → 價格下跌 → 更多賣出"""
price = 1.0
path = [price]
for _ in range(n_instants):
shock = np.random.normal(0, 0.005) # 基本面雜訊
sell_pressure = gamma * (1 - price) * insurance_size / market_size
price = price - shock - sell_pressure # 賣壓與跌幅同向 → 正回饋
path.append(price)
return np.array(path)
path = simulate_crash()
print("單日累積跌幅:", (path[-1] - 1) * 100, "%")
# gamma 越大(越多資產用同一模型),雪崩越深 — 這是 1987 的本質
偵探筆記#
- 動機:600 億美元共用同一套動態避險規則
- 工具:Black–Scholes delta、程式化交易、系統動力學
- 遺產:熔斷機制、波動率微笑、「模型會改變市場」的哲學教訓
- 盲點:連續避險假設在壓力下崩潰;流動性不是無限的
參考資料#
- Brady Commission (1988). Report of the Presidential Task Force on Market Mechanisms.
- MacKenzie, D. (2006). An Engine, Not a Camera. MIT Press.
- Gennotte, G., Leland, H. (1990). "Market Liquidity, Hedging, and Crashes". American Economic Review.