Serving the Quantitative Finance Community

 
User avatar
fingist
Topic Author
Posts: 0
Joined: July 19th, 2004, 6:21 am

Valuation of Option using Monte Carlo Simulation of a Portfolio of Assets

September 23rd, 2004, 12:55 pm

I want to know how one could value an option based on Monte Carlo Simulation of a Portfolio of Assets, where Stock Prices follow Geometric Brownian Motion and the Interest Rate follows Hull-White Model. I dont get any idea how to proceed. Please help to start with.
 
User avatar
Aaron
Posts: 4
Joined: July 23rd, 2001, 3:46 pm

Valuation of Option using Monte Carlo Simulation of a Portfolio of Assets

September 23rd, 2004, 11:55 pm

The basic idea is to generate a lot of future paths for the portfolio and see what the option is worth in each one. The simplest valuation method is to average the results and discount at some appropriate rate. Another approach is to do a risk-neutral simulation, replacing the actual expected return of each asset by the risk-free rate of interest, then discounting the average option value at the risk-free rate. The most sophisticated approach is to solve for a hedge ratio at every node and determine the price of the replicating portfolio.To see a simple example, suppose I will deal out a deck of cards and keep track of the longest run of cards where each one is exactly one higher or lower than the last card. I will pay you $1 for each card in the longest run. You could compute the value of this claim analytically, but it's probably easier to simulate 100,000 deals, determine the longest run of each and average the results.
 
User avatar
fingist
Topic Author
Posts: 0
Joined: July 19th, 2004, 6:21 am

Valuation of Option using Monte Carlo Simulation of a Portfolio of Assets

September 24th, 2004, 11:49 am

Thanks Aaron. I have some problem calculating 'theta' of HW model. Frankly I dont know how to calculate it. I tried out in VBA. I am not sure where am I going wrong. Can anyone help me?Here is the main code without declations etc.,'------------------------------------Function max2(in1 As Double, in2 As Double) As Double' A function to calculate the maximum value between two given inputs in1 and in2 If (in1 >= in2) Then max2 = in1 Else max2 = in2 End IfEnd Function'------------------------------------Function dr1(fn_plus As Double, fn_minus As Double, delta As Double) As Double' A function to calculate the first derivative value at given point dr1 = (fn_plus - fn_minus) / 2 * deltaEnd Function'------------------------------------Sub mix_mc() Const num_yield = 50 dt = maturity / time_nodes sdt = Sqr(dt) 'Calculation of 1 Year forwardrate(0,t) from yield y(i) For i = 1 To num_yield - 1 fwd(i) = (i + 1) * y(i + 1) - i * y(i) Next i 'Calculation of theta(i) theta(1) = mr_mean / mr_rate For i = 1 To num_yield - 1 ' # NOTE: have to add the derivative of forward rate later theta(i + 1) = mr_rate * fwd(i) + (hw_vol ^ 2 * (1 - Exp(-2 * mr_rate * i))) / 2 * mr_rate Next i 'Calculation of mc_hw(i,j) For i = 1 To num_sim For j = 1 To time_nodes randns = Application.NormSInv(Rnd) If j = 1 Then mc_hw(i, 1) = ini_int_rate Else mc_hw(i, j) = mc_hw(i, j - 1) + (theta(j) - mr_rate * mc_hw(i, j - 1)) * dt + randns * hw_vol * sdt 'mc_hw(i, j) = mc_hw(i, j - 1) + mr_rate * ((mr_mean / mr_rate) - mc_hw(i, j - 1)) * dt + randns * hw_vol * sdt End If Next j Next i 'Calculation of mc_mix(i,j) For i = 1 To num_sim For j = 1 To time_nodes randns = Application.NormSInv(Rnd) If j = 1 Then mc_mix(i, 1) = ini_sto_prc Else ' substituting hw rate in GBM mc_mix(i, j) = mc_mix(i, j - 1) * Exp((mc_hw(i, j) * dt) + randns * gbm_vol * sdt) End If Next j call_payoff(i) = max2((mc_mix(i, time_nodes) - str_pr), 0) put_payoff(i) = max2(0, (str_pr - mc_mix(i, time_nodes))) Next i 'Calculation of Call Value call_temp = 0 For i = 1 To num_sim call_temp = call_temp + call_payoff(i) Next i call_value = Exp(-1 * ini_int_rate * maturity) * (call_temp / num_sim) 'Calculation of Put Value put_temp = 0 For i = 1 To num_sim put_temp = put_temp + put_payoff(i) Next i put_value = Exp(-1 * ini_int_rate * maturity) * (put_temp / num_sim)End Sub'------------------------------------
 
User avatar
fingist
Topic Author
Posts: 0
Joined: July 19th, 2004, 6:21 am

Valuation of Option using Monte Carlo Simulation of a Portfolio of Assets

September 27th, 2004, 6:39 am

Hello Forum! No body has an idea? Come on! Give me some hints.
 
User avatar
fingist
Topic Author
Posts: 0
Joined: July 19th, 2004, 6:21 am

Valuation of Option using Monte Carlo Simulation of a Portfolio of Assets

September 28th, 2004, 10:39 am

Hello, I am running out of time figuring out the problem. Could anyone help me? Thanks in advance!
 
User avatar
spursfan
Posts: 2
Joined: October 7th, 2001, 3:43 pm

Valuation of Option using Monte Carlo Simulation of a Portfolio of Assets

September 28th, 2004, 1:11 pm

well you've certainly discovered how not to solve a problem in financebefore coding you should see if there's a numerical example in the paper that you can follow (or an easier paper written for a practitioner journal or, failing that, a textbook - say hull or something like clewlow and strickland)you should also do some google searches and might find a paper by grant and vora (it may not help in this case but it's a route to follow)then ask for help
 
User avatar
fingist
Topic Author
Posts: 0
Joined: July 19th, 2004, 6:21 am

Valuation of Option using Monte Carlo Simulation of a Portfolio of Assets

October 4th, 2004, 7:42 am

Well So for I understood,In a risk neutral world, solution of Geometric Brownian Motion dXt = r*X*dt+sig*X*dW1t, is Xt = X0*exp((r-sig^2/2)t+sig*W1t) where W1t is a Wiener process. 'r' the short rate follows HW Model, which is described by dr=(theta(t)-ar)*dt+sig_hw*dW2twhere W2t is also a Wiener process, 'a' mean reversion rate. and theta(t) = F'(0,t)+a*F(0,t)+sig_hw^2*(1-exp(-2*a*t))/(2*a)where F(0,t) is the forward rate.I have Interest rate data for the past 20years, how do I calibrate this with HW model to find theta(t)? I could find theta(t) only for20years. But to simulate the portfolio using monte carlo, obviously I need thousands of scenario, how do I get it?Moreover, when I value an european option, how do I discount with r, which itself is stochastic?