Fin Maverick
Foundations VocabularyAccounting & ReportingEconomics & MacroQuant Methods & ProgrammingBusiness & Company AnalysisCorporate Finance & ValuationBehavioural Finance
Banking & Market InfrastructureFixed Income & RatesDerivatives & Structured ProductsPublic EquitiesTransactions & DealsPortfolio ConstructionFunds & AMCs
Private Markets & AlternativesRisk, Treasury & ControlAI & Digital FinanceStochastic Calculus & PricingWealth & Personal FinanceIndian Markets & RegulationProfessional Practice
CalculatorComparison
Frameworks
Explore Bootcamps
Equity ResearchPortfolio ManagementMutual Fund MasteryFinancial LiteracyInvestment Banking Analyst
Private Equity AnalystHedge Funds AnalystBreaking Into VCBreaking Into QuantsAI For Finance
Financial Analyst ProgramRisk Management ProgramPrivate Wealth ManagementDebt Capital MarketsDerivatives Foundation
Explore Internships
Equity Research InternMutual Fund Intern
Portfolio Management InternFinancial Literacy Intern
Explore Micro Courses

Equity Research6

Writing an Investment ThesisBuilding a Discounted Cash FlowReading an Annual Report FastReading a Sector Before a CompanySpotting Quality of Earnings Red FlagsBuilding a Revenue Forecast From Drivers

Portfolio Management3

Rebalancing: When, Why and What It CostsStrategic and Tactical Asset AllocationMeasuring Risk in a Portfolio

Mutual Fund Mastery3

Comparing Funds Without Being FooledHow a NAV Is Struck and Which Day You GetReading a Fund Factsheet Properly

Derivatives Unlocked4

Hedging a Real ExposureThe Greeks, PracticallyFutures, the Basis and What Moves ItReading an Option Payoff

AI For Finance2

Retrieval and Grounding for FinanceDocument Extraction in Finance

Breaking Into Quants4

Backtesting a StrategyHypothesis TestingCleaning Financial DataRegression for Finance

Breaking Into VC3

Sizing a MarketReading a Term Sheet as a FounderHow a Venture Round Actually Works

Financial Analyst Program4

Common Size and Trend AnalysisReading a Cash Flow StatementRatio Analysis That Says SomethingBuilding a Working Capital Schedule

Risk Management Program2

Credit Exposure and How It Is ReducedValue at Risk and What It Hides

Investment Banking Analyst3

Precedent Transactions and Why They DifferReading a Term Sheet StructurallyBuilding a Comparable Companies Table

Private Wealth Management3

Tax Aware Portfolio DecisionsBuilding a Client Risk ProfileGoal Based Planning Arithmetic

Debt Capital Markets3

Analysing an Issuer's CreditDuration and What It Does Not Tell YouBond Pricing and Yield Mechanics

Private Equity Analyst2

Fund Waterfalls and CarryThe LBO in Structure

Hedge Funds Analyst2

Short Selling MechanicsLong Short Mechanics
Courses
Explore Career Roadmaps
Investment Banking AnalystEquity Research AnalystVC AnalystPrivate Equity AnalystHedge Funds Analyst
Quant AnalystAI For FinanceFinancial Analyst ProgramPrivate Wealth ManagementDebt Capital Markets
Risk Management ProgramDerivatives FoundationPortfolio ManagementMutual Fund Mastery
PartnershipsShowdown
Log inSign up
Stochastic Calculus & Derivative Pricing Theory
1Probability Foundations
The Probability SpaceRandom VectorsSigma-AlgebraExpectationSample Space and EventsDensity and Distribution FunctionsRisk-Neutral ProbabilityState Price Density vs…
2Stochastic Processes and Jumps
Properties of a Stochastic ProcessMartingaleBrownian Motion and Its PropertiesBrownian Motion vs Geometric…Stopping TimeThe Markov PropertyState VariablesTransition ProbabilityQuadratic VariationQuadratic Variation vs Ordinary…Submartingale and SupermartingaleMartingale RepresentationMarkov Process vs MartingaleOptional StoppingFiltrationJump ProcessesThe Poisson ProcessLevy ProcessesJump Diffusion
3Ito Calculus
The Ito IntegralThe Ito Integral vs the Riemann IntegralInfinitesimals in Stochastic CalculusQuadratic CovariationIto's LemmaHow to Apply Ito's…The Infinitesimal GeneratorIto Calculus vs Ordinary Calculus
4Stochastic Differential Equations
Stochastic Differential EquationsStochastic Differential Equation vs…Drift and DiffusionStrong and Weak Solutions ComparedDiscretisationGeometric Brownian Motion
5Pricing Theory and No-Arbitrage
No-ArbitrageGirsanov, Radon-Nikodym and Change…Physical and Risk-Neutral Measures…The Fundamental Theorems of…The Law of One PriceThe Pricing KernelDiscount Factors and Zero-Coupon PricesReplication vs HedgingComplete Market vs Incomplete MarketClearing Margin Architecture
6Option Pricing Theory
European and American OptionsMonte Carlo European OptionThe Black-Scholes PDEBlack Scholes and the GreeksThe Payoff FunctionThe Binomial ModelBinomial Option PricingDelta Hedging in TheoryBoundary, Initial and Terminal ConditionsThe Exercise BoundaryHow to Check Put-Call…
7Volatility Models
Constant, Local and Stochastic…Vasicek Model vs CIR ModelThe Heston ModelThe SABR ModelThe Volatility ProcessImplied VolatilityVolatility Smile vs Skew vs Surface
8Interest Rate Models
Interest-Rate DerivativesMean ReversionThe Zero-Coupon BondThe Ornstein-Uhlenbeck ProcessThe Discount CurveZero RatesShort-Rate Model vs Market Model
9Numerical Pricing
Closed Form and Numerical…Monte Carlo PricingEuler and Milstein Schemes ComparedTree MethodsFinite Difference MethodsNumerical Error and StabilityVariance Reduction
10Calibration and Model Risk
Model OverrideMarket Price and Model PriceCalibrationHow to Document a Pricing ModelThe Educational Illustration LabelMarket ConventionsModel Uncertainty and LimitationsBacktesting a Pricing ModelIdentifiabilityCalibrated ParametersThe Calibration Loss Function

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.

Same price. Two entirely different questions asked to get it. AVERAGE THE OUTCOMES today payoff many finishes, weighted, then meaned SOLVE THE EQUATION payoff column three known points make one new point, column by column, leftward The left panel needs outcomes. The right panel needs only the equation and the payoff. One averages what might happen. The other solves what must hold.
A lattice and a sampling method both build an average over what might happen, while a grid method takes the pricing equation and solves it directly, marching one column at a time from the payoff back to today.

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.

The pricing equation, written in the logarithm of the level
$$ \frac{\partial V}{\partial \tau} \;=\; \Bigl(r-\tfrac{\sigma^{2}}{2}\Bigr)\frac{\partial V}{\partial x} \;+\; \frac{\sigma^{2}}{2}\,\frac{\partial^{2} V}{\partial x^{2}} \;-\; rV $$
\(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
What it says in wordsThe rate at which the value changes as time remaining grows equals a drift coefficient multiplied by the slope of the value in the logarithm of the level, plus half the variance rate multiplied by its curvature, less the rate multiplied by the value itself. Writing it in time remaining rather than in calendar time turns a problem that runs backwards into one that runs forwards, which is why the payoff becomes a starting condition rather than an ending one.

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.

Try it out

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.

The grid, and the two spacings
$$ x_j \;=\; \log S_0 + (j-M)\,\Delta x, \qquad j=0,\dots,2M \qquad\text{and}\qquad \tau_k \;=\; k\,\Delta t, \qquad \Delta t=\frac{T}{n} $$
\(\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
What it says in wordsThe level axis is cut into nodes evenly spaced in the logarithm, centred on the starting level and running twenty nodes either side of it, and the time axis is cut into equal steps of one year divided by however many steps are taken. Everything the method computes lives at a crossing of those two cuts and nowhere else.

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 spacing in the level is chosen. The spacing in time is then fixed by that choice. SPACE STEP LARGEST TIME STEP FEWEST TIME STEPS IN THE YEAR 0.05 0.062500 16 41 nodes across, so 656 grid points in all 0.025 0.015625 64 81 nodes, so 5,184 grid points 0.0125 0.003906 256 161 nodes, so 41,216 grid points Halving the space step divides the largest time step by four, because the limit carries a square. Twice the nodes, four times the rows, so about eight times the arithmetic for one halving. There is no setting in which the level is refined and time left alone.
The time step must not exceed the squared space step over the squared volatility, so choosing a finer grid in the level forces a finer grid in time, and the number of time steps rises fourfold for every halving of the spacing.
Try it out

The space step is halved, from 0.05 to 0.025. What must happen to the time step?

Risk Management Program Bootcamp — Fin Maverick

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.

A first and a second derivative, replaced by arithmetic on three neighbours
$$ \frac{\partial V}{\partial x}\;\approx\;\frac{V_{j+1}-V_{j-1}}{2\,\Delta x} \qquad\qquad \frac{\partial^{2} V}{\partial x^{2}}\;\approx\;\frac{V_{j+1}-2V_{j}+V_{j-1}}{(\Delta x)^{2}} $$
\(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
What it says in wordsThe slope at a node is the difference between the values at the two neighbours divided by twice the spacing, and the curvature is the sum of the two neighbouring values less twice the middle one, divided by the squared spacing. Both stand-ins are built only from values the grid already holds, and both get closer to the true derivative as the spacing shrinks.
Three values are all a derivative ever needs on a grid. node below the node itself node above one space step lower one space step higher the slope divides the rise across this whole span by twice the space step THIS GAP IS THE CURVATURE the dashed line joins the two neighbours and the middle node does not sit on it
The first derivative becomes the difference across the two neighbours over twice the spacing, and the second becomes the amount by which the middle value misses the straight line joining those neighbours, divided by the squared spacing.
Try it out

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.

The explicit scheme, as three weights
$$ V_j^{k+1} \;=\; a_{\downarrow}\,V_{j-1}^{k} \;+\; a_{0}\,V_{j}^{k} \;+\; a_{\uparrow}\,V_{j+1}^{k} $$ $$ a_{\downarrow}=\Delta t\Bigl(\frac{\sigma^{2}}{2\Delta x^{2}}-\frac{r-\sigma^{2}/2}{2\Delta x}\Bigr),\qquad a_{0}=1-\Delta t\Bigl(\frac{\sigma^{2}}{\Delta x^{2}}+r\Bigr),\qquad a_{\uparrow}=\Delta t\Bigl(\frac{\sigma^{2}}{2\Delta x^{2}}+\frac{r-\sigma^{2}/2}{2\Delta x}\Bigr) $$
\(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
What it says in wordsEach new value on the grid is three old values multiplied by three fixed numbers and added together. Those three numbers depend on the two spacings, the rate and the volatility, and on nothing else, so they are worked out once and reused at every one of the several hundred points the calculation touches.

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.

The stability limit, in two versions
$$ \Delta t \;\le\; \frac{(\Delta x)^{2}}{\sigma^{2}} \qquad\text{and, keeping the discount term,}\qquad \Delta t \;\le\; \frac{1}{\ \sigma^{2}/(\Delta x)^{2}+r\ } $$
\(\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
What it says in wordsThe time step must not exceed the squared space step divided by the squared volatility. At a space step of 0.05 the squared space step is 0.0025 and the squared volatility is 0.04, so the limit is 0.062500, meaning at least sixteen time steps across the year. Keeping the discount term as well tightens the limit to 0.062305, a difference of about a sixth of one per cent, which matters at exactly one setting and nowhere else.

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.

Try it out

What is the stability limit at a space step of 0.05 and a volatility of 20 per cent?

Investment Banking Analyst Bootcamp — Fin Maverick Bond Pricing and Yield Mechanics — free micro-course from Fin Maverick

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.

StepWhat is doneWhat it comes to here
1Choose 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/-
2Work 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
3Compute 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
4Fill 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
5Fix 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
6Sweep 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
7Repeat 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/-
8Compare 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.

Try it out

Before reading on: does breaking the stability limit slightly give a slightly worse answer?

Measuring Risk in a Portfolio teaches you to compute and interpret the standard portfolio risk measures and say what each one misses.

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 stepsTime stepWhat the grid returnsMiddle weightReading
80.125000minus Rs 1,456.542649/-minus 1.006250broken
90.111111Rs 967.332711/-minus 0.795000broken
100.100000minus Rs 495.898876/-minus 0.605000broken
110.090909Rs 228.425262/-minus 0.459091broken
120.083333minus Rs 65.733210/-minus 0.337500broken
130.076923Rs 32.069864/-minus 0.234615broken
140.071429Rs 5.541888/-minus 0.146429broken, and it does not look it
150.066667Rs 11.364281/-minus 0.070000broken, and it does not look it
160.062500Rs 10.331273/-minus 0.003125on the limit, workable
200.050000Rs 10.447356/-plus 0.197500workable
500.020000Rs 10.415025/-plus 0.679000workable
1000.010000Rs 10.404265/-plus 0.839500workable
10000.001000Rs 10.394588/-plus 0.983950workable

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.

One line separates numbers that mean something from numbers that do not. TIME STEPS WHAT THE GRID RETURNED READING 8 minus Rs 1,456.542649/- BROKEN 9 Rs 967.332711/- BROKEN 10 minus Rs 495.898876/- BROKEN 11 Rs 228.425262/- BROKEN 12 minus Rs 65.733210/- BROKEN 13 Rs 32.069864/- BROKEN 14 Rs 5.541888/- BROKEN, AND IT LOOKS FINE 15 Rs 11.364281/- BROKEN, AND IT LOOKS FINE THE STABILITY LIMIT: A TIME STEP OF 0.062500, MEANING SIXTEEN STEPS 16 Rs 10.331273/- ON THE LIMIT, WORKABLE 20 Rs 10.447356/- WORKABLE 50 Rs 10.415025/- WORKABLE 100 Rs 10.404265/- WORKABLE 1000 Rs 10.394588/- WORKABLE checked against a closed form of Rs 10.450584/-, invented Ten steps breaches the limit by less than a factor of two and returns minus Rs 495.898876/-. A call cannot be worth a negative amount, so that is not a bad answer but a broken one.
Sixteen time steps sits on the limit and returns Rs 10.331273/-, and ten steps returns a negative number some forty seven times the size of the true price, with no gradual worsening anywhere in between.
Try it out

Sixteen time steps sits exactly on the stability limit. Before dropping to ten: how bad does the answer get?

Play with it

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.

8 steps16 time steps1,000 steps
The solved row across the grid, at today, all 41 nodes 176.71 0.00 0 36.79 60.65 100.00 164.87 271.83 the level in rupees at each node, dashed line is the closed form for comparison THE THREE WEIGHTS. WHILE ALL THREE ARE POSITIVE THE UPDATE IS AN AVERAGE. nought below 0.481250 middle minus 0.003125 above 0.518750 THE ANSWER AGAINST THE NUMBER OF TIME STEPS, ON A COMPRESSED SCALE all seven workable NO CALL CAN BE WORTH ANYTHING IN THIS BAND the limit, sixteen steps 8 10 12 14 16 20 50 100 1,000 number of time steps in the year, unevenly spaced so the whole range fits The vertical scale is compressed, so every workable reading collapses into the thin green band. That is the size of the gap.
What the grid returns
Rs 10.331273/-
Gap from the closed form
minus Rs 0.119311/-
Largest value anywhere on the grid
Rs 176.705209/-
Growth per step of the sharpest wiggle
1.003125

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.

Educational illustration. Every reading is computed by running the explicit scheme in full on each move of the control, never sampled, so the default reproduces the worked instance exactly. The stability limit is a time step of 0.062500, meaning sixteen steps in the year. The seven readings named in this guide are Rs 10.331273/- at sixteen steps, Rs 10.447356/- at twenty, Rs 10.415025/- at fifty, Rs 10.404265/- at a hundred and Rs 10.394588/- at a thousand, against minus Rs 495.898876/- at ten steps and minus Rs 1,456.542649/- at eight. A call option cannot be worth a negative amount under any circumstances, so those last two are not bad answers but broken ones. Assumptions on screen: starting level Rs 100/-, strike Rs 100/-, rate 5 per cent, volatility 20 per cent, one year, space step 0.05 in the logarithm, forty one nodes running from Rs 36.7879/- to Rs 271.8282/-.

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.

What one step does to the sharpest wiggle the grid can hold
$$ g \;=\; a_{0}-a_{\downarrow}-a_{\uparrow} \;=\; 1-\Delta t\Bigl(\frac{2\sigma^{2}}{(\Delta x)^{2}}+r\Bigr) $$
\(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
What it says in wordsEach step of the scheme multiplies the sharpest possible wiggle by one less the time step times a fixed quantity, which at these settings is 32.05. If the size of that multiplier is below one the wiggle shrinks away step by step and the answer settles. If it is above one the wiggle grows step by step, and it grows by the same factor every step, so over a run of many steps it grows enormously.

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.

Below one the wiggle dies. Above one it is multiplied every step. 20 steps 14 steps 10 steps 8 steps 16 steps sits on the crossing 0 1 2 3 4 0 0.05 0.10 the time step The crossing sits at 0.062402 by the strict test and 0.062500 by the classical one, too close to separate here.
The size of the growth factor falls to nought and climbs again, crossing one at the stability limit, and beyond that crossing every step multiplies the wiggle rather than shrinking it, which is why the failure arrives as a cliff rather than a slope.

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.

Try it out

A grid returns minus Rs 495.898876/- for a call. What kind of problem is that?

Derivatives Foundation Bootcamp — Fin Maverick

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.

Breaking Into Quants Bootcamp — Fin Maverick

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.

Each extra quantity multiplies the grid by 41. It does not add 41. one quantity 41 points two quantities 1,681 points three quantities 68,921 points four quantities 28,25,761 points, before a single time step is taken The bars sit on a multiplying scale: each equal length of bar is another multiplication by 41, which is the only way four counts this far apart can be drawn on one chart at all.
A grid over one uncertain quantity is manageable and a grid over four is not, because each extra quantity multiplies the number of points by the number of nodes rather than adding to it.
Try it out

Why does this method fail on problems carrying many uncertain quantities?

Universal

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.

Tree methods and the Monte Carlo method are set out under their own subjects. Stability as a general matter is treated separately, including the schemes that buy their way out of the limit by doing more work per step. Fitting belongs elsewhere too: every number here is a consequence of parameters written down in advance, and choosing parameters so that a model agrees with an observation set is a later reading order entirely. What an option is and what a call pays come from a different subject area already known, and the contract enters here only as the function whose curvature the mathematics is about. The pricing equation is derived in the option pricing material and is only solved here.

References

SourceDocumentWhere
arXiv, Quantitative FinancePreprints on finite difference schemes for pricing equations and their stability conditionsarxiv.org
Social Science Research NetworkWorking papers on grid based numerical pricing and the comparison of numerical methodsssrn.com
Black, Scholes and Merton, 1973The papers deriving the pricing equation that is solved on a grid hereJournal of Political Economy; Bell Journal of Economics and Management Science
Courant, Friedrichs and Lewy, 1928Ueber die partiellen Differenzengleichungen der mathematischen Physik, which sets out the stability condition on an explicit schemeMathematische Annalen
Charney, Fjortoft and von Neumann, 1950The growth factor argument that tests a scheme by what one step does to the sharpest wiggle a grid can holdTellus

The standard process and the at-the-money contract are invented.
Educational material. Not advice on any investment, tax, budget or market position.

← PreviousNext →
Fin Maverick Micro CoursesExplore Micro Courses
Fin Maverick BootcampsExplore Bootcamps
Fin Maverick

Finance education that ends in a job, not a certificate that gathers dust. Built for young India.

LEARN
CalculatorsFrameworksComparisonsCareersShowdown
RESOURCES
All CoursesMicro CoursesBootcampsInternships
COMPANY
AboutJob openingPartnership
LEGAL
Privacy PolicyTerms & ConditionsContent LicenseReturn & Refund Policy
© 2026 FIN MAVERICK / BUILT FOR INDIA.DO FINANCE, DO NOT JUST READ ABOUT IT.