fintech-algorithms

Absolute Breadth Index

Install and import

bash
npm install fintech-algorithms
ts
import { evaluateAbsoluteBreadthIndex } from "fintech-algorithms/market-breadth-and-internals/advance-decline-breadth/absolute-breadth-index";

Signature

evaluateAbsoluteBreadthIndex(request)

Worked example

executed Captured by running this function on the input its own test provides. Real output of real code — but not asserted against a published figure.

Input

request
{
  "decision_time": "2026-01-05T21:05:00Z",
  "metric_variant": "raw_issue_count",
  "records": [
    {
      "record_id": "synthetic-r1",
      "revision": 1,
      "supersedes_record_id": null,
      "kind": "observation",
      "effective_at": "2026-01-05T21:00:00Z",
      "available_at": "2026-01-05T21:01:00Z",
      "is_final": true,
      "session_date": "2026-01-05",
      "venue_id": "SYNTH:XNAS",
      "universe_id": "SYNTH:ACTIVE-100",
      "universe_revision": "2026-01-05-r1",
      "session_id": "regular",
      "calendar_id": "SYNTH:XNAS-2026",
      "comparison_basis": "official-close-to-adjusted-comparable-prior-close"
    }
  ]
}

Call

evaluateAbsoluteBreadthIndex(request)

Returns

object with 32 fields: session_date, venue_id, universe_id, universe_revision, session_id, calendar_id, comparison_basis, corporate_action_policy, …

{
  "session_date": "2026-01-05",
  "venue_id": "SYNTH:XNAS",
  "universe_id": "SYNTH:ACTIVE-100",
  "universe_revision": "2026-01-05-r1",
  "session_id": "regular",
  "calendar_id": "SYNTH:XNAS-2026",
  "comparison_basis": "official-close-to-adjusted-comparable-prior-close",
  "corporate_action_policy": "synthetic-split-and-distribution-adjusted-v1",
  "listing_identifier_scheme": "synthetic-stable-listing-id-v1",
  "advances": 60,
  "declines": 30,
  "unchanged": 8,
  "excluded": 2,
  "missing": 0
}

Showing 14 of 32 fields.

Diagrams

Absolute Breadth Index — direction fold
Absolute Breadth Index — session magnitudes

Calculation flow

Absolute Breadth Index evidence and calculation flow
flowchart LR
    A["Raw issue-count request"] --> B{"Supported variant?"}
    B -- "No" --> U["Unsupported; ABI null"]
    B -- "Yes" --> C["Keep records effective and available by decision time"]
    C --> D{"Any causal record?"}
    D -- "No" --> I["Incomplete; ABI null"]
    D -- "Yes" --> E{"One identity and contiguous lineage?"}
    E -- "No" --> M["Ambiguous; ABI null"]
    E -- "Yes" --> F{"Current record complete and not cancelled?"}
    F -- "No" --> I
    F -- "Yes" --> G["Net Advances = A - D"]
    G --> H["Raw ABI = absolute value of Net Advances"]
    H --> R["Resolved; retain counts, sign, clocks, revision, finality"]

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

  • Schwab thinkorswim AdvanceDecline study
  • TC2000 T2101 help
  • Nasdaq Trader Daily Market Files
  • Nasdaq Daily Market Summary definitions
  • Nasdaq Trader 2026 annual CSV
  • Evidence reconciliation