Rabelais


Total Posts: 12 
Joined: Sep 2020 


EUROPEAN CALL
When solving the PDE for the value of a European call option under the BlackScholes model using a finite difference scheme, we have that * Initial/terminal condition. (initial since the scheme is solved backward, terminal since it holds at the final time $T$) * Left end boundary condition. If then for all t and the option will surely be out of the money with payoff and for all t * Right end boundary condition. If is large enough (w.r.t. to K) then for all t and the option will end up in the money with payoff and for all t
FORWARD CONTRACT
How to deduce the boundary conditions in a similar manner when solving the PDE for the value of a forward contract whose underlying follows the Schwartz mean reverting model? What I understand until now about forwards is
* There is no money exchanged when signing a forward contract so, using the notation below, I think that the value of the forward at time 0 is * The payoff (of the option equivalent to this forward contract) is since the holder is obliged to buy the underlying at expiry
The Schwartz model is with alpha = speed of mean reversion. From this eq it is possible to derive the PDE for the value of the forward
(1)
whose solution is, letting
(2)
* Initial/terminal condition. Plugging (ie t=T) in (2) we get . This value appears also in the original paper by Schwartz (https://scihub.st/10.1111/j.15406261.1997.tb02721.x at page 5), so it is correct. * Left end boundary condition. As in the European call case, if then for all t and from (1) we get ie F does not change in time, and since as said before (not sure though) it follows for all t. But this means that the payoff of the option would be 0K that is negative, since prices cannot be negative how to deal with this fact? * Right end boundary condition. If is large enough (w.r.t. to K) then for all t and the payoff of the option will be and for all t, but what can we say about the value of ?
At the end of the finite difference scheme, to obtain the value of the option at time 0 we compute which in general is not 0, in contrast with what I said above about $F$ being 0 at time 0. What is wrong in the reasoning?
CODE
What follows is the Matlab code that computes the exact value of the option at time 0 (V_exact in the code) and the value approximated by the Euler explicit finite difference scheme (V_euler). The initial/terminal condition is applied at line 26 (F = ST), the next two lines are for the left end condition (F(1) = 0) and the right end condition (I don't know what to put here).
Moreover, I'm not sure that V_exact is computed correctly, should be or ?
Attached File: boundary_cond.zip 




Rabelais


Total Posts: 12 
Joined: Sep 2020 


This is the plot with spot prices at time T (vector ST in the code) on xaxis and option prices at time 0 ( (FK)*exp(r*T) in the code ) on yaxis. As you can see the there is a problem when the option price approaches the biggest value of the spot price, since the curve goes from linear to exponential, I guess this is due to the fact that the right end condition is missing





You seem to have identified the issue, what is stopping you fixing the code?
I haven't looked at your code but you should be able to set the delta to 1 (adjusted for discounting) or the value to the discounted payoff, for strikes far enough in the tail. 




Rabelais


Total Posts: 12 
Joined: Sep 2020 


@silverside What do you mean with "set the delta to 1 (adjusted for discounting) or the value to the discounted payoff, for strikes far enough in the tail" ?
Yes, I have identified the issue, I think it's due to wrong/missing right end condition for the PDE, but I know neither what is the correct condition nor how to find it, could you help? 




This should be covered in any standard textbook
Either V(S, t) = (SK) exp(  r (Tt))
or
dV/dS = exp(  r (Tt))
For sufficiently large S And assuming zero dividends





tomgailey

Banned

Total Posts: 13 
Joined: Oct 2020 

 

Rabelais


Total Posts: 12 
Joined: Sep 2020 


@silverside Thank you for the help, I tried both your suggestions both none of them worked.
Using the notation of the code in the attachment, I have implemented the first suggestion as follows: V(end) = (x(end)K)*exp(r*N*dt), where x(end) is the biggest S at time T, N is the time step, and since the finite difference scheme works backward in time I used r*N*dt instead of r*(TN*dt). Using this however the curve is still similar to the one in the previous image, that is V grows exponentially for large S instead of linearly.
I have implemented the second suggestion as follows: V(end) = V(end)dx*exp(r*N*dt), where dx denotes dS, but in this case the curve decreases badly as S approaches the final values.
Maybe your suggestions work well in the usual framework of BlackScholes model and European options, but in my case the boundary conditions for the Schwartz PDE for the value of a forward contract needs to be tuned specifically for this problem I think. 





I have to admit I only skim read your initial post and so my answers referred to the vanilla case of European options in the Black Scholes world, apologies for the misunderstanding.
Some quick observations : I don't understand why you are trying to price a forward using a PDE, is it not trivially priceable via replication? Or are you using the zerostrike call as the test case for your pricer?
If your drift and volatility are spotdependent it is entirely possible that your grid pricer is failing to price correctly on certain nodes (grid points) . I would identify the end points and check if both the risk free and the riskless asset are repricing correctly (from your graph it seems like they're not but this may be a coding error, I haven't looked at the code)
Conceptually, I am not sure it is valid to price using the Schwarz model using a PDE as I am not sure how to ensure noarbitrage. But I'm a bit rusty on the theory.




Rabelais


Total Posts: 12 
Joined: Sep 2020 


Don't worry it's ok. The drift and volatility of the spot price SDE are constant and I estimate them from market data. I don't know what is a zerostrike call, and I don't think that the forward in my case is trivially priceable since it is under the Schwartz model.
Take the Schwartz SDE and apply the riskless portfolio method, then you find the PDE for the value of an option on an asset following the Schwartz model. Let's say the variable of this PDE is V, then by letting V(S,t)=F(S,t)*e^(r*(Tt))  where F(S,t) is the price of a forward contract  we get a handier PDE for which an analytical solution is known. The link between the previous option with value V and the forward contract with value F is that the forward contract is equivalent to having an option with , where K=F(S,T). This is what it is written in the course notes (if you want read here is part1 (from the end of page 2 onward) and part2), I'm having a hard time understanding this.
I think that I'm confusing a bit option pricing (first PDE with variable V) with forward pricing (second PDE with variable F), and I'm worried that boundary conditions for the two PDE are different. 





I think you need to go back to basics and review what a forward contract is.
Normally, it's just an agreement to exchange K units of currency for one unit of the stock at a future time T. If interest rates are known (and costofcarry is zero) this is simple to value and doesn't need any PDE.
Pricing by replication is fundamental so make sure you understand that idea before moving on.
Once you have the forward price, you can use the "forward contract" as a test case for your pricing model. A"zero strike call" is simply a call option with strike equal to zero. If the underlying must remain positive, its value is equal to the forward value of the stock (I. E. A forward contract with K=0).



