fintech-algorithms
Using a coding agent? Give it the skill: npx skills add IslamBaraka90/Fintech-Algorithms-Library What it does →

Percentage Change, Percentage Points, and Basis Points

Install and import#

bash
npm install fintech-algorithms
ts
import { 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#

NameTypeNotes
inputD00InputA 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#

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#

Percentage Change, Percentage Points, and Basis Points — concept anatomy
Percentage Change, Percentage Points, and Basis Points — lesson map
Percentage Change, Percentage Points, and Basis Points — mistake contrast

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.

Read the article →

References#

  • Basis Point — U.S. Securities and Exchange Commission
  • NIST/SEMATECH e-Handbook of Statistical Methods — NIST/SEMATECH
  • Author-derived and synthetic boundary

The rest of the Mathematical Language and Quantitative Reasoning family#