Explainer

What is a basis point? Bps meaning, conversions and a calculator

Percent is ambiguous when the thing that moves is already a percentage. A 5.24% yield that rises 1% could end at 5.29% or at 6.24%; one that rises 100 basis points can only end at 6.24%.

On this page
  1. Basis points to percent and decimal
  2. Why markets say basis points instead of percent
  3. Basis points in bond yields and spreads
  4. What a basis point is worth: DV01
  5. Basis points in quotes, fees and loans
  6. Basis points in code
  7. Common basis point mistakes
  8. Questions

Key takeaways

  • A basis point is one hundredth of a percentage point: 1 bp = 0.01% = 0.0001, and 100 bps = 1 percentage point.
  • To convert, divide basis points by 100 for percent and by 10,000 for a decimal: 25 bps = 0.25% = 0.0025.
  • Markets quote rate moves in bps because "up 1%" is ambiguous for a rate: from 5.24%, a 1% relative rise ends at 5.29% and a 1 percentage point rise at 6.24%.
  • On 1 October 2026 the US 2-year yield fell 10 bps and the 10-year 5 bps, while the French 10-year rose 15.2 bps and its spread over Germany widened by 13.2 bps.
  • A 1 bp rise in yield takes about 0.077% off a 10-year bond priced at par with a 5.24% coupon, about $770 per $1 million: that figure is the bond’s DV01.

A basis point (bp, plural bps, often said "bips") is one hundredth of a percentage point: 0.01%, or 0.0001 as a decimal. One hundred basis points make one percentage point. When the US 10-year Treasury yield went from 5.29% to 5.24% on 1 October 2026, it fell 5 basis points.

Interest rates, bond yields, spreads between two rates, fund fees and central bank decisions are all quoted in basis points. This guide covers the conversions, why the unit exists, how to read bps in yields, quotes and fees, and the mistakes that show up in code. The calculator below does the arithmetic for any move.

Basis point calculator

bps
% pts
%
USD
As a decimal
0.0025
Rate after the move
5.49%
Relative change in the rate
+4.77%
Value on the amount
$2,500.00

1 basis point = 0.01 percentage point = 0.0001. The starting rate is an editable example; for a rate or a yearly fee, the value on the amount is per year.

Type a move in basis points or in percentage points and the other field follows. The maths runs in your browser.

Basis points to percent and decimal

percent = bps ÷ 100decimal = bps ÷ 10,000bps = percentage points × 100

bps
Basis points: the number of hundredths of a percentage point.
percentage points
The plain difference between two percentages: 5.24% minus 5.29% is −0.05 percentage points.
25 bps = 25 ÷ 100 = 0.25% = 0.0025 as a decimal. On $1,000,000 that is $2,500.
Basis pointsPercentDecimalOn $1,000,000
10.01%0.0001$100
50.05%0.0005$500
100.10%0.0010$1,000
250.25%0.0025$2,500
500.50%0.0050$5,000
1001.00%0.0100$10,000
2502.50%0.0250$25,000
10,000100%1$1,000,000
Common conversions. 25 bps is the usual size of a central bank rate move.

The only trap in the arithmetic is the decimal. A formula that multiplies by a rate wants 0.0025 for 25 bps, not 0.25 and not 25. Most basis point bugs are a factor of 100 in one direction or the other.

Why markets say basis points instead of percent

The unit exists to remove an ambiguity. When the thing that changes is itself a percentage, "up 1%" can describe two very different moves. Start from a 5.24% yield:

FeatureNew rateWhat changed
Up 1%5.29%The rate grew by 1% of itself: 5.24 × 1.01
Up 1 percentage point6.24%One whole point was added
Up 100 bps6.24%The same move as one percentage point, with no ambiguity
Up 25 bps5.49%A quarter of a point
Three phrasings, two very different moves. A change in basis points is always the absolute change.

TickerLayer’s bond snapshot returns the move in all three forms, so code never has to guess which one a number is:

The US 10-year yield, as the API returns it

{
  "symbol": "US:10Y",
  "rate": 5.24,1
  "unit": "percent",
  "date": "2026-10-01",2
  "timestamp": 1790812800000,
  "prev_rate": 5.29,
  "prev_date": "2026-09-30",
  "change": -0.05,3
  "change_bps": -5,4
  "change_percent": -0.94525
}
  1. rateThe yield in percent: 5.24 means 5.24%, not 0.0524.
  2. dateThe observation date. Yields are daily observations, not ticks.
  3. changeThe move in percentage points: 5.24 − 5.29 = −0.05.
  4. change_bpsThe same move in basis points: −0.05 × 100 = −5.
  5. change_percentThe relative move of the yield itself: −0.05 ÷ 5.29 = −0.95%. Rarely what you want for a rate.
GET /bond/snapshot/US:10Y on 2 October 2026, with prev_timestamp left out.

change_percent is the field that bites. It answers a question nobody asks about a yield, and in a headline it would turn a 5 bps dip into a 0.95% slide. For rates, spreads and charts, use rate and change_bps.

Basis points in bond yields and spreads

Yields move in small steps, so bond desks talk in bps all day. These are the moves on 1 October 2026 across three government curves, from TickerLayer’s daily yield observations:

Daily change in yield, 1 October 2026

  • France 10Y+15.2 bps
  • France 30Y+10.5 bps
  • France 2Y+8.3 bps
  • Germany 30Y+4 bps
  • Germany 10Y+2 bps
  • US 3M-3 bps
  • US 30Y-3 bps
  • Germany 2Y-4 bps
  • US 10Y-5 bps
  • US 2Y-10 bps
The change_bps field of each tenor’s snapshot. French yields rose along the whole curve; US yields fell most at the short end.TickerLayer bond observations dated 2026-10-01.

A spread between two yields is quoted in basis points too: subtract one yield from the other and multiply by 100. The same day steepened the US curve and pushed France further away from Germany:

  • +46 bpsUS 2s10s, 10-year minus 2-year, from +41 the day before
  • +107 bpsUS 3m10y, 10-year minus 3-month, from +109
  • 128.3 bpsFrance minus Germany, 10-year, from 115.1
Spreads from the observations dated 1 October 2026: (long yield − short yield) × 100.

The yield curve inversion guide recorded 2s10s at +36 bps on 25 September. By 1 October it stood at +46: ten basis points of steepening in four sessions. Written as "0.10 percentage points" the same move sounds like a rounding error, which is why bond desks call it 10 bps.

What a basis point is worth: DV01

For a bondholder a basis point is money. A bond’s price falls when its yield rises, by roughly its modified duration times the change in yield. The value of a 1 bp move is called the DV01, the dollar value of an 01, or the price value of a basis point.

ΔP ÷ P ≈ −D × ΔyDV01 = D × P × 0.0001

ΔP ÷ P
Relative change in the bond’s price.
D
Modified duration in years: 7.71 for a 10-year bond priced at par with a 5.24% coupon paid twice a year.
Δy
Change in yield as a decimal: 25 bps is 0.0025.
P
Price or position value.
A 25 bps rise on that bond: −7.71 × 0.0025 = −1.93%, about −$19,300 on $1,000,000. Its DV01 is 7.71 × $1,000,000 × 0.0001 = $771.

The formula is a straight-line approximation, and bond prices curve. For a 100 bps rise it predicts −7.71%, while repricing the same bond exactly gives −7.36%. The gap is convexity, and it is why risk systems reprice bonds rather than multiply for large moves. For a few basis points the shortcut is accurate to a rounding error.

Basis points in quotes, fees and loans

Outside bonds, basis points make different prices comparable. A spread or a fee written in bps costs the same fraction of a trade whether the instrument is priced at 1.12 or at 82,000.

  • Bid-ask spreadsIn pre-market on 2 October 2026, US:KO quoted 86.25 bid and 86.35 ask: a 10-cent spread, or 11.6 bps of the mid. In regular hours one cent on the same price is 1.2 bps. More in bid-ask spread explained.
  • Pips and bpsOne pip on EURUSD is 0.0001 in price, about 0.89 bps at 1.125. The 0.6-pip spread quoted the same morning was 0.53 bps. See what a pip is.
  • Fund feesAn expense ratio of 0.03% is 3 bps: $300 a year on $1,000,000. The ETF vs index fund guide puts fees and spreads side by side.
  • Central bank movesPolicy rates usually move in steps of 25 bps, sometimes 50 or more. "A quarter point" and "25 basis points" are the same move.
  • Credit spreadsCorporate bonds are priced as a spread over government yields: +150 bps means 1.50 percentage points more yield than the matching government bond.
  • LoansFloating-rate loans are quoted as a benchmark rate plus a margin in bps. "Plus 200" means two percentage points above the benchmark, wherever the benchmark goes.

Basis points in code

Keep rates in code as numbers in percent, the way the API returns them, and convert to bps only to show a move or a spread. The snapshot already carries change_bps; spreads you build yourself. This script prints the latest move for four tenors and two spreads. It needs pip install requests, a TICKERLAYER_API_KEY environment variable and the Bonds data add-on.

bps.pyPython
import os

import requests

BASE_URL = "https://api.tickerlayer.com"
HEADERS = {"x-api-key": os.environ["TICKERLAYER_API_KEY"]}


def snapshot(symbol):
    resp = requests.get(f"{BASE_URL}/bond/snapshot/{symbol}", headers=HEADERS, timeout=10)
    resp.raise_for_status()
    return resp.json()


def spread_bps(long_leg, short_leg):
    """Long yield minus short yield in basis points, from observations of the same date."""
    if long_leg["date"] != short_leg["date"]:
        raise ValueError(f"dates differ: {long_leg['date']} and {short_leg['date']}")
    return round((long_leg["rate"] - short_leg["rate"]) * 100, 1)


yields = {symbol: snapshot(symbol) for symbol in ["US:2Y", "US:10Y", "DE:10Y", "FR:10Y"]}
for symbol, snap in yields.items():
    move = "n/a" if snap["change_bps"] is None else f"{snap['change_bps']:+.1f} bps"
    print(f"{symbol:<7}{snap['rate']:>7.3f}%  {move:>10}  {snap['date']}")

print("US 2s10s ", spread_bps(yields["US:10Y"], yields["US:2Y"]), "bps")
print("FR-DE 10Y", spread_bps(yields["FR:10Y"], yields["DE:10Y"]), "bps")
Output
US:2Y    4.780%   -10.0 bps  2026-10-01
US:10Y   5.240%    -5.0 bps  2026-10-01
DE:10Y   3.620%    +2.0 bps  2026-10-01
FR:10Y   4.903%   +15.2 bps  2026-10-01
US 2s10s  46.0 bps
FR-DE 10Y 128.3 bps

Two details in that script are deliberate. spread_bps refuses to subtract yields observed on different dates, because curves do not all publish at once: on the same morning the Spanish 10-year still showed 30 September while the US and German curves showed 1 October. And it rounds, because floating-point arithmetic does not do it for you:

Common basis point mistakes

  • Dividing by 100 when the formula needs 10,000: 25 bps is 0.25 in percent but 0.0025 as a decimal
  • Reading change_percent (−0.95%) as if it were change_bps (−5)
  • Comparing spreads in price units across instruments instead of in bps of the mid
  • Building a spread from two observations with different dates
  • Testing floating-point bps for equality without rounding
  • Forgetting the direction: a yield that falls 5 bps belongs to a bond whose price rose

Questions

How much is 1 basis point?

One basis point is 0.01 percentage point, or 0.0001 as a decimal. On $1,000,000 it is $100; on $10,000 it is $1.

What does 25 basis points mean?

25 basis points is a quarter of a percentage point, 0.25%. When a central bank raises a 4.00% policy rate by 25 bps, the new rate is 4.25%.

How do you convert basis points to a percentage?

Divide by 100: 50 bps is 0.50% and 150 bps is 1.50%. To go the other way, multiply percentage points by 100, and to get a decimal for a formula, divide basis points by 10,000.

What does bps mean in finance?

Bps stands for basis points, hundredths of a percentage point. It is the standard unit for changes in interest rates and yields, for spreads between two rates or prices, and for fees and costs.

Is 100 basis points 1%?

Yes, 100 basis points equal one percentage point. Watch the wording, though: a rate that rises 100 bps from 4% ends at 5%, while a rate that rises 1% in relative terms ends at 4.04%.

Why are bond yields quoted in basis points?

Yields usually move by a few hundredths of a percentage point a day, and "up 0.05 percentage points" is clumsy and easy to confuse with a relative change. Basis points give whole numbers for small moves and remove the ambiguity.

Keep reading

Ready to integrate?

Start with the free tier, explore the docs, and connect via REST or WebSocket in minutes.