有几种方法可以对期权进行定价。例如,二项式树计算一个资产在一系列时间步长上的价值。在每一步中,资产价格都可以根据上涨或下跌的概率而上涨或下跌。然后,从最后一点到第一点,在树中的每个点按顺序计算选项值。

另一种方法是蒙特卡罗方法,通常用于对路径相关期权进行定价。

Option Base 1
  • Function EuropeanOptionMonteCarlo(c As String, s As Double, x As Double, t As Double, z As Double, r As Double, q As Double, n As Double, nIter As Double) As Variant
  • Dim dt, e, dlns, price, SimVar(), PayVar() As Double
  • ReDim SimVar(nIter, n + 1)
  • ReDim PayVar(nIter)
  • dt = t / n
  • a = 0
  • For i = 1 To nIter
  • SimVar(i + a, 1) = s
  • Randomize
  • p = 0
  • For j = 1 To n
  • If (j - 1) / 250 - Int((j - 1) / 250) = 0 And j > 1 Then p = p + 1
  • e = WorksheetFunction.NormSInv(Rnd())
  • dlns = (r - q - z ^ 2 / 2) * dt + z * e * dt ^ 0.5
  • If j - 250 * p = 1 And p > 0 Then
  • SimVar(i + p + a, 2) = SimVar(i + p - 1 + a, 251) * Exp(dlns)
  • Else
  • SimVar(i + p + a, j - 250 * p + 1) = SimVar(i + p + a, j - 250 * p) * Exp(dlns)
  • End If
  • Next j
  • If c = "C" Then
  • PayVar(i) = WorksheetFunction.Max(SimVar(i + p + a, j - 250 * p) - x, 0) * Exp(-r * t)
  • ElseIf c = "P" Then
  • PayVar(i) = WorksheetFunction.Max(x - SimVar(i + p + a, j - 250 * p), 0) * Exp(-r * t)
  • End If
  • a = a + p
  • Next i
  • price = 0
  • temp = 0
  • For i = 1 To nIter
  • price = price + PayVar(i)
  • Next i
  • price = price / nIter
  • EuropeanOptionMonteCarlo = price
  • End Function

In the first step, we generate many future stock prices. The following equation, for example, describes how a stock price varies over time given a Weiner process.

第一步,我们生成许多未来股票价格。例如,下面的等式描述了在给定Weiner过程的情况下,股票价格如何随时间变化。

Option Pricing Stock PriceMonte Carlo

蒙特卡罗期权定价股票价格公式

  • ST is the stock price at expiry
  • ST是到期时的股价
  • St is the stock price at the current time
  • St是当前时间的股价
  • T is the time to expiry
  • T是到期时间
  • t is the current time
  • t是当前时间
  • r is the risk free rate
  • r是无风险率
  • σis the volatility
  • σ是波动性
  • x̄ is a number sampled from a normal distribution
  • x̄是从正态分布中采样的数字

European Option

Monte Carlo

蒙特卡洛欧洲期权

Typically, hundreds or even millions of values of x̄ are generated across many many time steps. This gives many future price paths, with ST calculated for each.

通常,在许多时间步长上生成数百甚至数百万个x̄值。这提供了许多未来的价格路径,每个路径都计算ST。

Once the entire set of ST is generated, the payoff is calculated. Given a European option, the expected present value of call (ct) and put (pt) options are calculated as follows, where X is the strike price.

一旦生成了整个ST集,就会计算出回报。给定欧式期权,看涨(ct)和看跌(pt)期权的预期现值计算如下,其中X为执行价。

Call Price

Monte Carlo

蒙特卡洛看涨价格

Monte Carlo Put Price

蒙特卡洛看跌价格

The exponential term in the above two equations discounts the price at time t to expiry (at time T). For an Asian option, ST would be replaced with an average price over the whole path.

上述两个方程中的指数项将时间t的价格折扣到到期(时间t)。对于亚洲期权,ST将被整个路径的平均价格所取代。

Then given an entire set of ct or pt, the mean option price is calculated. For example, for a call option, the mean price is

然后给定一整组ct或pt,计算平均期权价格。例如,对于看涨期权,平均价格为