在本文中,我将向您展现如何模拟股票价格的Heston随机波动率模型。 算法
Heston模型是一种期权估值方法,它考虑到同一资产在给定时间交易的不一样期权的波动性变化。它试图经过使用随机过程来模拟波动率和利率来从新建立市场订价。Heston模型的特色是将波动率函数的平方根包含在整个订价函数中。网络
对于固定的无风险利率,描述为:app
经过使用这种模型,能够得出欧洲看涨期权的价格 。机器学习
这是函数的描述。函数
callHestoncf(S, X, tau, r, v0, vT, rho, k, sigma){ # S = 股价在到期日的价格, X = 行权价格, tau = 到期日 # r = 为无风险利率, q = 股息收益 # v0 = 初始方差, vT = 长期方差 # rho = 相关系数, k = 是Vt回归至θ的速度; # sigma = 波动率 }
如今,进行蒙特卡洛订价。咱们将为3个欧洲看涨期权订价,具备3种不一样的行权价格。咱们在15年中使用100000个模拟,每月进行一次。如下是仿真的参数:学习
#初始价格 S0 <- 100 # 模拟次数(能够随意减小) n <- 100000 # 抽样频率 freq <- "monthly" # 波动率均值回复速度 kappa <- 0.003 #波动率 volvol <- 0.009 # 相关性。成交量和现货价格 rho <- -0.5 # 初始方差 V0 <- 0.04 # 长期的方差 theta <- 0.04 #初始短时间利率 r0 <- 0.015 # 期权到期日 horizon <- 15 #期权行权价格 strikes <- c(140, 100, 60)
为了使用模拟Heston模型,咱们首先须要定义如何进行模拟。优化
此函数提供一个包含2个成分的列表,每一个成分包含模拟的随机高斯增量。spa
# 随机波动模拟 sim.vol <- simdiff(n = n, horizon = horizon, frequency = freq, model = "CIR", x0 = V0, theta1 = kappa*theta, theta2 = kappa, theta3 = volvol, eps = shocks[[1]]) # 股票价格模拟 sim.price <- simdiff(n = n, horizon = horizon, frequency = freq, model = "GBM", x0 = S0, theta1 = r0, theta2 = sqrt(sim.vol), eps = shocks[[2]])
如今,咱们能够计算3种不一样的期权价格。code
# 到期股票价格(15年) print(results) strikes mcprices lower95 upper95 pricesAnalytic 1 140 25.59181 25.18569 25.99793 25.96174 2 100 37.78455 37.32418 38.24493 38.17851 3 60 56.53187 56.02380 57.03995 56.91809
从这些结果中,咱们看到这三个期权的蒙特卡洛价格与使用函数(直接使用公式来计算价格)计算出的价格至关接近。95%的置信区间包含理论价格。rem
下面是期权价格,做为模拟次数的函数。计算出的理论价格用蓝色绘制,蒙特卡洛平均价格用红色绘制,阴影区域表示均值(蒙特卡洛价格)周围的95%置信区间。
最受欢迎的看法
1.用机器学习识别不断变化的股市情况—隐马尔科夫模型(HMM)的应用