Option Explicit
Sub mcSim()
range("C16").Clear
range("E3", "AL100").Clear
Dim mcSim() As Double, mu As Double, iters As Integer, time As Integer
Dim sd As Double, row As Integer, col As Integer
time = InputBox("On which day would you like to exercise your option? (select a number between 1 and 63)")
ReDim mcSim(1 To time, 1 To 30)
iters = range("C17")
range("B16").Value = "Selected exercise day"
range("C16").Value = time
' Here you want to set the mean and stddev
' to whichever cell contains your inputs
mu = range("C11")
sd = range("C12")
Randomize
'i is rows, j is cols
For col = 1 To iters
For row = 1 To time
mcSim(row, col) = mu + sd * WorksheetFunction.Norm_S_Inv(Rnd)
Next row
Next col
range("F4").Resize(time, iters) = mcSim
'label 2x2 array
For col = 1 To 30
For row = 1 To time
Cells(row + 3, 5) = row
Cells(3, col + 5) = col
Next row
Next col
range("E3").Value = "Day"
range(Cells(3, 5), Cells(time + 3, 5)).Interior.ColorIndex = 24
range(Cells(3, 5), Cells(time + 3, 5)).HorizontalAlignment = xlCenter
End Sub
Sub FV1rand()
Dim col As Integer, row As Integer
Dim myrange As range
Dim time As Integer
time = range("C16")
For col = 6 To 35
For row = 4 To time + 3
Cells(row, 37) = 1 + Cells(row, col)
Next row
Set myrange = range(Cells(4, 37), Cells(time + 3, 37))
Cells(time + 5, col) = WorksheetFunction.Product(myrange)
Next col
Cells(time + 5, 5) = "Future value of R1"
Cells(time + 5, 5).Interior.ColorIndex = 24
End Sub
Sub valuecalcs()
Dim col As Integer, row As Integer
Dim myrange As range
Dim time As Integer
time = range("C16")
Cells(time + 6, 5) = "ST"
Cells(time + 7, 5) = "X"
Cells(time + 8, 5) = "Max(ST-X,0)"
Cells(time + 9, 5) = "DCF"
Cells(time + 11, 5) = "Average DCF"
For col = 6 To 35
Cells(time + 6, col) = WorksheetFunction.Product(Cells(time + 5, col), Cells(3, 3))
Cells(time + 7, col) = range("C7")
If Cells(time + 6, col) - Cells(time + 7, col) <= 0 Then
Cells(time + 8, col) = 0
Else
Cells(time + 8, col) = Cells(time + 6, col) - Cells(time + 7, col)
End If
Cells(time + 9, col) = WorksheetFunction.Product(Cells(time + 8, col), Cells(14, 3))
Next col
Set myrange = range(Cells(time + 9, 6), Cells(time + 9, 35))
Cells(time + 11, 6) = WorksheetFunction.Average(myrange)
Cells(time + 6, 5).Interior.ColorIndex = 24
Cells(time + 7, 5).Interior.ColorIndex = 24
Cells(time + 8, 5).Interior.ColorIndex = 24
Cells(time + 9, 5).Interior.ColorIndex = 24
Cells(time + 11, 5).Interior.ColorIndex = 17
Cells(time + 6, 5).HorizontalAlignment = xlCenter
Cells(time + 7, 5).HorizontalAlignment = xlCenter
Cells(time + 8, 5).HorizontalAlignment = xlCenter
Cells(time + 9, 5).HorizontalAlignment = xlCenter
Cells(time + 11, 5).HorizontalAlignment = xlCenter
End Sub
Comments