Banker. Scientist. Nerd.

Explore my thoughts on finance, technology, AI, and the future of humanity.

Scroll down for my recent posts.

Connect With Me.

SONIA: The Sterling Risk-Free Rate

Published 14 October 2026

This is the second post in my series on how derivatives are priced. In the first post we built up the discount factor in an imaginary world with one bank and one interest rate that never changed. I promised to start relaxing those assumptions, and the obvious one to go first is the rate that never changes.

In the real world, the interest rate that sits underneath almost every sterling derivative and bank loan is quoted fresh every single day. It's called SONIA, and you can see where it is now on my markets page.

As before, I'm writing for someone with high-school maths and no finance background.

What SONIA is

SONIA stands for the Sterling Overnight Index Average. Every business day, banks and other large financial institutions lend each other money in pounds overnight: borrow today, pay it back tomorrow. SONIA is a measure of the interest rate paid on that money.

A quick note on words. Lending money to a bank overnight is the same thing as putting it on deposit there: the same transaction, seen from the lender's side or the bank's. The Bank of England calls them deposits, so I will too.

A few details make it trustworthy:

  • It's based on real deposits, not opinions. The Bank of England collects the actual overnight, unsecured deposits of £25 million or more that took place that day.[1]
  • It's a trimmed average. The Bank sorts the deposits by rate, throws away the top and bottom quarters (weighted by size), and averages the middle half. A handful of odd deposits can't move it much.
  • It's published the next morning. Monday's SONIA is published at 9am on Tuesday. You only find out what yesterday's rate was today.
  • It's quoted as an annual rate, with the "actual days ÷ 365" day count from the last post.

Nobody chooses SONIA's level, but it is steered. It tracks the Bank of England's Bank Rate very closely, usually sitting a few hundredths of a percent below it. When the Monetary Policy Committee changes Bank Rate, SONIA moves with it from the day the new rate takes effect; because of the publication lag, you see the change in the figure published the following morning. The charts on the markets page show the two lines moving almost on top of each other, stepping up and down together.

Trying out the trimmed average

The widget below shows a day's deposits. Each bar is one deposit: its width is the amount lent and its height is the rate. The bars are lined up from the lowest rate to the highest, so trimming simply cuts the same width of volume off each end. Solid bars are kept; faint bars are trimmed away. The trimmed mean is the average height of what's left.

Try the examples and move the slider. At 0% the trimmed average is just the ordinary volume-weighted mean. As the trim gets close to 50%, only the deposit in the very middle is left, which is the median. SONIA uses 25%, somewhere in between: it ignores odd deposits at either extreme, like the median, but still takes an average of the many deposits in the middle, like the mean.

Why it replaced LIBOR

For decades, the reference rate in sterling markets was LIBOR, the London Inter-Bank Offered Rate, which was set each morning by asking a panel of banks what they thought they could borrow at. After it emerged that some of those answers had been manipulated, regulators pushed markets to move to rates based on real transactions. Sterling markets chose SONIA, and LIBOR has now stopped being published altogether.[2]

There's a second difference which matters much more for the maths. LIBOR was a term rate: on day one, you knew the rate for the next three months. SONIA is an overnight rate: on day one, you only know the rate for one night. That changes how interest is worked out, and generally adds complexity to interest calculations. Having said that, the market has converged on a standard approach to these calculations meaning that there is rarely any confusion.

Why it matters

Any contract where one side pays a floating rate of interest needs a rate that both sides can look up, that nobody involved can nudge in their own favour, and that will still be published in thirty years' time. That's what a benchmark is for. SONIA itself has been around since 1997,[3] but since LIBOR's departure it has become the benchmark for sterling: the official "risk-free rate" that the Bank of England and the industry chose for sterling markets to build on. It's considered "risk-free" because you can't easily lend money for a period of time of less than one day, and the chances of the bank you are very happy to lend to today going under by tomorrow are very slim. It also gives the Bank a clean read on how changes in Bank Rate pass through to the rates banks actually lend at.

The most familiar place to see it is a sterling bank loan. A company borrowing in pounds typically pays compounded SONIA plus a margin. The two parts do different jobs:

  • The SONIA part is floating: it goes up and down with the market, and it's the same for every borrower. It's the price of money itself, and has nothing to do with who is borrowing.
  • The margin is a fixed extra amount of interest, set for that particular loan. It reflects the risk of lending to that borrower: a riskier company pays a bigger margin.

One thing it isn't usually linked to is your mortgage. A UK tracker mortgage typically follows Bank Rate, not SONIA, although the two move together so closely that the difference rarely matters.

SONIA matters for this series for one more reason. When banks trade derivatives with each other, they usually post cash as collateral, and that cash typically earns SONIA. That makes SONIA the natural rate for discounting, so the discount curve at the end of this post is built from it.

Earning SONIA over more than one night

Suppose you have £1,000,000 and you want to earn SONIA on it for a week. You can't lock in a week's rate; you can only lend overnight. So you do what we did in stage 2 of the last post: a chain of one-period deposits.

  1. Lend £1,000,000 overnight on Monday at Monday's SONIA.
  2. On Tuesday you get it back with a day's interest. Lend all of it again overnight at Tuesday's SONIA.
  3. Repeat every day until the following Monday.

Each night you earn interest on the interest from the nights before, so this is daily compounding, exactly as before. The only change is that each link in the chain now has its own rate.

Weekends

Overnight lending only happens on business days. Money lent on a Friday comes back on Monday, three nights later, at Friday's rate. So Friday's rate counts three times. Bank holidays work the same way.

A worked example

Here's a made-up week. To make it interesting, the Monetary Policy Committee cuts Bank Rate by a quarter of a percentage point on Thursday, and SONIA drops with it. Each row is one overnight deposit of everything we've built up so far:

Day SONIA Nights Growth factor that night Balance afterwards
Mon 3.9700% 1 1.00010877 £1,000,108.77
Tue 3.9700% 1 1.00010877 £1,000,217.55
Wed 3.9600% 1 1.00010849 £1,000,326.06
Thu 3.7200% 1 1.00010192 £1,000,428.01
Fri 3.7200% 3 1.00030575 £1,000,733.90

Each night's growth is just the one-period formula from the last post, 1+r n3651 + r\,\tfrac{n}{365}, with that day's rate rr and that day's number of nights nn. Chain them together by multiplying:

Growth factor=∏i(1+ri ni365)\text{Growth factor} = \prod_{i} \left(1 + r_i \, \frac{n_i}{365}\right)

The ∏\prod symbol just means "multiply all of these together", the way ∑\sum means "add them all up". Here it comes to 1.00073390, so the week earns £733.90.

It's common to express this as a single annual rate for the whole period, by asking what simple rate over the whole period would have given the same growth:

1+Compounded SONIA×D365=Growth factorCompounded SONIA=(Growth factor−1)×365D=(1.00073390−1)×3657=3.8268%\begin{aligned} 1 + \text{Compounded SONIA} \times \frac{D}{365} &= \text{Growth factor} \\[4pt] \text{Compounded SONIA} &= \left(\text{Growth factor} - 1\right) \times \frac{365}{D} \\[4pt] &= \left(1.00073390 - 1\right) \times \frac{365}{7} = 3.8268\% \end{aligned}

where D=∑iniD = \sum_i n_i is the total number of days in the period (7 in our example).

This is called compounding in arrears: the rate for the period is built up a day at a time, and you only know it once the period is over.

"Compounded SONIA" for a period is therefore a simple interest rate, which when applied for that period, gives a final interest cash flow of the exact same amount as if the daily compounding calculation using each day's SONIA fixing was done properly.

For comparison, a plain weighted average of the five rates (counting Friday three times) is 3.8257%, which would earn £733.70. Compounding adds 20p. Over a week the effect is tiny, but on large sums over long periods it adds up, and pricing models have to get it exactly right.

Try it yourself below. Change the daily rates, or mark a day as a bank holiday and see the previous day's rate stretch to cover it.

The problem: you don't know the rate in advance

In the last post, a deposit of £1,000 at 5% for a year turned into £1,050, and we knew that on day one. That's what let us say the discount factor was 11.05\tfrac{1}{1.05} and value a future payment today.

With SONIA, if I deposit £1 today and roll it overnight for three months, I'll end up with something, but I don't know what until the three months are up. If the Bank of England cuts rates next month, I'll earn less; if it raises them, I'll earn more.

So where does a discount factor come from now?

Locking in a rate: the overnight index swap

The answer is that the market lets you swap an unknown rate for a known one. The contract that does this is called an overnight index swap, or OIS. In its simplest form:

  • You and a counterparty agree a notional amount, say £1,000,000, and a period, say three months (91 days).
  • You agree a fixed rate KK today.
  • At the end of the period, you pay the fixed interest, N×K×91365N \times K \times \tfrac{91}{365}.
  • In return, you receive the SONIA interest, compounded in arrears exactly as in the worked example above.

The £1,000,000 itself never changes hands. It only exists to scale the payments. In practice only the difference is paid: whoever owes more pays the other.

If you have money rolling overnight at SONIA, take the other side of this swap: receive the fixed rate and pay SONIA. That turns your unknown SONIA interest into a known fixed amount. Whatever happens to rates, the SONIA you earn on your deposit cancels the SONIA you hand over in the swap, and you're left with the fixed rate KK. You've locked in a three-month rate. And because the fixed rate is agreed in a busy market, KK is a price that everyone can see.

The widget below puts £1,000,000 on deposit at SONIA for three months, alongside a swap where you receive KK and pay SONIA. Each simulation draws a random path for SONIA, with the Bank of England cutting, holding or raising rates at two meetings along the way. Run it a few times: the deposit on its own earns a different amount every time, but the deposit plus the swap always earns exactly the fixed interest.

From the swap rate to a discount factor

This is where it gets neat. Let's work out what the swap is worth today, using the same "I'm indifferent" argument as the last post.

The SONIA side. Lend £1 overnight and keep rolling it. It costs £1 today, and at the end of the period it pays back Growth factor\text{Growth factor}, whatever that turns out to be. So receiving "Growth factor\text{Growth factor}" at the end is worth exactly £1 today, even though we don't know what it will be. The SONIA interest is Growth factor−1\text{Growth factor} - 1, and the "1" is just a fixed payment at the end, worth DFDF today. So, per £1 of notional:

Value of SONIA side=1−DF\text{Value of SONIA side} = 1 - DF

The fixed side. This is a known amount, KτK\tau, paid at the end, where τ=91365\tau = \tfrac{91}{365} is the day count. A known payment at the end is worth that amount times the discount factor:

Value of fixed side=K τ×DF\text{Value of fixed side} = K\,\tau \times DF

The fair swap rate is the one that makes the deal fair for both sides, so that neither side is worth more than the other on the day it's agreed:

K τ×DF=1−DFK\,\tau \times DF = 1 - DF

Rearranging:

DF=11+K τDF = \frac{1}{1 + K\,\tau}

This is exactly the one-period discount factor from the first post, with the swap rate KK playing the part of the bank's rate. The difference is that in the first post we made the rate up. Here the market tells us what it is.

For example, if the three-month SONIA swap rate is 3.90%:

DF=11+0.039×91365=0.990370DF = \frac{1}{1 + 0.039 \times \tfrac{91}{365}} = 0.990370

So £1,000,000 promised in three months' time is worth £990,370.34 today.

What I've assumed, and what comes next

We've dropped the idea of a single rate that never changes, but a few simplifications remain:

  • Still no risk. SONIA loans are unsecured, so there is a small chance a borrower doesn't pay back. It's overnight and between very large institutions, so the risk is small, and in practice SONIA is treated as close to "risk-free". That's why it's called a risk-free rate.
  • Payment timing. In practice SONIA is published the next morning, so the final day's rate isn't known until after the period has ended. Real contracts allow for this by looking back a few days (usually five business days), or paying a couple of days late. I've ignored this here.
  • One period. Real swaps can run for 30 years, with payments every year. The maths is the same idea, repeated.

That last point is where the next post goes. One swap rate gives us one discount factor. The market quotes SONIA swap rates for many lengths, from one week to fifty years. Line them up, and we can work out a discount factor for every date, one after another, in a process called bootstrapping. The result is the discount curve: the single most important input to pricing almost any sterling derivative.


  1. Bank of England, SONIA key features and policies. It sets out which deposits count (unsecured, overnight, £25 million or more), the trimmed mean of the central 50% of volume, rounding to four decimal places, and publication at 9am on the following London business day. ↩︎

  2. Bank of England, Transition to sterling risk-free rates from LIBOR. Most LIBOR settings ended on 31 December 2021; the last "synthetic" sterling LIBOR setting ended in March 2024, and all 35 LIBOR settings have now ceased. ↩︎

  3. Bank of England, SONIA interest rate benchmark. SONIA was introduced in March 1997; the Bank of England took over running it in 2016 and reformed it in 2018. ↩︎

Reference Materials

Published 04 October 2026

Note: This is a living document. It contains sources that I consider valuable reference material, organised by topic.

Last Update: 04 October 2026

Personal Finance

Science

YouTube Channels

Derivatives

Crypto

  • Bitcoin White Paper. Worth a read if you haven't already. Pump through AI if it all gets too much.

Data

Mathematics

Coding

Python

Discount Factors: What Is Future Money Worth Today?

Published 04 October 2026

This is the first post in what I hope becomes a series on how derivatives are priced. Almost everything in the world of financial instruments eventually comes down to one question: what is an amount of money in the future worth to me today? The tool that answers it is the discount factor, so that's where we start.

I'm writing this for someone who has high-school mathematical knowledge: comfortable with a bit of algebra, but with no finance background. The aim is to build intuition, not to memorise formulas. Gain an intuition for these concepts and you will be a few steps ahead, the formulae will spring to life and you'll begin to see what the formulae represent, not just garbled symbols. The two go hand-in-hand, and both together are essential for true understanding.

The question

"Money has a time value". It's easily said, but not so easily understood. Let's ground this concept in reality.

Imagine a friend promises to give you £1,050 in a year's time. Someone else offers to buy that promise from you, right now. What's the least you should accept?

The answer depends entirely on what you could do with money in the meantime. If money just sat in a drawer, £1,050 next year would be worth exactly £1,050 today. The reason future money is worth less today is that money today can be saved or invested, and grow.

So, to keep things concrete, everything in this post happens in an imaginary world with:

  • one bank, which pays and charges the same interest rate, whether you're saving or borrowing;
  • no risk: the bank always pays out, and every promise is kept;
  • a rate you choose (we'll use 5% as the default) - it's a nice round number.

Those are big simplifications, and I'll come back to them at the end.

Reading the diagrams

The widgets below draw cash-flow diagrams: a timeline with arrows for money changing hands, from your point of view. An arrow pointing up is cash you receive; an arrow pointing down is cash you pay.

Stage 1: one period

Compounding: today → the future

Put £1,000 in the bank at 5% for one period, and at the end you get your £1,000 back plus £50 interest:

FV=PV×(1+r)FV = PV \times (1 + r)

where PVPV is the present value (the money today), FVFV is the future value (the money at the end) and rr is the interest rate for the period. The formula contains a (1+r)(1+r), because at the end of the period you are left with both your original (PV×1)(PV \times 1) as well as your interest, (PV×r)(PV \times r).

Try changing the rate, and the end amount follows. Or set the end amount you want, and see what rate would get you there.

Discounting: the future → today

Now flip the question round. You want to have £1,050 at the end of the period. How much do you need to put in the bank today? Divide instead of multiply:

PV=FV1+rPV = \frac{FV}{1 + r}

The discount factor is that same calculation for £1:

DF=11+rDF = \frac{1}{1 + r}

It's the amount you need today to end up with £1 at the future date, given the rate you can invest at. At 5%, DF=0.952381DF = 0.952381: about 95p today becomes £1 next period. To value any future amount, multiply it by the discount factor.

Another way of looking at this is that the discount factor DFDF is simply the ratio of the PVPV to FVFV.

PV=FV1+r  ⟹  PVFV=11+rPV = \frac{FV}{1+r} \implies \frac{PV}{FV} = \frac{1}{1+r}

Why I'm indifferent

This is the bit that matters most. Because the bank exists, I can turn £1,000 today into £1,050 next period, and I can turn £1,050 next period into £1,000 today:

  • Investing: if I have £1,000 today, I can deposit it and receive £1,050 at the end.
  • Borrowing: if I'm owed £1,050 at the end but I want the money now, I can borrow £1,000 today. When the £1,050 arrives, it repays my loan plus interest exactly.

So receiving money early means borrowing it, and paying interest for the privilege. The discount factor tells you exactly how much you can get early. Flip the widget above between Invest and Borrow: the numbers stay the same and the arrows reverse.

Since I can convert one into the other in either direction, I'm indifferent between £1,000 today and £1,050 next period. That's why it has to be the price of the promise:

  • if someone offers me more than £1,000 for my £1,050 promise, I should sell, because I couldn't borrow that much against it;
  • if someone offers to sell me a £1,050 promise for less than £1,000, I should buy it, because it beats the bank.

No investing, no discounting

Set the rate to 0% in the widgets. The discount factor becomes 1, and £1,050 next period is worth exactly £1,050 today. Discounting only exists because saving and investing exist. If money can't grow, there's no reason to prefer having it sooner.

Stage 2: many periods

What if the money stays in the bank for several periods? The simplest way to think about it is as a chain of one-period deposits:

  1. Deposit £1,000 for one period. At t=1t = 1 it pays back £1,050.
  2. Immediately deposit that £1,050 for another period. At t=2t = 2 it pays back £1,102.50.
  3. Do it again. At t=3t = 3 you receive £1,157.63.

At t=1t = 1 and t=2t = 2, money comes out of one deposit and straight into the next, so nothing actually changes hands until the end. In the widget, each colour is one deposit. Switch to Net cash flows to see that all you really do is pay £1,000 at the start and receive £1,157.63 at the end.

Notice that the interest grows each period (£50, then £52.50, then £55.13), because you earn interest on the interest. This is compounding:

FV=PV×(1+r)nFV = PV \times (1 + r)^n

Running it backwards gives the discount factor for nn periods:

DFn=1(1+r)nDF_n = \frac{1}{(1 + r)^n}

At 5%, DF3=0.863838DF_3 = 0.863838, so a promise of £1,000 in three periods is worth £863.84 today. Notice that DFn=(DF1)nDF_n = (DF_1)^n: discounting over three periods is just discounting over one period, three times.

Stage 3: annual rates and day counts

So far, a "period" has been an abstract step, with a rate per period. Real interest rates aren't quoted like that. They're quoted per year, and a period that's shorter than a year earns a matching fraction of the rate.

That fraction is the day count: the number of days in the period divided by the number of days in a year. Using the simplest convention (actual days ÷ 365), a period of dd days earns:

r×d365r \times \frac{d}{365}

For example, £1,000 at 5% for 30 days earns £1,000 × 0.05 × 30365\tfrac{30}{365} = £4.11.

Compounding over nn periods of dd days each then looks like this:

FV=PV×(1+r d365)nDF=1(1+r d365)nFV = PV \times \left(1 + r\,\frac{d}{365}\right)^n \qquad DF = \frac{1}{\left(1 + r\,\frac{d}{365}\right)^n}

It's exactly the same formula as stage 2. The only change is that the rate per period is now r×d365r \times \tfrac{d}{365}.

Try switching the period length from a year to a day. With a year's horizon, the yearly version gives £1,050.00 and the daily version gives £1,051.27. Compounding more often helps a little, but only a little.

Stage 4: continuous compounding

What happens if we keep making the periods shorter: hours, minutes, seconds, nanoseconds? Write the total time in years as TT, and split it into nn equal periods. Each period earns r×Tnr \times \tfrac{T}{n}, so:

FV=PV×(1+rTn)nFV = PV \times \left(1 + \frac{rT}{n}\right)^n

As nn gets bigger and bigger, this settles down to a limit, and that limit involves the number e≈2.71828e \approx 2.71828:

lim⁡n→∞(1+rTn)n=erT\lim_{n \to \infty} \left(1 + \frac{rT}{n}\right)^n = e^{rT}

That gives the neatest formulas of all:

FV=PV×erTDF=e−rTFV = PV \times e^{rT} \qquad DF = e^{-rT}

Compounded Periods per year £1,000 after one year at 5%
Yearly 1 £1,050.00
Monthly 12 £1,051.16
Daily 365 £1,051.27
Continuously ∞ £1,051.27

No bank actually pays interest continuously. But this is the version pricing models use, because exponentials are easy to work with. For example, discounting over two stretches of time just means adding the times: e−rT1×e−rT2=e−r(T1+T2)e^{-rT_1} \times e^{-rT_2} = e^{-r(T_1 + T_2)}. You'll see e−rTe^{-rT} all over the place later in the series, including in the Black–Scholes formula.

As an aside on the elegance of the continuous compounding exponential formula: the two forms are mirror images of one another. Compounding forward uses erTe^{rT}, because a deposit grows over time; discounting back uses e−rTe^{-rT}, because a future payment is shrunk back to today. The symmetry is exact: discounting by rr for time TT is just compounding by −r-r for time TT, and that is why the same exponential structure appears in both directions. In practice, this makes the maths feel beautifully consistent: the same rate, the same horizon, only the sign changes as you move forward or backward in time.

Putting it to work: more than one payment

The real power of discount factors is that once we have them for every point in time we need, each future payment can be valued separately, and the results added up. This is extremely simple and easy to understand. Say someone promises you £100 at the end of each of the next three years, at 5% a year:

Year Cash Discount factor Worth today
1 £100 0.952381 £95.24
2 £100 0.907029 £90.70
3 £100 0.863838 £86.38
Total £300 £272.32

That's essentially how a bond is priced.

What I've assumed, and what comes next

To keep the ideas clear, this post has quietly assumed a few key things:

  • One rate for saving and borrowing. In real life, borrowing costs more than saving earns, so the "fair" value of a promise is really a range, not a single number.
  • No risk. The bank always pays, and promises are always kept.
  • The rate never changes. In reality, rates move every day.
  • One day-count convention. Different markets count days differently.

Coming up next: how real overnight rates such as SONIA work (a rate that changes every day, compounded daily), and how markets let you lock in a rate for years ahead, which gives us the discount curve.

Explore the rest of my posts.

Keyboard shortcuts

Ctrl K
Search
/
Search
j
Older post
k
Newer post
?
This list