Percentage Change, Percentage Points, and Basis Points
Install and import#
npm install fintech-algorithmsimport { percentageChangePercentagePointsAndBasisPoints } from "fintech-algorithms/foundations/mathematical-language-and-quantitative-reasoning/percentage-change-percentage-points-and-basis-points";Signature#
percentageChangePercentagePointsAndBasisPoints(input)Expresses the move from an old level to a new one three ways: as a percent change relative to the old level, as a raw difference in percentage points, and as that difference scaled to basis points.
Parameters#
| Name | Type | Notes |
|---|---|---|
input | D00Input | A plain object. Every F01 topic first reads values, which must be a non-empty array of finite numbers, and validates it before any per-topic branch runs. This topic then reads old and new, both coerced with Number; values is demanded but not used by this calculation. |
Returns#
{ percentageChange: number; percentagePoints: number; basisPoints: number }
percentageChange is 100 * (new - old) / Math.abs(old), so the sign follows the direction of the move even when old is negative. percentagePoints is the plain difference new - old, and basisPoints is that same difference multiplied by 100.
Errors#
- When input is not a plain object — throws TypeError
- When values is missing, empty, or not an array — throws RangeError
- When values contains a value that is not a finite number — throws RangeError
- When old is zero — throws RangeError
Complexity: time O(n),
space O(n).
Worked example#
verified This is the worked example published in the article, replayed by the test suite on every run. The output cannot drift.
Input#
{
"values": [1, 2, 3, 4, 5],
"startingCash": 1000,
"inflows": 250,
"outflows": 120,
"slope": 2,
"intercept": 1,
"part": 25,
"whole": 200,
"elapsed": 5,
"old": 4.5,
"new": 4.75,
"base": 16,
"exponent": 0.5,
"a": 2
}Showing 14 of 28 fields.
Call#
percentageChangePercentagePointsAndBasisPoints(input)Returns#
object with 2 fields: percentageChange, percentagePoints
{
"percentageChange": 5.555555555555555,
"percentagePoints": 0.25
}Diagrams#
Calculation flow#
Percentage Change, Percentage Points, and Basis Points — four-part map
flowchart LR
A["Name the input"] --> B["Apply: relative change = (new - old) / old × 100; basis points = percentage-point change × 100"]
B --> C["Check units and boundary"]
C --> D["Explain the output"]
How it works#
This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.
References#
- Basis Point — U.S. Securities and Exchange Commission
- NIST/SEMATECH e-Handbook of Statistical Methods — NIST/SEMATECH
- Author-derived and synthetic boundary