一、说明
如何使用蒙特卡洛和神经网络对冲期权?该项目分为两个步骤:
- 准蒙特卡洛(Sobol)的高级蒙特卡洛技术,用于股票的路径模拟。
- 在我们计算期权在时间 T 的收益后。我们如何创建一个复制的投资组合策略,以在t=0时对期权进行估值。
二、准蒙特卡洛
由于期权值近似平均值的 SE 随我们模拟的路径数量的平方根而减小。我们应该花一些时间使用更先进的技术来减少估计中的方差。这些技术是对立变量、对照变量和分层抽样。您可以查看此内容,以了解有关财务应用中MC中方差减少技术的更多信息。(Pseudo vs Quasi Random Numbers – QuantPy)
使用以下代码段,我们可以生成正态分布变量,以使用几何布朗运动进行S(股票)对数的库存路径模拟
GBM 用于股票的日志
import scipy.stats as stats
from scipy.stats import qmc
def sobol_norm(m, d=1):
sampler = qmc.Sobol(d, scramble=True)
x_sobol = sampler.random_base2(m)
return stats.norm.ppf(x_sobol)
""" Simulate Stock Data """
W = sobol_norm(n_paths, d=n_time_steps)
S_paths = np.empty((2**n_paths, n_time_steps))
S_paths[:,0] = S
for t in range(1,n_time_steps):
S_paths[:,t] = (S_paths[:,t-1] * np.exp((r-sigma**2/2)*dt + sigma * np.sqrt(dt)*W[:,t] ).squeeze())
股票价格的蒙特卡罗模拟
现在对于这个例子,使用了欧洲期权,其中它在时间 T 的收益计算为 max(S_T -K, 0)。
三、神经网络
复制理论用于期权的价值等于股票数量(phi)和债券数量(psi)的情况。由于我们有超过 2 种可能的结果S_t,现在问题已转化为误差的最小化。我们尝试找到值 psi 和 phi,它们将尽可能接近地复制V_t的值。
使用股票和债券复制期权投资组合
对于任何以前使用过机器学习的人来说,现在应该发出警报,关于我们如何尝试安装一个函数来执行这项任务。
我们试图最小化的问题
(1) 从 t=T-1 开始,此时已知 V_{t+1}
(2)传递给NN:S_{t+1},B_{t+1},V_{t+1}来拟合。
(2) Predict V_{t}, 给定 S_{t}, B_{t}
(3) 使用预测的 V_{t} 作为步骤 1 的输入
(4) 重复直到计算出 t=0 处的值
3.1 神经网络架构
S_{t} 通过 NN 架构,该架构输出估计的 和 phi 值,然后用 S_{t} 和 B_{t} 点缀以计算 V_{t}。在此示例中,S 形激活远远优于 ReLU。但是,没有执行广泛的超参数调整。
使用的超参数:
- “MSE”作为损失函数
- 亚当与 lr:1e-2
- 每个拟合时间步长的周期数:10(第一步为 300 个除外)
- 批量大小:512(大批量大小对于确保每次反向传播的代表性采样非常重要)
一些有助于减少错误的技巧和提示:
- 在选项期间多次重复拟合。在此示例中,重复了 5 次。
- 在第一次执行拟合时具有大量纪元。由于值近似中的误差传播其非常理想,因此允许网络在第一次尝试中尽可能多地学习参数。之后,可以减少周期以节省训练时间。
- 在所有时间段内执行自举,以估计所有时间步长的平均投资组合价值的平均标准。
Model: "Replicating_Portfolio"
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input: S_{t} (InputLayer) [(None, 1)] 0
__________________________________________________________________________________________________
Sigmoid_1 (Dense) (None, 8) 16 input: S_{t} [0][0]
__________________________________________________________________________________________________
Sigmoid_2 (Dense) (None, 8) 72 Sigmoid_1[0][0]
__________________________________________________________________________________________________
linear (Dense) (None, 2) 18 Sigmoid_2[0][0]
__________________________________________________________________________________________________
input: S_{t}, B_{t} (InputLaye [(None, 2)] 0
__________________________________________________________________________________________________
V_t (Dot) (None, 1) 0 linear[0][0]
input: S_{t}, B_{t} [0][0]
==================================================================================================
Total params: 106
Trainable params: 106
Non-trainable params: 0
__________________________________________________________________________________________________
在下图中,您可以看到股票在 t=0 期间的投资组合价值。值得注意的是,在算法采取的初始向后步骤中,V_{t}(红线)的预测误差较高。如果不同的神经网络架构师或不同的马力进一步最小化误差。该值将更准确地收敛。
实验中使用的参数:
- S = 100, K = 100, T = 1.0, r = .055, sigma = 0.3, dt = 1/100
由于我们正在评估欧洲期权,我们可以分析计算其价值,等于:
- 布莱克-斯科尔斯欧洲电话:14.47320
- 复制投资组合欧元看涨期权:14.49997
- 复制-P 标准误差 = 0.0508
- 10,000 个 MC 路径、100 个时间步长和 5 个循环的总执行时间:~14 分钟(M1 上的张量流,启用金属和 GPU)
3.2 对冲参数
“线性”层的层输出可用于匹配需要在时间 t = 0 购买的股票和债券资产
对冲参数 — 时间 t=0 时的股票和债券使用平均值或期望值,需要在 t=0 时投资的总金额为:
- 平均 Phi: 0.6238
- 平均磅/平方英寸: -47.9307
参考资源:
四、未来工作
既然已经证明 NN 可用于执行计算具有复制投资组合的期权价值的任务,那么在实践中应用此方法还需要做额外的工作。
- 构建具有更多资产的复制投资组合
- 优化 NN 架构和超参数,实现更快的训练/更高的准确性。(使用更快的硬件)
- 更复杂的模拟模型,由于模拟价格,与估值无关。
- 异国衍生品