5

They have written the equation to be solved as $$ -\frac{\partial C}{\partial t} + r S \frac{\partial C}{\partial S} + ... = 0 $$ instead of the more usual $$ \frac{\partial C}{\partial t} + r S \frac{\partial C}{\partial S} + ... = 0 $$ This means that in their setup $t$ represents the time to maturity, that is $t = T - \text{time}$. So they start from $t ...


5

The PDE is defined for $x \in ]-\infty, +\infty[$ but the finite difference scheme requires a truncated domain $[x_{\min}, x_{\max}]$, and the choice of $x_{\min}$ and $x_{\max}$ will affect the quality of the result, regardless of the scheme being explicit, implicit, or mixed. A good rule of thumb is to choose the truncation $[x_{\min}, x_{\max}]$ such ...


4

Ikonen and Toivanen don't say that the LCP is solved exactly, they simply say that the modified back-substitution is a valid algorithm to solve the LCP. A numerical error may arise around the location of optimal exercise, since it does not fall directly on the finite difference grid. I think that however, the error is of the same order as the discretization ...


3

You can consult Seydel pages 99-106 for explicit FD or for a short summary this link. The idea is that you cannot choose $k$ and $\frac{h^2}{2}$ independently for stability.


3

Who gave you that idea? You absolutely can use Finite Differences for other PDEs. They are routinely used to solve hyperbolic PDEs (wave equation, both first and second order) and elliptic PDEs (steady state diffusion/heat equation). You can even mix and match the equation types and create PDEs that have characteristic of both hyperbolic and parabolic ...


2

I just wanted to say that I solved the problem using the symbolic/analytical features of Mathematica and Matlab to perform the inverse Fourier transform and then I used high-order numerical integration to solve the smoothing integral.


2

When you use a fully explicit finite difference scheme, you can simply apply the backward induction step and afterwards ensure that the option price at each node is at least equal to the intrinsic value. This is possible as any value $V_{i + 1, j}$ at time $\tau_{i + 1}$ only depends on the values $V_{i, j}$ at time $\tau_i$. When you use a scheme that is ...


2

Assuming that you Have an (or a set of) SDE(s) describing the dynamics of an asset $X$, with $t$-value $X_t$; Define $V$ as a claim contingent on the asset $X$, with $t$-value $V_t$; Define $N$ as a claim that may but need not be contingent on the asset $X$, with $t$-value $N_t$; Define a probability measure $\mathbb{Q}^N$ associated to the asset $N$ such ...


2

The problem with your formula is the equation sign $=$. The second order finite difference is only an approximation to the true gamma: $$ f^{\prime \prime}(x) \approx \frac{f(x+h)-2f(x)+f(x-h)}{h^2}. $$ $h$ can not be a result. Ideally, it should be small (whatever that means), so your original choice of $1\text{bp}$ seems appropriate for this ...


2

The question about the availability of closed-form solutions can generally not be answered for types of options alone but only for the combination of a payoff function and the underlying asset dynamics. Consider for example European plain vanilla options. These have a (quasi) closed-form solution when the underlying follows an exponential Levy processes ...


2

Wherever your discretized PDE references $V_{N,j,k+1}$, you will use your expression for $V_{N,j,k+1}$ in terms of $V_{N−1,j,k+1}$ and $V_{N−2,j,k+1}$ to eliminate $V_{N,j,k+1}$ from the discretized equation. This means that the algebraic system you will solve will not involve any $V_{N,j,k+1}$ values directly (so no $C_{k+1}$ contribution from the F-...


2

a few pointers: did you use appropriate boundary conditions ? how did you truncate the space domain ? in particular it is common to first do a change of variable to get a better behaved $A$ matrix with all terms roughly of the same size. For instance in the "log normal" SABR case ($\beta=1$) it would be appropriate to work in $(x, y) \in ]-\infty, +\infty[...


2

If you are asking whether it is possible to price path-dependent American options in tree based models, the short answer is yes. You simply construct your tree/grid and evaluate the rules in each node (analogous to what you would do in your MC simulations). These rules can be arbitrarily complex. Note, however, that you can only evaluate them at a discrete ...


2

The usual way is to fit a surface (e.g. smoothing splines) to the grid and to compute derivatives off the surface. Note however that the entire process tends to be more stable when applying the Dupire formula directly to the implied vol surface rather than to the option price surface. The Dupire formula when applied to the implied vol surface $\Sigma(K,T)$ ...


2

Actually recombining binomial trees are only a particular case of an explicit FDM scheme. But they have obvious limitations, the foremost being that they cannot accomodate local volatilities. Also 1/2 explicit 1/2 implicit FDM schemes (Crank-Nicolson) have faster convergence with respect to the size of the time step. And FDM schemes can accomodate all sorts ...


1

The usual approach to deal with path dependency in finite differences/lattices solvers is to capture the path dependency trough one or more auxiliary variable(s) that make the problem non path dependent in the augmented space, and to discretize along these auxiliary variable(s). For instance that's easily done for asian options where the path dependency is ...


1

This depends on quite a few other inputs. If you're comparing deltas, what's the volatility of the underlying and the moneyness of the derivative (whether call, put, or something more exotic). I've done valuations that need 10 million simulations (5x out of the money options with 10 years until expiration) and others where 10,000 is perfectly sufficient (at ...


1

Ok, problem solved. The Implicit finite difference method must be implemented with $\sigma(t)=1+t$, not with his approximated value.


1

For the maturity, choose a grid $\{t_0=0,t_1,\dots,t_n=T\}$ such that $T$ is the option's maturity. For the underlying, if it is positive, you might choose an upper boundary by selecting a grid $\{S_0=0,S_1,\dots,S_{\max}\}$ such that the derivative's delta at $t_{n-1}$ is above a threshold $D$ in order to specify a boundary condition such as: $$ \frac{\...


1

Answer is very straightforward: always center your grid on the current spot value and make sure that it covers sufficiently many standard deviations on each side to cover enough of the terminal distribution at maturity. In particular it should cover the forward at maturity. NB: By definition when you use a FDM you will get back the grid of all values of ...


1

From a cursory look, the FdBlackScholesBarrierEngine seems to do what you want; when the localVol parameter is set to true, it will use the local volatility contained in the passed process. I'd suggest you to check the code, though. As a further note: the GeneralizedBlackScholesProcess class converts the Black volatility to the local one internally (see the ...


1

The cross derivative FD formula is wrong to start with. If you take out the factor 4 from the denominator, it would become a valid (1st order) formula. As is, it's plain wrong and may well be the reason for your problems (though of course there may be more reasons). By the way, your other spatial FD approximations are second order, so not sure you intended ...


1

First and foremost I do not agree with you Closed Form value. I get $\Theta=-8.963$. There are various of BS calculator you can use the check your results and in general you should do that. Here is one: https://goodcalculators.com/black-scholes-calculator/ Have in mind that maturity T is fixed then your forward FD problem should look like this: $$ \Theta(T-...


1

Another approach would have been to use some projection as in Pooley and Vetzal Convergence remedies for non-smooth payoffs in option pricing. In your case, it may be a projection of the initial condition to the RBF space (I have read your paper, and it looks interesting). I wonder a bit how the two approaches compare.


1

QuantLib does give you the value function, but it's very well hidden. Also, it's only for $t=0$. Once you have your option built and your finite-difference engine set, you can write for instance: SampledCurve prices = option.result<SampledCurve>("priceCurve"); for (Size i=0; i<prices.size(); ++i) std::cout << prices.gridValue(i) << ...


1

I would recommend to do both. Consider the situation where a single discrete dividend is paid at $t$. You use a Finite Difference (FD) scheme to price a European option. Starting from the terminal condition at $T$, by backward induction you manage to obtain the solution $$V(t^+, \mathcal{S})$$ for a discrete grid of spot levels $\mathcal{S}$ at time $t^+$. ...


1

You should ask your data provider how exactly they come up with this number. Many implementations divide theta by 365 or some other yearly day count to arrive at "theta per day". It should be simple enough to check the value: for a European option, you can use the analytic formula; for American Options, you can use a tree. Methods to get the Greeks in the ...


1

I don't know of any libraries for this. There is a pretty good literature on the problem you mention though. I suggest https://cs.uwaterloo.ca/~paforsyt/numuncert.pdf as a good paper to follow; they study numerical techniques, document pitfalls, and even prove something about convergence of their preferred approach.


1

Some techniques I can think of include Use a brownian bridge to get a crossing probability for points near the boundary Use implicit stepping in your PDE solver (which increases smoothness) as opposed to explicit stepping (which "rings" near discontinuities) Employ control variates, by using the same grid to price related instruments having easy analytic ...


Only top voted, non community-wiki answers of a minimum length are eligible