第四章:亚式期权定价——从理论到实战

亚式期权,说白了就是「看平均」的期权。普通欧式期权看的是到期日那一天的标的价格,亚式期权看的是一段时间内的平均价格。这个「平均」两个字,让它的风险特征完全不一样了。

我在做市商那几年,亚式期权是我最常接触的奇异期权之一。为什么?因为很多企业客户喜欢用它来对冲汇率风险——他们每天都有现金流进出,用亚式期权比用普通期权更贴合实际需求。

4.1 亚式期权的定义与分类

亚式期权有两种主流分类方式,我建议你记牢:

  • 平均价格亚式期权(Average Price Option):结算时,用标的资产在存续期内的平均价格代替到期价格。看涨期权 payoff = max(0, S_avg - K),看跌期权 payoff = max(0, K - S_avg)。
  • 平均执行价亚式期权(Average Strike Option):结算时,用平均价格代替执行价。看涨期权 payoff = max(0, S_T - K_avg),看跌期权 payoff = max(0, K_avg - S_T)。

你想想看,这两种期权哪个更便宜?

嗯,平均价格亚式期权通常比普通期权便宜,因为平均价格的波动率比瞬时价格低。我在项目中遇到过客户问:「为什么亚式期权报价比欧式低这么多?」其实原因很简单——波动率被平均掉了。

核心区别:平均价格亚式期权降低的是标的资产价格的不确定性,平均执行价亚式期权降低的是执行价的不确定性。两者都能起到平滑风险的作用。

另外,按平均方式还可以分为:

  • 算术平均亚式期权:S_avg = (S₁ + S₂ + ... + Sₙ) / n
  • 几何平均亚式期权:S_avg = (S₁ × S₂ × ... × Sₙ)^(1/n)

算术平均更常见,但几何平均有解析解。为什么?因为几何平均的对数仍然服从正态分布,算术平均就不行。这个数学性质决定了定价的难易程度。

4.2 几何平均亚式期权的解析解

几何平均亚式期权之所以有解析解,是因为它和普通欧式期权在数学结构上是「同构」的。我当年推导这个公式时,花了整整一个下午——但一旦理解了,你会发现它其实很优雅。

假设标的资产价格服从几何布朗运动:

dS = μS dt + σS dW

几何平均价格定义为:

G = exp( (1/T) ∫₀ᵀ ln(S(t)) dt )

经过推导,几何平均价格 G 仍然服从对数正态分布,其参数为:

μ_G = μ - σ²/2 - (σ²/6)
σ_G = σ / √3

你没看错,波动率变成了原来的 1/√3。这就是为什么亚式期权比普通期权便宜——波动率被压缩了。

那么,几何平均亚式看涨期权的定价公式就是:

C = e^(-rT) * [F * N(d₁) - K * N(d₂)]

其中:
F = S₀ * exp( (r - q - σ²/6) * T )
d₁ = (ln(F/K) + σ_G² * T / 2) / (σ_G * √T)
d₂ = d₁ - σ_G * √T
σ_G = σ / √3

实战技巧:我在做市时,经常用几何平均亚式期权的解析解作为蒙特卡洛模拟的「对照基准」。如果蒙特卡洛结果和解析解偏差超过 0.5%,我就知道模拟参数设置有问题。

4.3 蒙特卡洛定价实现

实际交易中,算术平均亚式期权更常用。但算术平均没有解析解,只能用蒙特卡洛模拟。我曾经用 C++ 写过一套亚式期权定价引擎,下面给你看核心逻辑。

蒙特卡洛定价的基本步骤:

  1. 生成标的资产价格路径
  2. 计算路径上的平均价格
  3. 计算该路径下的期权 payoff
  4. 对所有路径的 payoff 取平均并贴现

下面是一个 Python 实现示例:

import numpy as np

def arithmetic_asian_option_mc(S0, K, r, sigma, T, n_steps, n_paths, option_type='call', avg_type='price'):
    """
    算术平均亚式期权蒙特卡洛定价
    S0: 初始价格
    K: 执行价
    r: 无风险利率
    sigma: 波动率
    T: 到期时间
    n_steps: 时间步数
    n_paths: 模拟路径数
    """
    dt = T / n_steps
    discount = np.exp(-r * T)
    
    # 生成所有路径
    S = np.zeros((n_paths, n_steps + 1))
    S[:, 0] = S0
    
    for i in range(1, n_steps + 1):
        Z = np.random.standard_normal(n_paths)
        S[:, i] = S[:, i-1] * np.exp((r - 0.5 * sigma**2) * dt + sigma * np.sqrt(dt) * Z)
    
    # 计算平均价格(跳过初始价格,从第一个观测点开始)
    S_avg = np.mean(S[:, 1:], axis=1)
    
    if avg_type == 'price':
        # 平均价格亚式
        if option_type == 'call':
            payoff = np.maximum(S_avg - K, 0)
        else:
            payoff = np.maximum(K - S_avg, 0)
    else:
        # 平均执行价亚式
        ST = S[:, -1]
        if option_type == 'call':
            payoff = np.maximum(ST - S_avg, 0)
        else:
            payoff = np.maximum(S_avg - ST, 0)
    
    price = discount * np.mean(payoff)
    return price

# 使用示例
price = arithmetic_asian_option_mc(
    S0=100, K=100, r=0.05, sigma=0.2, 
    T=1.0, n_steps=252, n_paths=100000
)
print(f"算术平均亚式看涨期权价格: {price:.4f}")

避坑指南:我曾经在模拟时忘记排除初始价格,导致平均价格偏高,定价偏差了 2% 以上。记住,亚式期权的平均通常从第一个观测日开始,不是从 t=0 开始。

4.4 蒙特卡洛的方差缩减技巧

做市商每天要报几百个亚式期权价格,蒙特卡洛模拟太慢可不行。我常用的方差缩减方法有:

  • 对偶变量法:生成一组随机数 Z,同时用 -Z 生成另一条路径。两条路径负相关,能有效降低方差。
  • 控制变量法:用几何平均亚式期权的解析解作为控制变量。算术平均和几何平均高度相关,但几何平均有精确解,可以用来校正算术平均的模拟结果。

下面是对偶变量法的实现:

def asian_option_antithetic(S0, K, r, sigma, T, n_steps, n_paths):
    """使用对偶变量法的亚式期权定价"""
    dt = T / n_steps
    discount = np.exp(-r * T)
    
    payoffs = np.zeros(n_paths)
    
    for j in range(n_paths):
        Z = np.random.standard_normal(n_steps)
        
        # 正向路径
        S_plus = S0
        sum_plus = 0
        for i in range(n_steps):
            S_plus *= np.exp((r - 0.5*sigma**2)*dt + sigma*np.sqrt(dt)*Z[i])
            sum_plus += S_plus
        
        # 对偶路径
        S_minus = S0
        sum_minus = 0
        for i in range(n_steps):
            S_minus *= np.exp((r - 0.5*sigma**2)*dt - sigma*np.sqrt(dt)*Z[i])
            sum_minus += S_minus
        
        avg_plus = sum_plus / n_steps
        avg_minus = sum_minus / n_steps
        
        payoff_plus = max(avg_plus - K, 0)
        payoff_minus = max(avg_minus - K, 0)
        
        payoffs[j] = 0.5 * (payoff_plus + payoff_minus)
    
    price = discount * np.mean(payoffs)
    return price

用对偶变量法,同样的路径数,方差能降低 30%-50%。我在做市系统里一直用这个方法,效果很稳定。

4.5 知识体系总览

下面这张图总结了亚式期权定价的核心逻辑:

亚式期权定价知识体系 亚式期权 按结算方式分类 按平均方式分类 平均价格亚式 平均执行价亚式 算术平均 几何平均 定价方法 几何平均解析解 σ_G = σ/√3, 封闭公式 蒙特卡洛模拟 路径生成 → 平均 → 贴现 方差缩减:对偶变量/控制变量

这张图把亚式期权的分类和定价方法串起来了。你从根节点往下看,先选分类,再选定价方法,逻辑很清晰。

4.6 实战中的注意事项

最后,分享几个我在做市实战中积累的经验:

  • 观测频率:亚式期权的平均频率会影响价格。日频观测比周频观测更贵,因为高频平均更接近连续路径。我一般用 252 个交易日作为年化基准。
  • 波动率曲面:亚式期权的隐含波动率通常低于平值欧式期权。如果你用欧式期权的波动率来定价亚式,价格会偏高。
  • 对冲难度:亚式期权的 Delta 和 Gamma 比欧式期权更平滑,但 Vega 对波动率路径更敏感。我习惯用「波动率 Greeks」来管理风险。

我的习惯:每次上线新的亚式期权产品,我都会先用几何平均解析解做一次「合理性检查」,再用蒙特卡洛跑 50 万条路径做精细定价。两个结果对得上,我才敢报给客户。

亚式期权定价,说白了就是「平均的艺术」。理解了这个平均过程,你就能理解它的风险特征和定价逻辑。下一节我们会聊到亚式期权的 Greeks 计算和对冲策略,那才是做市商真正赚钱的地方。


公众号:蓝海资料掘金营,微信deep3321