在本文中,我將向您展現如何模擬股票價格的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)的應用