How to price American Options using Monte Carlo???

  • Thread starter Thread starter YuZhao
  • Start date Start date
Joined
3/25/11
Messages
26
Points
13
I wrote a VBA program to price options based on black-scholes model. The european option prices I got from my program is close to the prices calculated by Black-Schole formula, which is what I expected. However, the american option prices from my program do not make sense at all. The american put prices are consistently lower than the prices of european put, which indicates problem. I am not sure if this is a problem of the model or my coding. Can anybody help me look at my code??? I appreciate it.

btw, let me interpret the parameters of the function. s0 is stock pirce at time 0. k is strike price. r is interest rate. t is time. d is dividend rate. v is volatility. Thanks!

Code:
Function YuAmericanPut(s0 As Double, k As Double, r As Double, t As Double, d As Double, v As Double)
Dim normalnum As Double
Dim stock() As Double
Dim sum As Double
Dim payoff(10000)
ReDim stock(1 To 10000, 1 To t * 12)
For i = 1 To 10000
For j = 1 To t * 12
normalnum = WorksheetFunction.NormInv(Rnd(), 0, 1)
stock(i, j) = s0 * Exp((r - d - (v ^ 2) / 2) * t * j / 12 + v * ((t * j / 12) ^ 0.5) * normalnum)
Next j
Next i
j = t * 12

Do While j >= 2
For i = 1 To 10000

If payoff(i) > (k - stock(i, j)) Then
payoff(i) = payoff(i) * Exp(-r / 12)
Else
payoff(i) = (k - stock(i, j))
End If
Next i
j = j - 1
Loop

For i = 1 To 10000
sum = sum + payoff(i)
Next i
YuAmericanPut = sum / 10000

End Function
 
Back
Top