一個微分方程如何永遠改變了金融市場,以及為什麼它至今仍管理著數萬億美元。
引言:從物理學到財富
在 1973 年之前,期權交易就像荒野大鏢客。沒有人確切知道一個期權應該值多少錢。交易員依賴直覺、經驗法則和運氣。
當費舍爾·布萊克 (Fischer Black)、邁倫·斯科爾斯 (Myron Scholes) 和羅伯特·默頓 (Robert Merton) 發表了他們具有突破性的論文時,一切都改變了。他們採用了物理學中的熱傳導方程(描述熱量如何通過材料擴散),並將其應用於金融市場。斯科爾斯和默頓因此發現獲得 1997 年諾貝爾經濟學獎(遺憾的是,布萊克並未能活著看到那一刻)。
他們的公式為市場提供了一種通用的衍生品估值語言。但它究竟描述了什麼?
基本概念:期權的目的地
在深入研究數學之前,讓我們回顧一下期權的基本風險特徵(那些帶綠色和紅色線條的圖表)。
期權是一種合同,賦予在未來以預先約定的價格(行權價)購買或出售資產的權利(而非義務)。
方向性策略(買入看漲和買入看跌)的風險特徵。
期權中存在四種基本倉位:
- 買入看漲 (Long Call):你購買了買入資產的權利。如果標的資產價格 (S) 上漲,你的利潤理論上是無限的。你的最大損失是支付給期權的權利金。
- 買入看跌 (Long Put):你購買了賣出資產的權利。當市場下跌時,你賺錢。非常適合對沖投資組合。
- 賣出看漲 (Short Call):你賣出了買入權。你會立即收到權利金,但如果資產價格“一飛沖天”,你將承擔無限風險(回想一下 GameStop 軋空事件)。
- 賣出看跌 (Short Put):你賣出了賣出權。你會收到權利金,並承諾在資產價格下跌時買入。巴菲特經常使用這種方法以折扣價買入股票。
盈虧平衡點(Breakeven)計算為:行權價 (X) ± 期權權利金。
神秘方程:布萊克-斯科爾斯 PDE 分析
你經常在華爾街電影黑板上看到的公式是一個偏微分方程 (PDE):
布萊克-斯科爾斯模型的數學結構以及看漲和看跌期權的定價公式。
讓我們來分解它(我們保證它不像看起來那麼可怕):
- :期權價格(我們試圖找到的值)。
- :時間。 顯示了期權的時間價值如何衰減(Theta)。
- :標的資產價格 (Stock/Spot)。
- (Sigma):標的資產的波動率。波動率越高,期權越貴。
- :無風險利率。
該方程本質上說明:由期權和標的資產組成的對沖(無風險)投資組合的收益必須等於無風險銀行存款的收益 ()。這被稱為無套利原則。
實際應用:使用 Python 計算價值
該方程的解析解為我們提供了著名的布萊克-斯科爾斯看漲和看跌價格公式:
其中:
讓我們用 Python 來編寫它。將複雜的數學轉化為現成價格的程式碼:
import numpy as np
from scipy.stats import norm
import math
def black_scholes(S, X, T, r, sigma, option_type="call"):
"""
使用布莱克-斯科尔斯模型计算期权价格。
S: 当前标的资产价格
X: 行权价 (Strike)
T: 到期时间(以年为单位)
r: 无风险利率
sigma: 标的资产波动率
option_type: "call" 或 "put"
"""
if T <= 0:
if option_type == "call":
return max(0.0, S - X)
else:
return max(0.0, X - S)
d1 = (math.log(S / X) + (r + 0.5 * sigma**2) * T) / (sigma * math.sqrt(T))
d2 = d1 - sigma * math.sqrt(T)
if option_type == "call":
price = S * norm.cdf(d1) - X * math.exp(-r * T) * norm.cdf(d2)
elif option_type == "put":
price = X * math.exp(-r * T) * norm.cdf(-d2) - S * norm.cdf(-d1)
else:
raise ValueError("option_type 必须是 'call' 或 'put'")
return price
current_price = 100.0 # 比特币 $100k(为什么不呢?)
strike_price = 100.0 # 平值 (ATM) 行权价
time_to_expiry = 30/365 # 30 天后到期
risk_free_rate = 0.05 # 5% 年化利率
volatility = 0.50 # 50% 波动率(典型的加密市场波动率)
call_price = black_scholes(current_price, strike_price, time_to_expiry, risk_free_rate, volatility, "call")
put_price = black_scholes(current_price, strike_price, time_to_expiry, risk_free_rate, volatility, "put")
print(f"看涨期权理论价格: ${call_price:.2f}")
print(f"看跌期权理论价格: ${put_price:.2f}")
期權之主:認識“希臘字母”
布萊克-斯科爾斯模型不僅給了我們一個價格,還給了我們被稱為“希臘字母” (The Greeks) 的風險管理工具。這些是期權價格相對於各種參數的導數(梯度):
- Delta ():標的資產價格變動 1 美元時,期權價格如何變動。(對 S 的一階導數)。Delta 是你的方向性風險。
- Gamma ():標的資產價格變動 1 美元時,Delta 如何變動。(對 S 的二階導數,即方程中的 )。Gamma 是你 Delta 的風險。
- Theta ():期權價值每天衰減多少。(對時間 的變化)。它是期權買家的敵人,賣家的朋友。
- Vega ():波動率每跳升 1% 時,價格如何變動。(劇透:Vega 實際上不是希臘字母,但它已成為傳統)。
- Rho ():對利率變化的敏感性。加密交易員很少關注它,因為加密市場波動太快。
量化做市商(例如在 Deribit 或期權 DEX 上)不斷交易標的資產,以保持其倉位“Delta 中性” ()。他們通過點差以及隱含波動率 (Implied Volatility) 與歷史波動率之間的差異來獲利。
殘酷現實:模型的侷限性
布萊克-斯科爾斯是一個天才公式,但它在現實世界中,特別是在加密領域,存在致命缺陷:
- 恆定波動率:該公式假設所有行權價的波動率都是相同的。實際上,存在“波動率微笑” (Volatility Smile) —— 虛值期權的價格往往高於模型的預測,因為交易員會為防範“黑天鵝”支付過高的保險費。
- 對數正態分佈:該模型假設價格呈對數正態分佈,且極端波動是不可能的。在加密領域,極端波動(肥尾效應)只是家常便飯。
- 連續交易:該公式假設你可以無成本地進行連續對沖。現實世界中的費用和滑點會迅速吞噬你的利潤。
結論
布萊克-斯科爾斯公式是量化金融的羅塞塔石碑。即便知道它的缺點,整個金融界仍然使用布萊克-斯科爾斯波動率來報價。
理解這個公式及其“希臘字母”是從普通交易員向量化研究員邁出的一步。下一次當你決定買入期權時,請記住:你交易的不只是價格方向,你還在交易波動率和時間。
進一步閱讀
程式碼倉庫
- GitHub 倉庫: suenot/options-pricing — 本文計算機和示例的完整原始碼。
祝對沖愉快!📈
Authors
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.