Finite Difference Methods: Solving the Pricing Equation on a Grid
A finite difference method lays a grid over time and over the level, replaces every derivative in the pricing equation with arithmetic on neighbouring grid points, and solves the resulting system backwards from the payoff. The method solves the equation rather than averaging outcomes. Its two spacings are tied together, and breaking that tie does not cost accuracy, it destroys the answer.
Two spacings, one in time and one in the level, and they cannot be chosen independently. The whole character of the method comes from that single fact. Refine one and the other is forced. Refuse the force and the arithmetic does not degrade politely; it comes apart, and it prints a number that looks like a price and is not one.
What does a finite difference method do?
The idea is older than any of this, and everyone has already used it in an ordinary human version. Suppose the question is how steep a road is at one particular lamp post. Steepness at a point is a derivative, and a point cannot be measured. So the only thing available is done instead: the height of the road is measured at the post before and at the post after, the two are subtracted, and the difference is divided by the distance between them. The number that comes out is not the derivative. The number is an arithmetic stand-in for the derivative, built from two readings that can actually be taken, and the stand-in gets closer to the derivative as the posts get closer together.
Building a stand-in out of nearby readings is the entire idea. A finite difference methodSolving the pricing equation on a grid rather than averaging outcomes. takes an equation written in derivatives, replaces every derivative in it with a stand-in built from readings at nearby points, and then solves the arithmetic problem that is left. Nothing about the idea is specific to prices. A great deal of physics and engineering has been computed this way for a century, and pricing borrowed the method whole.
Now the part that makes this method different from the other three in this reading order. The others all build an average. A lattice walks a branching set of outcomes forward and averages the payoffs back with weights. A sampling method draws many finishes and takes the mean of what they pay. Both are answering the question by asking what might happen and averaging over it. A grid method does not ask that question at all. A grid method takes the differential equation that the price must satisfy at every point, and solves that equation. The word solve is meant literally: the answer comes out of the equation, not out of a set of outcomes.
The queue outside a ticket window makes the difference concrete. The average wait can be found one of two ways. One is the sampling approach: a thousand people are followed through the queue with a stopwatch and the measurements are averaged. The other is to write down the rule for how the length of the queue changes from one minute to the next, and solve that rule. The second way never watches a single person. The answer is the same information, reached through the law of motion rather than through the outcomes, and when the law is known that route is usually the cheaper of the two.
The equation being solved is the one the option pricing material produced, where it is derived. One particular form of it makes the grid arithmetic simple, and the work below uses that form. Instead of working in the level itself, the work is done in the logarithm of the level. The coefficients then stop depending on position on the grid. Every row of the calculation uses the same three numbers rather than a fresh set at every point.
| \(V\) | the value of the contract, as a function of the level and of time remaining |
| \(x\) | the logarithm of the level of the standard process, so \(x=\log S_t\) |
| \(\tau\) | time remaining until the horizon, so \(\tau = T-t\) and \(\tau=0\) at the horizon |
| \(r\) | the risk-free rate, 5 per cent a year here, invented |
| \(\sigma\) | the volatility, 20 per cent a year here, invented |
| \(T\) | the horizon, one year here |
The flip to time remaining changed the direction of the whole problem, and the change is worth stating. The pricing equation is naturally a backwards problem: the value at the horizon is known and the value today is wanted. Working in time remaining turns that into an ordinary forwards march. The march starts with the payoff, the value when no time is left, and steps forwards in time remaining until a whole year has been stepped. At that point the march is standing at today. Every scheme in this guide is a backward solutionWorking from the payoff row back to today, which every scheme here does.. The flip to time remaining is only a bookkeeping trick, and the trick lets a backward solution be written as a forward one.
What does this method solve that the other three in this reading order do not?
What is the grid, and what are its two spacings?
The gridThe mesh of points in time and in the level on which the equation is solved. is a mesh. One axis is time remaining and the other is the logarithm of the level. Both axes are cut into equal pieces, and the value of the contract is computed only at the crossing points. Between the crossing points nothing is computed and nothing is claimed. A grid method delivers a table of values at chosen points, not a formula.
The two cuts have names. The space stepThe spacing in the level, 0.05 in the logarithm here. is the spacing along the level axis, and here it is 0.05 in the logarithm. The time stepThe spacing in time, which cannot be chosen independently of the space step. is the spacing along the time axis, one year divided by the number of time steps. The exponential of 0.05 is 1.051271. A space step of 0.05 in the logarithm therefore puts each neighbouring node about 5.13 per cent above the one below it.
Here is the fact that gives this method its whole character, and it is not obvious. The two spacings cannot be chosen independently. A fine grid in the level and a coarse one in time cannot be chosen together to save work. Choosing the space step fixes an upper limit on the time step, and that limit falls with the square of the space step. Halving the spacing in the level drops the largest workable time step to a quarter of what it was. Four times as many rows must then be computed, and each of those rows now has twice as many nodes in it. Halving one spacing therefore costs roughly eight times the work, not twice.
| \(\Delta x\) | the space step, the spacing in the logarithm of the level, 0.05 here |
| \(\Delta t\) | the time step, one year divided by the number of steps |
| \(M\) | how many nodes sit either side of the starting level, 20 here, giving 41 nodes in all |
| \(S_0\) | the starting level of the standard process, Rs 100/-, invented |
| \(n\) | the number of time steps taken across the whole year |
| \(j,\ k\) | the position of a node along the level axis and along the time axis |
The span matters as much as the spacing, and it is a choice rather than a consequence. The exponential of one is 2.718282 and the exponential of minus one is 0.367879. Twenty nodes either side of the starting level at a spacing of 0.05 therefore puts the lowest node at Rs 36.7879/- and the highest at Rs 271.8282/-. The two edges are where the grid stops. No neighbour lies beyond them to difference against, and the value there has to be stated rather than computed. The two edge conditions do exactly that, and they arrive already known from the option pricing material rather than being chosen here.
The space step is halved, from 0.05 to 0.025. What must happen to the time step?
How does a derivative become arithmetic?
Back to the lamp posts. The slope at the middle post is wanted, and the height at the post either side is available. Subtracting the two and dividing by the distance walked between them gives the first derivative, replaced by arithmetic on two neighbours. The distance is two spacings rather than one. The walk ran from the post before to the post after. The stand-in uses the middle post not at all. The omission surprises people the first time they see it and is exactly right. The slope at the middle is best estimated by looking either side of it, not by looking at it.
The second derivative is curvature, and curvature is the amount by which the middle post fails to sit on the straight line joining its two neighbours. Adding the two neighbours and subtracting twice the middle gives that gap. Dividing by the square of the spacing gives the second derivative. Every derivative in the pricing equation becomes a small weighted sum of three neighbouring values, and once that substitution is made there are no derivatives left anywhere in the problem.
| \(V_j\) | the value of the contract at the node sitting at position \(j\) along the level axis |
| \(V_{j\pm1}\) | the values at the node immediately above and immediately below it |
| \(\Delta x\) | the space step, the distance between neighbouring nodes in the logarithm |
How does a second derivative become arithmetic on a grid?
What is the explicit scheme, and what does it require?
Substitute both stand-ins into the pricing equation and something very clean falls out. The new value at a node is the old value at that node plus a time step multiplied by a combination of the three old values around it. Rearrange and the whole thing collapses to three numbers. An explicit schemeA scheme computing each new point directly from the previous row. computes each new value as a fixed weighted sum of the three values directly beneath it in the previous row, and the same three weights are used at every node and in every row.
| \(V_j^{k}\) | the value at node \(j\) after \(k\) steps of time remaining have been taken |
| \(a_{\downarrow}\) | the weight the new value puts on the node below it in the previous row |
| \(a_{0}\) | the weight it puts on the node directly beneath it |
| \(a_{\uparrow}\) | the weight it puts on the node above it in the previous row |
Now look hard at those three weights. The entire behaviour of the method is sitting in them and nowhere else. Add them up. At a time step of 0.05, twenty steps in the year, the weights come to 0.385000, 0.197500 and 0.415000, and they sum to 0.997500. The sum is not an accident. One less the rate multiplied by the time step is a step of discounting. So when all three weights are positive, the new value is a discounted weighted average of three old ones.
The single observation about positive weights is the whole safety property. A weighted average with positive weights can never leave the range of the things being averaged. If the three values beneath a node are all somewhere between nought and Rs 176.7052/-, a positive weighted average of them is between nought and Rs 176.7052/- too. With the whole calculation started from a payoff row that is never negative and the weights kept positive, no value anywhere on the grid can ever go negative. The method is safe not because someone proved a theorem about it but because it is doing arithmetic that cannot produce a number outside the range it started in.
And now the failure mode is obvious before a single broken number has appeared. The middle weight is the only one of the three that can go negative, and it goes negative when the time step gets too big. The moment it does, the update stops being an average and becomes a subtraction, and a subtraction has no range to stay inside.
| \(\Delta t\) | the time step, which is what this condition constrains |
| \(\Delta x\) | the space step, 0.05 here, chosen first |
| \(\sigma\) | the volatility, 0.20 here, so the squared volatility is 0.04 exactly |
| \(r\) | the risk-free rate, 0.05 here, which tightens the limit very slightly |
The classical condition, the one that drops the discount term, carries the names of Courant, Friedrichs and Lewy, who set it out in 1928 for wave problems long before anyone priced anything with it. The three names are worth carrying. The same condition reappears wherever an explicit scheme is used, and a reader who has met it in a physics course has already met it here.
The stability limitThe largest time step the explicit scheme tolerates, 0.062500 here. at these settings is therefore 0.062500 and sixteen steps sits exactly on it. The strict version, 0.062305 rather than 0.062500, is a detail almost everywhere. At sixteen steps the difference stops being a detail, and sixteen steps is the one setting sitting between the two. At sixteen steps the middle weight is minus 0.003125, faintly negative. Sixteen steps therefore returns Rs 10.331273/- against Rs 10.447356/- at twenty steps. The reading exactly on the classical limit is the least accurate of all the workable ones.
What is the stability limit at a space step of 0.05 and a volatility of 20 per cent?
How to Set Up a Finite-Difference Pricing Grid
Everything above is now enough to build one from nothing, and the build is short. The worked instance is the at-the-money contract of this subject area, strike Rs 100/-, one year, on the standard process starting at Rs 100/- with a volatility of 20 per cent against a rate of 5 per cent. The closed form it is being checked against is Rs 10.450584/-, the locked figure every method in this subject area is measured against.
| Step | What is done | What it comes to here |
|---|---|---|
| 1 | Choose the space step, and how far the grid should reach either side of the starting level. | 0.05 in the logarithm, twenty nodes either side, so 41 nodes running from Rs 36.7879/- to Rs 271.8282/- |
| 2 | Work out the largest time step the space step allows, then choose a number of steps at or below it. | Squared space step 0.0025 over squared volatility 0.04, giving 0.062500, so sixteen steps or more |
| 3 | Compute the three weights once, from the two spacings, the rate and the volatility. | At twenty steps they are 0.385000 below, 0.197500 middle and 0.415000 above, summing to 0.997500 |
| 4 | Fill the first row with the payoff, which is the value when no time is left. | Nought at every node below the strike, and the level less Rs 100/- at every node above it |
| 5 | Fix the two edge nodes, which have no neighbour on one side to difference against. | Nought at the bottom edge; at the top edge the level less the strike discounted over the time remaining |
| 6 | Sweep every interior node using the three weights, producing the next row from the one before it. | 39 interior nodes per sweep, one sweep per time step |
| 7 | Repeat until a full year of time remaining has been accumulated, then read the middle node. | Twenty sweeps at a step of 0.05, and the middle node is the starting level of Rs 100/- |
| 8 | Compare against the closed form and record the gap rather than hiding it. | Rs 10.447356/- against Rs 10.450584/-, a gap of minus Rs 0.003228/- |
Two things about that build are the parts a first attempt gets wrong, and both are worth pausing on. The first is step five. The edge nodes are not computed, they are imposed, and they are imposed at every row rather than once. The strike at the top edge is discounted over the time remaining, and the time remaining grows. The top edge therefore changes as the calculation marches. Fixing the top edge once and leaving it alone puts a slow error into every row after the first.
The second is step two, and it is the one this guide exists for. Step two looks like a performance decision, the place where accuracy is traded against how long the calculation takes to run. No such trade is on offer. The limit is a hard boundary with nothing on the far side of it, and the rest of this guide is about what happens when the boundary is crossed.
Before reading on: does breaking the stability limit slightly give a slightly worse answer?
What happens when the requirement is broken?
Below is what the scheme actually printed. Each figure is the number the arithmetic above returns at that number of time steps, with the space step held at 0.05 throughout, computed to six decimal places.
| Time steps | Time step | What the grid returns | Middle weight | Reading |
|---|---|---|---|---|
| 8 | 0.125000 | minus Rs 1,456.542649/- | minus 1.006250 | broken |
| 9 | 0.111111 | Rs 967.332711/- | minus 0.795000 | broken |
| 10 | 0.100000 | minus Rs 495.898876/- | minus 0.605000 | broken |
| 11 | 0.090909 | Rs 228.425262/- | minus 0.459091 | broken |
| 12 | 0.083333 | minus Rs 65.733210/- | minus 0.337500 | broken |
| 13 | 0.076923 | Rs 32.069864/- | minus 0.234615 | broken |
| 14 | 0.071429 | Rs 5.541888/- | minus 0.146429 | broken, and it does not look it |
| 15 | 0.066667 | Rs 11.364281/- | minus 0.070000 | broken, and it does not look it |
| 16 | 0.062500 | Rs 10.331273/- | minus 0.003125 | on the limit, workable |
| 20 | 0.050000 | Rs 10.447356/- | plus 0.197500 | workable |
| 50 | 0.020000 | Rs 10.415025/- | plus 0.679000 | workable |
| 100 | 0.010000 | Rs 10.404265/- | plus 0.839500 | workable |
| 1000 | 0.001000 | Rs 10.394588/- | plus 0.983950 | workable |
At ten time steps the method returns minus Rs 495.898876/- for a call option, and at eight time steps it returns minus Rs 1,456.542649/-. Ten steps is a breach of the limit by less than a factor of two: the limit is 0.062500 and ten steps uses 0.100000. Sixteen steps sits on the limit and returns Rs 10.331273/-. Ten steps, one and six tenths of the way past it, returns a negative number roughly forty seven times the size of the true price and pointing the wrong way. There is nothing between those two readings that could be called a degradation.
Read down the sign of that middle column and the point makes itself. Minus, plus, minus, plus, minus, plus. Blow-upWhat an unstable scheme does, producing numbers with no relationship to anything. flips the answer from one side of nought to the other for every single extra time step added. A quantity that changes sign when one step is added to a calculation is not converging to anything. The problem is not that the grid is too coarse, and no amount of further refinement inside the broken zone will help.
Sixteen time steps sits exactly on the stability limit. Before dropping to ten: how bad does the answer get?
Cross the limit yourself and watch the grid come apart
Held fixed: the starting level at Rs 100/-, the strike at Rs 100/-, the rate at 5 per cent, the volatility at 20 per cent, the horizon at one year and the space step at 0.05 in the logarithm. The only thing that moves is the number of time steps. Every reading is the explicit scheme above, run in full on each move of the control, so the same setting always returns the same number. The default of sixteen steps sits exactly on the limit and reproduces the worked instance.
At sixteen time steps the time step is 0.062500, exactly on the limit of 0.062500, and the grid returns Rs 10.331273/- against the closed form of Rs 10.450584/-. The middle weight is minus 0.003125, a hair below nought, which is why this reading is the least accurate of all the workable ones.
Why is there no gradual degradation?
The three weights have already said as much, but there is a sharper way to see it that costs one line of arithmetic. The grid does one particular thing to the nastiest shape it is capable of holding. On a grid of discrete nodes, the fastest thing that can be drawn is a value that flips sign at every single node: up, down, up, down. Nothing wigglier exists. There are no points in between to wiggle at.
The alternating shape fed into the update comes back in one particular way. The node below and the node above are both the opposite sign to the middle, so their contributions come back with a minus in front, and the whole thing collapses to a single number multiplying the shape that went in.
| \(g\) | the growth factor, what one step of the scheme multiplies the alternating shape by |
| \(a_{\downarrow},a_{0},a_{\uparrow}\) | the three weights of the explicit scheme, as above |
| \(\Delta t,\ \Delta x\) | the time step and the space step |
| \(\sigma,\ r\) | the volatility and the rate, 0.20 and 0.05 here, both invented |
Put the numbers in. At twenty steps the multiplier is minus 0.602500, whose size is below one, so any wiggle present is cut down by about forty per cent each step and after twenty steps essentially nothing of it survives. At sixteen steps the multiplier is minus 1.003125, whose size is a whisker above one. A wiggle grows by about a third of a per cent each step and by 1.051189 across the full run, a nudge and not a catastrophe. At ten steps it is minus 2.205000, so a wiggle more than doubles at every single step, and across ten steps it is multiplied by 2,717. At eight steps the multiplier is minus 3.006250 and the run multiplies by 6,671.
The exponent is the answer to why there is no middle ground. The multiplier does not creep past one; it passes through one at a definite time step and then climbs steeply, and whatever it is gets raised to the power of the number of steps. A multiplier of 1.05 over sixteen steps is a rounding difference. A multiplier of 2.2 over ten steps is a factor in the thousands. The two settings differ by a time step of four hundredths of a year.
And the payoff hands the scheme a wiggle to work with, whether or not anybody intended it. The payoff of the at-the-money contract has a kink at the strike: flat below Rs 100/-, sloping above it. A kink is exactly the kind of shape that contains a little of the alternating component. Inside the limit that component is squashed flat within a handful of steps and never seen again. Outside the limit it is the seed, and the scheme spends every step multiplying it.
The error that gets made, and what it costs
The mistake is reading a small breach of the stability requirement as a small loss of accuracy. The mistake is a natural one. Almost every other numerical choice behaves that way. Take half as many sample paths and the answer gets somewhat noisier. Use half as many lattice steps and the answer gets somewhat coarser. Both degrade. The explicit scheme does not degrade, and a reader who carries the habit across gets an answer with no relationship to anything and no warning that it has happened.
The limit here is a time step of 0.062500. Sixteen steps sits exactly on it and returns Rs 10.331273/-. Ten steps, a breach of less than a factor of two, returns minus Rs 495.898876/-. Eight steps returns minus Rs 1,456.542649/-. A call option cannot be worth a negative amount under any circumstances, so those are not inaccurate prices but broken arithmetic wearing the shape of a price.
The usual consolation is that an output this absurd cannot be believed, and the numbers in this guide show that consolation has a hole in it. At fourteen time steps the scheme returns Rs 5.541888/-. At fifteen it returns Rs 11.364281/-. Both breach the limit. Both are positive, both are the right order of magnitude for an option on a Rs 100/- level, and at fifteen steps every value on the grid is non-negative so even a sign check passes. Yet fourteen steps is out by 46.97 per cent and fifteen steps by 8.74 per cent, and neither is converging to anything. The cost is a scheme run just outside its limit and trusted, and the readings most likely to be trusted are the ones just outside, not the ones far outside.
The protection is not vigilance about whether the answer looks sensible. The protection is a check of the time step against the limit before the scheme is run at all, one division and one comparison.
A grid returns minus Rs 495.898876/- for a call. What kind of problem is that?
Does a finer grid in time bring the answer closer to the closed form?
Look again at the workable column and something awkward is sitting in it. Twenty steps gives Rs 10.447356/-, Rs 0.003228/- below the closed form. A thousand steps gives Rs 10.394588/-, Rs 0.055996/- below it. The thousand step answer is seventeen times further from the closed form than the twenty step answer. Refining time made it worse.
The reversal is not a contradiction and not a fault in the arithmetic. The reversal is the consequence of holding one spacing still while refining the other. There are two separate errors on this grid. One comes from the time step and shrinks as steps are added. The other comes from the space step, fixed at 0.05 throughout, and does not move at all. Refining time alone does not converge to the closed form. The refinement converges instead to the answer a space step of 0.05 can give, Rs 10.394588/-, and that answer sits Rs 0.055996/- below the closed form.
So the twenty step reading is not better. Twenty steps is luckier. Its time error happens to point the other way from its space error and the two nearly cancel, and a cancellation nobody arranged is not accuracy. If somebody chose twenty steps because it agreed best with the closed form, they would have chosen it for a reason that would not survive a change of strike, of horizon or of volatility.
Getting genuinely closer means refining the space step, and refining the space step drags the time step down with it. The tie is the one this guide opened with. Halving the space step to 0.025 cuts the residual gap from Rs 0.055996/- to about a quarter of itself, and it demands at least sixty four time steps rather than sixteen. The error in the space step falls with its square, so the reward for the extra work is real, and the work is the eightfold sort described earlier rather than the twofold sort that might have been hoped for.
What does a grid hand over that a single price does not?
Here is the practical reason somebody reaches for this method over the alternatives even when a formula exists. The other methods give a number. A grid gives a row. When the sweep reaches today it has not computed the value at the starting level; it has computed the value at all forty one levels, from Rs 36.7879/- up to Rs 271.8282/-, and it did so for the same cost.
The whole row is the thing people actually want. Someone managing a position needs the worth of the contract now, how that worth moves if the level moves, and how fast that movement itself changes. Both of those are derivatives in the level, and the row already has them: applying the same two stand-ins from earlier in this guide to the values at the three nodes around the middle makes the sensitivities fall out with no extra computation at all.
Doing exactly that on the thousand step row gives a slope of 0.637291 and a curvature of 0.018908 per rupee, against the locked closed-form figures of 0.636831 and 0.018762 for the same invented contract. The gaps are 0.000460 and 0.000146, and they are the same space-step error already identified, showing up in the sensitivities as well as in the price. A sampling method reaches those two quantities only by re-running the whole exercise at shifted levels and differencing the results. The re-run costs several times as much and comes back noisy. The row is the real product of a grid method, and the price at the middle node is only the entry in it somebody happened to ask for.
Consider a survey of a bridge deck. One measurement at the centre span gives the height at the centre span. A level run across the whole deck at fixed intervals gives the height everywhere, and it also gives the gradient and where the deck is bending, none of which the single measurement could have given at any price. The grid is the level run.
Where does this method stop being usable?
The method stops when the problem carries more than one or two uncertain quantities, and it stops abruptly. The grid in this guide holds 41 nodes across one level. Add a second uncertain quantity, a variance that moves for instance, and the grid becomes 41 by 41, or 1,681 points per row. A third quantity makes it 68,921. A fourth makes it 28,25,761, and that is before a single time step has been taken.
The counting is the whole argument. Every additional quantity multiplies the number of points by 41 rather than adding 41 to it. Work that is comfortable at one quantity is heavy at three and impossible at five. Each extra quantity multiplies again, and no amount of faster hardware changes the shape of that growth. A sampling method faces nothing of the kind: adding a quantity to a sampled path costs one more number per path per step, so its cost rises roughly in proportion rather than by repeated multiplication. A grid loses decisively to sampling here, and it loses on counting rather than on cleverness.
The everyday version is a stock check. Counting one shelf of tins is a minute of work. Counting a shelf by size gives ten counts. Counting by size, by flavour and by expiry month gives every combination of the three, and a fourth split turns a job that could be done before lunch into one nobody will finish. Nothing got harder to count. The categories multiply, and there is simply vastly more of it.
Why does this method fail on problems carrying many uncertain quantities?
The mathematics here carries no jurisdiction
No authority sets the stability limit, and no authority could. A stability limit of 0.062500 at a space step of 0.05 and a volatility of 20 per cent is a consequence of arithmetic and holds identically everywhere. The one thing that would carry a jurisdiction is the contract the method is being pointed at, and contracts arrive here already known from a different subject area and are used only as functions whose curvature the mathematics is about.
What is it, and what is it not?
A finite difference method is a way of turning an equation into arithmetic on a mesh, and of solving that arithmetic backwards from a known payoff. The method hands back a whole row of values rather than one, and the sensitivities in the level come out of that row for nothing. The method carries a hard requirement tying its two spacings together, and the requirement is a boundary rather than a preference.
A grid method is not an averaging method, and calling it one gets the intuition wrong from the first step. The method is not a way of avoiding the pricing equation. The method is a way of solving that equation when the solution cannot be written down. The method is not robust to a coarse setting in the way sampling is. Sampling coarsely gives a noisy answer, and gridding coarsely gives no answer at all. And it is not the only scheme available: the explicit scheme used here is the one whose behaviour is easiest to see, and other schemes trade the arithmetic per step against the freedom to choose the two spacings separately. The other schemes belong with the treatment of numerical error and stability rather than here.
References
| Source | Document | Where |
|---|---|---|
| arXiv, Quantitative Finance | Preprints on finite difference schemes for pricing equations and their stability conditions | arxiv.org |
| Social Science Research Network | Working papers on grid based numerical pricing and the comparison of numerical methods | ssrn.com |
| Black, Scholes and Merton, 1973 | The papers deriving the pricing equation that is solved on a grid here | Journal of Political Economy; Bell Journal of Economics and Management Science |
| Courant, Friedrichs and Lewy, 1928 | Ueber die partiellen Differenzengleichungen der mathematischen Physik, which sets out the stability condition on an explicit scheme | Mathematische Annalen |
| Charney, Fjortoft and von Neumann, 1950 | The growth factor argument that tests a scheme by what one step does to the sharpest wiggle a grid can hold | Tellus |
The standard process and the at-the-money contract are invented.
Educational material. Not advice on any investment, tax, budget or market position.
