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

Price-by-Volume Profile Construction

Install and import#

bash
npm install fintech-algorithms
ts
import { priceByVolumeProfileConstruction } from "fintech-algorithms/geometric-chart-patterns/level-confluence-and-zone-scoring/price-by-volume-profile-construction";

Signature#

priceByVolumeProfileConstruction(input)

Aggregates eligible point-in-time trades into deterministic tick-aligned price-by-volume bins.

Parameters#

NameTypeNotes
input{ tick_size: number; bin_size_ticks: number; window_end: string; trades: { trade_id: string; timestamp: string; price: number; volume: number; final: boolean }[] }Record containing tick_size, bin_size_ticks, window_end, and chronologically ordered unique trades.

Returns#

{ state, tick_size, bin_size_ticks, bin_width, total_volume, trade_count, eligible_trade_count, rows }

One calculated profile record; each row contains bin index, bounds, midpoint, volume, and volume share.

Errors#

  • When tick/bin settings, window time, trade identity, chronology, price, or volume is invalid — throws

Complexity: time , space .

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#

input
{
  "tick_size": 0.25,
  "bin_size_ticks": 2,
  "window_end": "2026-08-03T10:30:00Z",
  "trades": [
    {
      "trade_id": "T01",
      "timestamp": "2026-08-03T10:00:00Z",
      "price": 99,
      "volume": 10,
      "final": true
    },
    {
      "trade_id": "T02",
      "timestamp": "2026-08-03T10:02:00Z",
      "price": 99.25,
      "volume": 15,
      "final": true
    },
    {
      "trade_id": "T03",
      "timestamp": "2026-08-03T10:04:00Z",
      "price": 99.5,
      "volume": 25,
      "final": true
    }
  ]
}

Call#

priceByVolumeProfileConstruction(input)

Returns#

object with 8 fields: state, tick_size, bin_size_ticks, bin_width, total_volume, trade_count, eligible_trade_count, rows

{
  "state": "calculated",
  "tick_size": 0.25,
  "bin_size_ticks": 2,
  "bin_width": 0.5,
  "total_volume": 340,
  "trade_count": 12,
  "eligible_trade_count": 12,
  "rows": [
    {
      "bin_index": 198,
      "lower": 99,
      "upper": 99.5,
      "midpoint": 99.25,
      "volume": 25,
      "share": 0.073529411765
    },
    {
      "bin_index": 199,
      "lower": 99.5,
      "upper": 100,
      "midpoint": 99.75,
      "volume": 45,
      "share": 0.132352941176
    },
    {
      "bin_index": 200,
      "lower": 100,
      "upper": 100.5,
      "midpoint": 100.25,
      "volume": 152,
      "share": 0.447058823529
    }
  ]
}

Other exports#

This module also exports calculate, pocValueAreaHvnLvnDetection, fibonacciRetracementExtensionProjection, psychologicalRoundNumberLevelGeneration, multiSourceSupportResistanceZoneFusion, supportResistanceZoneStrengthDecayScoring, supportResistanceRoleReversalStateMachine, breakoutAndRetestDetection, marketWideZoneProximityScannerRanking. Every module additionally exports run as an alias of its primary function, and a meta object carrying its catalog id, domain, family, shape and article URL.

Diagrams#

Price-by-Volume Profile Construction — system map

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#

The rest of the Level Confluence and Zone Scoring family#