Boundary, Initial and Terminal Conditions: Pinning Down the Solution
An equation says how a quantity changes and not what it is, so on its own it admits many solutions. Conditions pin one down. The condition at the horizon carries the contract. The conditions at high and low levels carry the setting. Get any of them wrong and the equation will still solve, to something else entirely.
The equation is a constraint on change. The conditions are constraints on value. Neither alone determines anything, and it is the pairing that produces a single answer. Because the pairing looks like paperwork sitting beside the interesting object, it is the part of the pricing machinery most often skipped.
The pairing is not paperwork. The equation is covered separately and is used here rather than re-derived. The remaining work is naming what else has to be handed over before the equation means one number instead of an unlimited collection of them. Three things must be supplied, each one sits at a named place, and when a number moves it is one of those three that has changed.
Here is the everyday version, and it needs nothing more than a set of directions. An instruction says: walk two kilometres north. Because the instruction describes a change of position rather than a position, it is complete, unambiguous and entirely useless for finding a person. Asked where it ends up, the honest answer is that it depends on where it started. Add the starting address and the instruction now names exactly one place. An equation is the instruction, a condition is the starting address, and a price is the place.
Why does the equation on its own have many answers?
The pricing equation is a relation between three sensitivities of the value: how it responds to the passage of time, how it responds to the level of the process, and how it curves in that level. Every one of those is a rate of change. Nowhere in the equation does a number appear that says what the value actually equals at any particular time and any particular level.
| \(V(t,S)\) | the value of the contract, a function of the time and of the level of the process |
| \(S_t\) | the standard process, invented for this subject area, starting at Rs 100/- and moving by proportional increments |
| \(\sigma\) | the volatility of the process, 20 per cent a year here, decimal 0.20 |
| \(r\) | the risk-free rate, 5 per cent a year continuously compounded, decimal 0.05 |
| \(t\) | a general time between today and the horizon \(T\), which is one year here |
Read as a sentence about slopes, it is immediately clear why it cannot deliver a number. The equation is a rule that a value function must obey, not a description of any particular value function. Asked what the contract is worth today, it answers, quite correctly, that whatever the answer is, it changes in a certain disciplined way.
An equation admitting many solutions at once is multiplicityAn equation admitting many solutions until conditions are supplied, so that the equation alone selects nothing., and it is easiest to believe with four different solutions held side by side. The four below all satisfy the equation above exactly, at every time and at every level. Not approximately, not in a limit: substituting any one of them makes every term cancel.
| \(K\) | a constant, taken as Rs 100/- here so the readings are comparable |
| \(T-t\) | the time remaining to the horizon, one year at today |
| \(V_1\) | the level itself, whose slope is one and whose curvature is nought |
| \(V_4\) | the value nought everywhere, whose every derivative is nought |
Check the first one by hand and the point lands. If the value equals the level, then its sensitivity to time is nought, its curvature is nought, and its slope is one. Feed those in: the first term goes, the second goes, the third leaves the risk-free rate multiplied by the level, and the last subtracts the risk-free rate multiplied by the value. The value is the same level, so the two survivors cancel exactly. The fourth is even blunter. The value nought everywhere satisfies the pricing equation perfectly. The equation therefore cannot rule out an answer of nothing at all.
The four solutions above are not the whole collection either. Any weighted combination of them is another solution, and so is the level squared multiplied by a particular growing factor, and so are infinitely many functions nobody would ever write down. There is no shortage. The problem was never that the equation is hard to satisfy.
Why does the equation on its own not determine a price?
Now look at those four solutions drawn on the same axes, at today, across a range of levels. The four are not small variations on one another. At a level of Rs 100/- they read Rs 100.000000/-, Rs 95.122942/-, Rs 4.877058/- and nothing, and the fourth of them dips below nothing for most of the range. No price ever does that. The equation is entirely content with all of it.
What has to be supplied at the horizon, and what does it settle?
The Terminal Payoff, and what it settles
The first thing supplied is a statement of what the value equals at the far end of time. At the horizon there is no time left, nothing further can happen, and the value of the contract is simply whatever the contract delivers at that instant. The statement of what the value equals at the horizon is the Terminal PayoffWhat the value must equal at the horizon, which is the condition that carries the description of the contract itself.. Because the level at the horizon is not known today, the payoff is supplied as a function of the level rather than as a single number.
| \(T\) | the horizon, one year from today at the locked parameters |
| \(g(S)\) | the payoff function, what the contract delivers at the horizon at each level |
| \(V(T,S)\) | the value at the horizon, which has to agree with the payoff at every level |
Two things about that are worth slowing down on. The first is that it is a condition on a whole function, not on a number. The claim is not that the contract will be worth something specific at the horizon. The claim is that whatever level the process has reached by then, the value at that level is already known, and the condition is the rule that gives it. The second is that this is the only place in the whole guide where a description of the contract enters. Everything else is a statement about the setting.
For the locked contract on the standard process, at a strike of Rs 100/-, that statement reads out as a table. The table below is not a computation. There is nothing to compute. At the horizon the value is the payoff by definition, and the table is simply the payoff written down at a handful of levels. Written down that way, the shape of the condition is visible rather than the notation for it.
| Level at the horizon | Value at the horizon, locked contract | Value at the horizon, counterpart contract |
|---|---|---|
| Rs 0/- | nil | Rs 100/- |
| Rs 50/- | nil | Rs 50/- |
| Rs 80/- | nil | Rs 20/- |
| Rs 100/- | nil | nil |
| Rs 120/- | Rs 20/- | nil |
| Rs 150/- | Rs 50/- | nil |
Every one of those rows is a hard equality that the solution has to honour, and together they are the only place the contract gets a say. Change one row and something else has been described. The condition at the horizon is therefore treated differently from the other two, and that difference is the judgement the rest of the argument rests on.
Which end of time does the terminal payoff sit at?
Why is a condition at the far end of time sometimes called an initial one?
The Initial Condition, and why the name misleads here
In circulation is the phrase Initial ConditionA condition supplied at the start of time for the equation being solved, which in this setting is the horizon rather than today, because the time variable has been reversed. attached to exactly the statement described above, and it is fair to find that confusing. An initial condition, everywhere else in mathematics, is data supplied at the beginning. Here the data is supplied at the end. Both names are in circulation and neither is wrong, and the reason is a change of variable that takes about one line.
The equation as written runs in calendar time, and the data sits at the far end of it, so the solution has to be carried backward from the horizon toward today. Substitute the time remaining for the calendar time and the whole thing turns around. In the new variable the data sits at zero, the solution runs forward, and what was a terminal condition is now, quite literally, an initial one.
| \(\tau\) | the time remaining to the horizon, running from nought at the horizon to \(T\) at today |
| \(\partial V/\partial \tau\) | the sensitivity of the value to the time remaining, which is the sensitivity to calendar time with the sign reversed |
| \(V(0,S)\) | the value when no time remains, which is the payoff, now sitting at the start of the new clock |
Nothing changed except the direction the clock counts. The equation, the contract and the answer are identical. But the naming matters for a practical reason: almost every numerical method for this kind of equation is written to march forward from a starting slice, so an implementation will almost always be reversing time internally whether or not it says so. A routine handed a payoff that calls the argument an initial condition is not confused. The routine is working in the reversed clock.
What do the conditions at the low and high levels say?
The condition at the horizon fixes the value along one edge of the picture, the edge in time. The horizon condition says nothing about what happens at extreme levels before the horizon arrives, and a solution has to be pinned there too. Statements about the low and the high level make up the boundary conditionWhat the value must do at the extreme levels of the process, which carries the setting the contract sits in rather than the contract itself. pair, and they behave quite differently from one another.
The low level, and why nothing there is an approximation
Take the process to a level of nought and ask what happens next. The standard process moves by proportional increments: both the drift term and the random term are multiplied by the current level. At a level of nought, both are nought. The process cannot move up, cannot move down, and cannot be nudged by anything. A level of nought is an absorbing levelA level the process can never leave once it arrives, which fixes the value of any contract on it there for all remaining time., and absorption is a structural fact about the process rather than a modelling convenience.
| \(\mu\) | the drift of the process under the physical measure P, 8 per cent a year here |
| \(W_t\) | standard Brownian motion under the physical measure P, the random driver |
| \(V(t,0)\) | the value of the locked contract when the level is nought, at any time before the horizon |
Everyday version: a lift whose doors have been welded shut on the ground floor. The lift is still a lift, it still has a motor and a rule for moving, but the rule multiplies by something that is now zero. Ask where it will be in an hour and the answer is not probably the ground floor. The answer is the ground floor, with no distribution around it at all.
The value of the locked contract at a level of nought is nil at every time, and that is exact rather than a very small number rounded down. Because a solver working on a grid has to be told this, the exactness matters more than it looks. If it is left to work the value out at the lowest grid point from its neighbours, it will produce something close to nil rather than nil, and the error will propagate inward.
At a level of nought the value is nil. Is that an approximation?
The high level, and what the value approaches
The other edge has no wall to sit against. The level can be arbitrarily large, so the condition there cannot be a value at a particular level. The condition at high levels is an asymptoticDescribing what a value approaches as a quantity grows without bound, so the statement is about a limit rather than about a reading at any single point. statement: as the level grows without bound, the value approaches the level less the discounted strike.
| \(K e^{-r(T-t)}\) | the strike discounted back to the current time, Rs 95.122942/- at today over one year |
| \(S - K e^{-r(T-t)}\) | the level less that discounted amount, which is one of the four solutions listed earlier |
| \(\lim_{S \to \infty}\) | the limit as the level grows without bound, so the statement is about behaviour rather than about a point |
The limit can be checked to any number of decimals, and the checking is worth doing because it shows the difference between a condition that is exact and a condition that is a limit. The low boundary was exact at the boundary. The high one is only approached. At a level of Rs 150/- the value is Rs 54.970140/- against Rs 54.877058/- for the level less the discounted strike, a gap of Rs 0.093083/-, not small at all. At Rs 200/- the gap is down to Rs 0.000667/-. At Rs 300/- the value reads Rs 204.877058/- and the level less the discounted strike reads Rs 204.877058/-, the same to six decimals, with a residual of about twenty six billionths of a rupee still sitting underneath.
The residual is not a rounding artefact, it is the chance of finishing below the strike, and it never becomes exactly nought at any finite level. The gap equals the discounted strike multiplied by the chance of finishing below it, less the level multiplied by a closely related weight, and both of those weights shrink faster than the level grows. A residual that never vanishes is why the condition is written as a limit rather than as an equality, and why an implementation that imposes it as an equality at a finite level is doing something subtly different. The failure block below returns to that difference.
At a level of Rs 300/- the value reads Rs 204.877058/-. What is that number?
Which of the three conditions does the real work?
The three together frame a region. Time runs from today to the horizon along one direction and the level runs from nought upward along the other. The condition at the horizon pins the value along the far edge in time. The two boundary conditions pin it along the low and high edges in level. The equation then fills in everything inside. Because reading the value along it is the answer, the edge that matters, the near edge in time where today sits, is the one edge nothing is supplied along.
A problem set up like that, with an equation and exactly enough conditions to select one solution that depends sensibly on the data, is said to be well posedHaving exactly one solution that also responds sensibly to small changes in the data, which needs the equation and the conditions together.. Too few conditions and there are many answers. Too many and there may be none. Conditions can contradict each other. Getting the count right is not a matter of taste; it follows from the type of the equation, and for this one the answer is three.
Now the judgement the three conditions force. All three conditions are needed, but they are not the same kind of statement. The condition at the horizon is the only one that describes the contract, and the two in level describe the setting the contract sits in. Changing the first writes down a different contract. Changing either of the others keeps the contract and changes the world it lives in.
The prices make that concrete. Keep the setting and swap the horizon condition from the locked contract to its counterpart, and the price today at a level of Rs 100/- moves from Rs 10.450584/- to Rs 5.573526/-. Keep the horizon condition and instead impose a value of nought at a level of Rs 150/- rather than the limit at high levels, and the price today falls to Rs 7.622374/-. Same equation in all three. Same payoff written down in the first and third. Different numbers.
There is a sting in that second branch, and it deserves saying plainly. The sting is what makes the mistake so hard to see. Imposing a value of nought at Rs 150/- does not produce a bad approximation to the locked price. The imposed value produces the exact price of a perfectly well defined contract: one that stops existing the moment the level touches Rs 150/-. Both figures were computed and cross-checked by two independent routes, a closed form and a grid solve, agreeing to five decimals. A wrong boundary condition does not give a poor answer to the question asked, it gives a good answer to a different question. Nothing in the output looks broken.
A boundary condition changes and the payoff is left alone. Has the contract changed, or the setting?
How do the three conditions read on the worked instance?
Suppose the condition at the horizon says the value must equal the level itself. What is the price today at a level of Rs 100/-?
Here is the whole set written out for the locked contract on the standard process, at a strike of Rs 100/-, over the one year horizon, with the volatility at 20 per cent and the risk-free rate at 5 per cent. Every reading below follows from those parameters alone.
| Condition | Where it sits | What it says | Reading |
|---|---|---|---|
| At the horizon | The far edge in time, at one year | The value equals the payoff at every level | nil at Rs 80/- nil at Rs 100/- Rs 50/- at Rs 150/- |
| At the low level | The bottom edge, at a level of nought | The value is nil, exactly, at every time | Rs 0.000000/- |
| At high levels | The top edge, as the level grows | The value approaches the level less the discounted strike | Rs 204.877058/- at Rs 300/- against Rs 204.877058/- |
| All three, with the equation | The near edge in time, at today | Exactly one solution, read off at today | Rs 10.450584/- |
Each row of that table costs something different. The first row is the only one where there was a choice. The second and third are forced by the setting, once the process is said to move by proportional increments and the level is said to be unbounded above. Nobody decided the low level should absorb. The low level absorbs because of how the increments are built.
Which is why the honest statement of the judgement is slightly sharper than the usual one. The judgement is not that the boundaries are free choices about the world while the payoff is a free choice about the contract. The payoff is the only free choice at all, and the boundaries are what the setting forces once that choice is made. Altering a boundary independently is not adjusting a detail; it quietly asserts something about the process that the process does not do.
What happens to the price when only the condition at the horizon moves?
The condition at the horizon changes below while the equation stays exactly as it is. Does the price change?
The control below changes one thing and one thing only: which function is supplied at the horizon. The equation, the rate, the volatility, the horizon and both conditions in level are untouched throughout. The dashed line is the condition supplied, and the solid line is the value today that follows from it. Three choices are offered and the prices today at a level of Rs 100/- are Rs 10.450584/-, Rs 5.573526/- and Rs 100.000000/-.
One equation, three conditions at the horizon, three prices
Pick what the value must equal at the horizon. The slider only moves the marker along the level, so the value can be read anywhere, and changes nothing about the problem being solved.
The third choice is the one worth dwelling on. If the value at the horizon must equal the level itself, the price today is Rs 100.000000/- exactly, at any volatility and any rate. Rs 100.000000/- is not an accident of the parameters. The discounted process is a martingale under the pricing measure Q, established separately, so the value today of receiving the level at the horizon is the level today. The level itself is also the first of the four solutions listed above, and the circle closes neatly. The function was already a solution of the equation, and supplying the matching condition at the horizon is exactly what selects it.
What goes wrong when a condition is missing or wrong?
The error that gets made, and what it costs
Handing a solver the equation and expecting one answer back. The equation admits an unlimited collection of solutions, so a routine given only the equation will return whichever one its own defaults imply, and it will do so without complaint. There is no error message. Nothing is wrong, and the routine solved exactly what it was given.
The commonest form of this is a silent defaultA solver supplying its own condition when none was given, so the output answers a question the defaults asked rather than the one that was asked. at an edge nobody thought about. A grid has to stop somewhere, and where it stops something has to be said about the value. Left unsaid, many implementations quietly say nought. In the worked instance here that single unstated choice, made at a level of Rs 150/-, moves the answer from Rs 10.450584/- to Rs 7.622374/-, a difference of Rs 2.828210/-, or a bit over a quarter of the value.
The cost is not a wrong number that looks wrong. The output is a right number to a question nobody asked, produced by correct code and passing every test that checks whether the equation is satisfied. The equation really is satisfied. Somebody then reads it as the price of the contract they specified, and there is nothing in the output to tell them otherwise.
A solver is handed the equation with no conditions at all. What does it return?
Who actually meets this, and what do they do about it?
Almost nobody meets these conditions as a point of theory. People meet them as a discrepancy: two implementations of the same calculation disagree, and somebody has to find out why. The conditions are the first place to look and almost the last place anybody looks.
The first person is whoever is checking a pricing routine before it is relied on. The useful move is to stop asking whether the value looks reasonable and start asking what the routine was told. Where does its grid stop, and what does it impose there? Does it set the value at the lowest level explicitly, or interpolate it? If the grid top is at three times the strike or more, the truncation costs almost nothing, and the reading here bears that out: at Rs 400/- the gap has fallen below anything measurable. If the top is at one and a half times the strike, it costs a quarter of the value. Same code, same equation, and the only difference is a number in a setup routine.
The second is whoever is reading a value out of a library they did not write. The question to ask is not what model it uses but what problem it solved. A routine that offers a payoff argument and no boundary arguments has made both boundary choices on the caller's behalf, and they are usually the right ones, and it is still worth knowing that they were made rather than derived from what was passed in.
The third is whoever is comparing two methods that ought to agree. A grid solve and a closed form will differ in the last few decimals for ordinary reasons of discretisation. If they differ in the second decimal, the conditions are the suspect, not the arithmetic. Here the two routes used for the truncated figure agreed to five decimals once the grid was refined three times, and that is what agreement looks like. A disagreement of Rs 2.828210/- is not a refinement problem.
The everyday version is a recipe stating that the oven rises by ten degrees a minute. Perfectly precise, entirely useless on its own, and it becomes useful the instant somebody adds that the oven starts cold. Nobody would call that instruction wrong. Everybody would call it incomplete, and everybody would notice. A temperature is a familiar quantity and an unstated starting point is obvious. A value function is not familiar, the unstated edge is buried in a setup routine, and the arithmetic in between is impeccable. The unfamiliarity is the whole reason this mistake survives.
What is covered separately?
References
| Source | Document | Where |
|---|---|---|
| arXiv Quantitative Finance | Preprint repository for the pricing equation, its boundary and terminal conditions, and the well posedness of the resulting problem | arxiv.org |
| Social Science Research Network | Working paper repository for the same material, including grid truncation and its effect on computed values | ssrn.com |
| Black, Scholes and Merton, 1973 | The pricing equation and the conditions that select its solution | named in the text only |
| Feynman and Kac | The link between the equation with its conditions and the expectation under the pricing measure | named in the text only |
| Hull, Shreve and Wilmott | Standard texts covering the pricing equation and the conditions that accompany it | named in the text only |
The standard process, the locked contract and its counterpart are invented.
Educational material. Not advice on any investment, tax, budget or market position.
