learn-finance-with-phoebe / Practitioner session 8 of 10
Learn Finance with Phoebe · Practitioner session 8 of 10

Sizing a funding requirement

Marchmont's cash goes below zero in month 10 at -£7,432. Nine months later it is at -£115,501, and it stays under until month 28. Those three facts come out of one run of one model, and which of them you read decides what number gets asked for. Session 6 set out how to present a funding requirement and defend it in a room. This one produces the figure it presents: the horizon that has to contain the whole gap, the trough rather than the first crossing, the recovery month that fixes the term, and the buffer, which is the one part of the answer no run will hand you.

🟢 Hands on Analysts sizing a facility Anyone asked how much we need 45 min
0-4 · Welcome 4-24 · Finding the trough 24-40 · Term, and the buffer 40-60 · When the assumption breaks
Part 0

What has to come out of the model

Four outputs, in order. A horizon long enough that the gap opens and closes inside it. The deepest point the cash balance reaches, which is the size. The month the balance comes back above zero, which is the term. And the amount above the trough, which is not an output at all and has to be argued for. Sessions 6 and 7 produced everything needed for the first three. The fourth is where the work is.

Live = run together in the session Self-study = the full depth, after class 🔍 Every diagram zooms

★ What you walk out with today. A trough finder that runs over any horizon and refuses to read a run that does not tie. The reason Marchmont's answer is -£115,501 and not -£7,432, and what taking the smaller number would actually have bought. A term set by the recovery month rather than by the length of the spreadsheet. A buffer you can defend against the measured growth ladder instead of against a feeling. And a trigger written on the assumption, because the assumption moves months before the bank balance does.

What is not being taught here. Nothing below is guidance on obtaining credit for any particular business, and nothing on this page is advice about any investment. What a lender typically wants to see is described because it shapes what the model has to produce: a figure, a period, the assumption underneath it and a stated response if that assumption moves. Whether any real business should borrow, and on what terms, is a decision with people and contracts in it, and no run produces it.

LiveSizing is a reading problem, not an arithmetic one4 min▶

Every figure needed to size Marchmont's facility is already computed by the time the run finishes. None of them is hard to produce and none of them needs a formula that is not already in the engine. What goes wrong is the reading: which row of the output you point at, and whether the window you ran was long enough for that row to exist.

So the method below is mostly a sequence of refusals. Do not read the first crossing. Do not read the last month in view. Do not read a trough that sits on the edge of the window. Do not read a total where a level is wanted. Each of those produces a number that is correct as arithmetic and wrong as an answer.

Real world

A facility sized on Marchmont's month 10 figure would be £7,432. The balance in month 11 of the same run is -£28,360, and in month 12 it is -£47,261. The gap goes on deepening for nine more months after the month that was funded.

Part 1 · covers the trough

The first month below zero is not the number

16 min live

One run to 48 months produces three depths and a total, and three of the four are the wrong thing to ask for. The gap between the smallest and the largest is the difference between a facility that lasts one month and one that covers the whole crossing.

The same run, read at four different places zero £260,062 in the bank Four readings, one run Month 10 · first below zero · -£7,432 Month 12 · still falling · -£47,261 Month 19 · the trough · -£115,501 Month 28 · back above zero, nothing changed month 1 month 10 month 19 month 28 Fund the first month below zero and you have funded that month. The balance is -£28,360 in month 11 and -£47,261 in month 12, and the line keeps falling for nine more months after the crossing.
🔍 Click to zoom - months 1 to 12 are plotted from the measured monthly balances. The dashed leg joins the measured trough in month 19 and the measured recovery in month 28 with straight segments, because only those two points are computed.
LiveThe trough finder, and the horizon that has to contain it5 min▶

Three lines of reading over one run. The tie check goes first, because a run that does not tie is not a source of a number, and it costs one line to refuse it.

consoleconst r = MARCHMONT.run({}, 48); if (!MARCHMONT.ties(r).ok) throw new Error("does not tie"); let trough = r.rows[0]; for (const row of r.rows) if (row.cash < trough.cash) trough = row; let back = 0; for (const row of r.rows) { if (row.month > trough.month && row.cash >= 0) { back = row.month; break; } } console.log(MARCHMONT.cashOutMonth(r), trough.month, Math.round(trough.cash), back); // 10 19 -115501 28

cashOutMonth answers when the problem starts. The loop answers how big it gets. The second loop answers when it ends. Reading only the first of the three is the single most common way a funding requirement comes out too small, and it is not a mistake of arithmetic: £7,432 is the correct depth in month 10.

LiveWas the window long enough to contain the answer4 min▶

A trough is only a trough if the line turns inside the window. If the deepest month in view is the last month in view, the run has reported where it stopped looking rather than where the bottom is. The test is one field.

consolefunction gap(months) { const r = MARCHMONT.run({}, months); if (!MARCHMONT.ties(r).ok) throw new Error("does not tie at " + months); let t = r.rows[0]; for (const row of r.rows) if (row.cash < t.cash) t = row; return { at: t.month, trough: Math.round(t.cash), onTheEdge: t.month === months }; } gap(12); // at 12, -47261, onTheEdge true -> the line is still falling gap(24); // at 19, -115501, onTheEdge false -> the bottom is inside the window gap(48); // at 19, -115501, onTheEdge false -> and it stays there

Twelve months returns a number that looks like an answer and is a description of the window. Twenty four months and forty eight months agree, which is the only evidence available that the horizon is long enough. Agreement between two windows is not proof, but disagreement is proof of the opposite, and that is worth one extra run.

Self-studyA fourth candidate, and why a total is not a facility4 min▶

Free cash flow over the first twelve months totals -£297,261. That figure is real and it is the sum of every pound that left. The balance at month 12 is -£47,261. Neither is wrong. They are a flow and a level.

The difference is the £250,000 of opening cash, which absorbed most of the outflow before the balance ever went under. A facility funds the level, not the flow, because the question is how far below zero the bank account goes rather than how much money moved. Sizing on the cumulative outflow overstates the requirement by whatever the business already had, and sizing on the last month in view understates it by whatever happens next.

consoleconst r = MARCHMONT.run({}, 48); Math.round(MARCHMONT.cumulative(r, "freeCF", 12)); // -297261, a flow over twelve months Math.round(r.rows[11].cash); // -47261, a level at one date
Part 2 · covers the term and the buffer

How much, for how long, and how much more than that

16 min live

The trough answers the first question. The recovery month answers the second. The third has no answer in the engine at all, and pretending otherwise is how a judgement gets published as a measurement.

Two of these three come out of the run. 1 · How much -£115,501, the deepest point, month 19 2 · For how long Month 10 to month 28, eighteen months 3 · How much more Not in the model. A judgement, argued. zero month 10 month 19 month 28 -£115,501 eighteen months below zero A figure with no term attached cannot be priced by the other side of the table. The depth answers how much. The month the line comes back answers for how long. Both fall out of the same run, and only one of them usually gets quoted.
🔍 Click to zoom - the right hand line is schematic. Only the crossing in month 10, the trough in month 19 and the return in month 28 are computed points.
LiveThe recovery month is the term, and it has to be in the run4 min▶

A facility that ends in month 18 is a facility that ends one month before Marchmont's worst month. A facility that ends in month 24 ends while the balance is still under. The month the line crosses back is month 28, and it is the first month at which the business no longer needs the money, so it is the first defensible end date.

This is the reason the horizon question from part 1 is not academic. A 24 month run contains the trough and does not contain the recovery, so it can size the facility and cannot term it. The recovery reader returns zero on that run, and zero means "not inside this window" rather than "never", which is a distinction worth putting in the variable name rather than in a comment.

LiveThe buffer is a judgement, so justify it against something measured5 min▶

Asking for exactly £115,501 is asking for a plan in which nothing is allowed to be wrong. One customer paying late in month 18 breaks it, and the model has no variable for that customer. So the request is the trough plus an amount, and the amount is a judgement about how wrong the assumptions could turn out to be.

What makes a judgement defensible is not the size of it but what it is measured against. The growth ladder is already computed across five settings, and it says what being wrong costs: at 2% a month there is no gap to fund at all, at 4% the trough is -£115,501 and closes in month 28, at 6% the trough is -£897,962 and has not closed by month 48. A buffer chosen with that table on the page is arguable. A round number chosen because it felt prudent is not arguable, and the other side will replace it with their own round number.

No figure for the buffer appears anywhere in the measured set, and inventing one here would be the same error the page is warning against. What the ladder supports is the shape of the argument: how far up the rung you are covering, and the point at which covering further stops being a buffer and becomes a different request.

Five measured rungs, and no measured buffer on any of them. Growth Cash out Trough Recovers What this rung does to a number sized at 4% 0% never £260,062 (m1) no gap Nothing to fund. There is no requirement to size. 2% never £186,555 (m12) no gap Being wrong downwards removes the request entirely. 4% month 10 -£115,501 (m19) month 28 The base case. This is the figure being sized. 6% month 6 -£897,962 (m31) not by m48 No recovery month, so no term. A different request. 8% month 5 -£7,885,358 (m48) not by m48 The trough sits on the last month in view. Every column here was measured except the one nobody can measure. The trough is computed. The amount asked for above it is a judgement about how wrong 4% could be, and these rungs are the only evidence that judgement has to stand on. One rung up is a different request, not a larger one. At 6% the trough is -£897,962 and the line has not come back by month 48, so there is no recovery month to set a term from.
🔍 Click to zoom - the four left hand columns are read off the model. The right hand column is written by hand, and so is the buffer it is there to support.
LiveWhere practitioners genuinely disagree about the buffer5 min▶

Two experienced people looking at -£115,501 and the ladder behind it will propose different amounts, and the gap between them is not a gap in understanding.

One position: size it tight and keep the recovery date credible. The strength of the request is that it is checkable. A trough, a term and two named assumptions can all be re-derived by the person being asked, and a modest, stated margin on top can be argued line by line. Ask for a great deal more than the model supports and the checkable part is gone, because now the figure rests on an unstated view of how wrong the model is. Money that is available also tends to get used, and a facility sized for a worse company is an invitation to become one.

The other position: the asymmetry is not close, so take the headroom. Being over-funded costs a fee that can be written down in advance. Being under-funded costs the company, and the second conversation happens from a much weaker position than the first, at exactly the moment the numbers look worst. On this view the tight number optimises the wrong thing: it minimises a cost you can measure by accepting a risk you cannot, and the ladder itself shows how quickly the requirement moves when one assumption slips.

Both are held by people who have watched the other one fail. The model contributes nothing to settling it, because it has no variable for the cost of unused headroom and none for the cost of going back. What it can do is make the disagreement specific: say which rung of the ladder your buffer covers, and the argument becomes about that rung rather than about temperament.

Self-studyWhat a lender typically wants to see, and what the model supplies4 min▶

Described rather than recommended, and generic rather than specific to any business. The usual list is an amount, a period, the use it is put to, the assumptions the amount rests on, what happens if those assumptions move, and how the money gets repaid. Four of the six come straight out of the run: the amount is the trough, the period runs from the crossing to the recovery, the use is the working capital build, and the sensitivity is the ladder.

The two that do not come out of the run are the buffer and the response if the assumption moves, and those are the two that get asked about. Session 6 is the presentation side of the same problem and is worth reading alongside this, because a figure produced well and presented badly gets refused in the same way as a figure produced badly.

Part 3 · covers being wrong

When the assumption that sized the gap turns out wrong

12 min live

Marchmont's figure rests on revenue growing 4% a month and customers paying in 75 days. Neither is a fact. Both will move, and the question is not whether the request survives that but what you do on the day you notice.

The assumption moves first. The bank balance is the last to say so. 1 · The growth rate moves Visible in the order book, this month 2 · The cash balance moves Visible months later, in the bank 3 · The facility runs out Visible to everybody at once Top up the same request Same shape, bigger number. It assumes the gap is the same kind of thing and only deeper. The recovery month is the part that disappears. Rerun, then resize New trough, new recovery month, new term, and a sentence naming which assumption moved. If there is no recovery month, say that first. Write the trigger on the assumption, because the assumption is what moves first. A trigger set on the cash balance fires after the money has gone. One set on growth, or on collection days, fires while there is still something to decide. Neither the level nor the wording comes out of any run.
🔍 Click to zoom - the left hand response is the one that gets chosen under time pressure, because it needs no new run and no new conversation about the assumption.
LiveResize from a rerun, do not scale the old answer4 min▶

The instinct when growth comes in above plan is to scale the request in proportion. It does not work, because the relationship between growth and the trough is not a proportion and the ladder says so plainly. Going from 4% to 6% moves the trough from -£115,501 to -£897,962, moves the crossing forward from month 10 to month 6, and removes the recovery from the window altogether. A scaled version of the old request would have a term on it that the model no longer supports.

consolefunction size(growth) { const r = MARCHMONT.run({ growth: growth }, 48); if (!MARCHMONT.ties(r).ok) throw new Error("does not tie at " + growth); let t = r.rows[0]; for (const row of r.rows) if (row.cash < t.cash) t = row; let back = 0; for (const row of r.rows) { if (row.month > t.month && row.cash >= 0) { back = row.month; break; } } return { out: MARCHMONT.cashOutMonth(r), trough: Math.round(t.cash), at: t.month, back: back }; } [0, 0.02, 0.04, 0.06, 0.08].map(size); // the whole ladder, one line

Rerunning costs one line. The output of that line is a different request with a different shape, and saying so out loud is a much better position than presenting a scaled figure and being asked where the recovery date went.

LiveThe trigger, and the level it is set at4 min▶

A trigger is a condition agreed in advance that obliges you to go back and talk before the position changes rather than after. Two properties make one useful. It is written on the thing that moves first, which for Marchmont is the growth rate or the collection days rather than the bank balance. And it is observable by both sides, so that nobody has to take your word for whether it has fired.

The level is a judgement in exactly the way the buffer is, and no measured threshold exists anywhere in the model output. What the ladder supports is the reasoning: the request was built on 4%, the rung above it is a different kind of request, so the condition worth writing is one that fires somewhere between those two rather than at the point where the difference has already been paid for. Where between them is an argument, and it is an argument to have before the money is drawn.

The second half of the trigger is the part people leave out. A condition with no stated response is an alarm with nobody assigned to it. Session 7 measured what the responses actually do: collecting in 45 days instead of 75 leaves the cash line above zero all year, and so does growing at 2% instead of 4%. Naming which of those you would reach for, in advance, is what turns the trigger into a plan.

Self-studyGoing back early, and why it is the cheap version4 min▶

The chain at the top of the diagram is the whole argument for an early conversation. Growth above plan is visible in the order book in the month it happens. It reaches the cash balance months later, because the receivables build lags the revenue that caused it by the collection period. And it reaches the facility limit later still. Each step loses options.

A conversation held at step one is about a forecast that has moved and what to do about it, with the business profitable and the balance still positive. The same conversation at step three is about a breach, held by people who now have a reason to doubt the first set of numbers. The arithmetic is identical in both. What has changed is who is believed.

None of that is a claim about what any lender will do, and the response of a real counterparty to a real request is outside anything a model can say. It is a claim about what the model makes visible and when, which is the part you control.

Part 4 · build-along

Size it, then try to break your own number

16 min hands on

Six steps in the console on this page. The last two have no correct answer, which is the point of them.

Write the trough finder and refuse a run that does not tie

Reproduce the three readings on a 48 month base run: crossing in month 10, trough of -£115,501 in month 19, back above zero in month 28. Put the ties check above the loop rather than below it, and confirm it throws by passing it a result you have edited by hand.

Find the horizon at which the answer stops moving

Run the trough finder at 12, 18, 24, 36 and 48 months and watch the onTheEdge flag. Write down the shortest horizon that returns a trough not sitting on the last month in view, and the shortest one that also contains the recovery. They are not the same number.

Buy one month on purpose

Raise openingCash by the month 10 figure, rerun, and see which month cashOutMonth now returns. Then raise it by the trough instead and do the same. The second run is what a facility sized on the trough actually does to the cash line.

Size the whole ladder in one call

Map the size function over the five growth rates and print trough, trough month and recovery month for each. Check your five rows against the measured ladder before you use any of them, and note which two rows have no recovery month at all.

Choose a buffer and write its justification on the same line

Pick an amount above £115,501 and write the rung of the ladder it covers next to it. If the reason you can write is "to be safe", the number is not yet defensible. Hand it to the person next to you and have them argue the opposite position from part 2.

Write a trigger with a response attached

One sentence naming the observable, the level, who watches it and what happens when it fires. Then check it against the chain: does it fire at the order book, at the bank balance, or at the limit. Anything that fires at the limit is a report rather than a trigger.

The habit to keep. A funding figure travels with four things attached: the horizon it was run over, the month of the trough, the month of the recovery, and the assumption it rests on. Drop the horizon and nobody can tell whether the trough is real. Drop the recovery month and there is no term. Drop the assumption and the whole thing is a guess with decimal places on it.

Check yourself

Three questions

Marchmont's cash first goes below zero in month 10 at -£7,432. Why is that not the size of the facility?

The first crossing says when the problem starts, not how big it gets. The same run reports -£28,360 in month 11, -£47,261 in month 12 and a trough of -£115,501 in month 19. Sizing on the crossing funds the crossing.

A run to 24 months reports a trough of -£115,501 in month 19 and never shows the balance back above zero. What can it size and what can it not?

The trough is at month 19, which is inside the window and not on its edge, so the depth is a real turning point. The recovery is in month 28, which the 24 month run cannot see. Reading the absence of a recovery as an absence of recovery is the error session 9 takes apart.

Growth comes in at 6% a month rather than the 4% the request was built on. What is the right move?

The ladder is measured and it is not proportional. Between 4% and 6% the gap stops being a temporary shortfall with a closing date and becomes something four years does not close. A scaled figure would carry a recovery month the model no longer produces.

Before session 9

Homework

Thirty minutes, half of it in the console.

Size the same gap under a different assumption

Hold growth at 4% and move collection to 90 days instead of 75. Produce the trough, the trough month and the recovery month, and write the one sentence version of the request. Note whether the term got longer, shorter, or stopped existing.

Find a real number that has no horizon on it

Take a forecast or a business case from your own organisation and look for the period it was run over. If it is not stated, write down what you would have to know to check the headline figure. That list is the same list this session has been building.

Covered today

What this session covers

✓Finding the trough rather than the first crossing-£115,501 in month 19 against -£7,432 in month 10, from one run.
✓A horizon long enough to contain the gapThe edge test, and why 12 months returns a description of the window.
✓Why a total is not a facility-£297,261 of flow against -£47,261 of level, and the £250,000 between them.
✓The recovery month as the termMonth 10 to month 28, eighteen months, from the same run.
✓The buffer as a judgementJustified against the measured ladder; no measured amount exists.
✓Resizing when the assumption moves4% to 6% is a different request: -£897,962, no recovery by month 48.
✓Triggers written on the assumptionThe order book moves first, the bank balance last; the level is a judgement.
◐Presenting and defending the figure in a roomLeader session 6, which uses the number produced here.
◐Why the recovery month exists at allSession 9, on the claim that died when the window was extended.
○Guidance on obtaining credit for a real businessBeyond describing what a lender typically wants to see, not covered.
○Whether any of this is a reason to buy or sell anythingNothing here is advice about any investment.
Take this with you

Cheat sheet

Not the crossing. Month 10 is -£7,432. Month 11 is -£28,360. The crossing is a start date, not a size.
The size. The trough: -£115,501, month 19, on a 48 month run that ties.
The term. The recovery month: back above zero in month 28. Eighteen months under.
The edge test. A trough in the last month in view is a window artefact until a longer run agrees.
Flow is not level. -£297,261 of free cash flow, -£47,261 of balance, £250,000 of opening cash between them.
The buffer. A judgement. Name the rung of the ladder it covers, on the same line as the number.
One rung up. 6% gives -£897,962 and no recovery by month 48. Resize, do not scale.
The trigger. On the assumption, not the balance. With a named response, or it is just an alarm.