0 = V_{t}(S,t) + C_{2}(S,t)*V_{SS}(S,t) + C_{1}(S,t)*V_{S}(S,t) + C_{0}(S,t)*V(S,t), 0 < S < Smax, 0 < t < T,
C_{2}(S,t) = +0.5*sigma^2(t)*S^2, C_{1}(S,t) = +r(t)*S, C_{0}(S,t) = - r(t),
The European put option gives the option holder the optional right to sell the underlying stock at price E at time T (on the other hand, the option writer is obliged to buy the underlying stock from the holder). However, the rational seller hopes that the market price S drops so the stock can be sold at the higher price E at time T to make a profit of E-S, otherwise there is no reason to exercise the right to sell.
Thus, the final boundary condition is called the put option payoff function,
V(S,T) = max[E - S, 0],
The opposite case is the European call option is the optional right to buy with profit S-E. Another class of options is named an American Option, which can be exercised at any time before or at T, so is more complicated with a interior condition, making a free boundary problem, due to early exercise, and the free (interior) boundary has to be found as part of the solution.
The zero stock price boundary condition arises from a natural boundary condition for the PDE at S = 0 combined with the final condition above,
V(0,t) = E exp(-R(t)) for E > 0 and R'(t) = -r(t) with R(T) = 0,
In order to avoid an infinite stock price condition for the finite numerics, an artificial cutoff is used as an approximation to large stock price boundary condition,
V(S_{max},t) = 0,
S_{max}=q*E
E = $100, in US Dollars,
r(t) = r0+r1*t/T, with test values r0 = 0.0325, i.e.,
starting from 3.25% interest, and r1 = -0.25 for test values.
In your code only input concrete value once since you need to write
professional general code, so use the variables r0, r1 etc. thereafter.
sigma(t) = sig0 + sig1*t+sig2*t^2, with test values
sig0 = 0.012, i.e., starting from 1.2% volatility (compare to CP2 MLS values)
sig1 = 0.0138, and sig2 = - 0.00125.
T = 4 years,
Compare two (2) mesh sets:
Mesh Set 1: NS = 200, NT = 100,
Mesh Set 2: NS = 400, NT = 200,
q = 5.0,
S_{0}=0
It may be convenient to output your programming results to MATLAB ready m-files, or it may be more convenient to use MATLAB for everything.
Email Comments or Questions to Professor Hanson
MCS 507 HomePage: http://www.math.uic.edu/~hanson/mcs507/