Depth-at-Distance Profile
Install and import
npm install fintech-algorithmsimport { depthAtDistanceProfile } from "fintech-algorithms/market-microstructure/market-depth-analytics/depth-at-distance-profile";Signature
depthAtDistanceProfile(bidsRaw, asksRaw, tickRaw, maxRaw)Depth bucketed by distance from the touch, in ticks. Shows where liquidity actually sits rather than reducing the book to a single number.
Parameters
| Name | Type | Notes |
|---|---|---|
bidsRaw | Level[] | Bid levels. |
asksRaw | Level[] | Ask levels. |
tickRaw | number | Tick size. min: 0 |
maxRaw | number | Maximum distance in ticks to profile. min: 0 |
Returns
{ profile, max_distance, tick, … }
Depth per distance bucket on both sides.
Errors
- When tick size is not positive — throws
Complexity: time O(levels),
space O(buckets).
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
[
{
"price": 99.99,
"quantity": 500
},
{
"price": 99.98,
"quantity": 800
},
{
"price": 99.97,
"quantity": 1200
}
]Showing 3 of 5 elements.
[
{
"price": 100.01,
"quantity": 300
},
{
"price": 100.02,
"quantity": 600
},
{
"price": 100.03,
"quantity": 1000
}
]Showing 3 of 5 elements.
0.014Call
depthAtDistanceProfile(bidsRaw, asksRaw, tickRaw, maxRaw)Returns
object with 8 fields: model, tick_size, max_distance_ticks, bid_profile, ask_profile, included_bid_depth, included_ask_depth, state
{
"model": "same-side-best-tick-distance-profile",
"tick_size": 0.01,
"max_distance_ticks": 4,
"bid_profile": [
{
"distance_ticks": 0,
"quantity": 500,
"cumulative_quantity": 500,
"depth_share": 0.1388888888888889
},
{
"distance_ticks": 1,
"quantity": 800,
"cumulative_quantity": 1300,
"depth_share": 0.2222222222222222
},
{
"distance_ticks": 2,
"quantity": 1200,
"cumulative_quantity": 2500,
"depth_share": 0.3333333333333333
}
],
"ask_profile": [
{
"distance_ticks": 0,
"quantity": 300,
"cumulative_quantity": 300,
"depth_share": 0.09090909090909091
},
{
"distance_ticks": 1,
"quantity": 600,
"cumulative_quantity": 900,
"depth_share": 0.18181818181818182
},
{
"distance_ticks": 2,
"quantity": 1000,
"cumulative_quantity": 1900,
"depth_share": 0.30303030303030304
}
],
"included_bid_depth": 3600,
"included_ask_depth": 3300,
"state": "bid-profile-heavier"
}Other exports
This module also exports
cumulativeDepth, topNDepthImbalance, expectedFillPrice, sweepCostAndSlippage, liquidityWallConcentration, depthDepletionReplenishment, marketDepthHeatmap, calculate. 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
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
- NYSE Integrated Feed — New York Stock Exchange
- Nasdaq TotalView-ITCH 5.0 Specification — Nasdaq
- Evidence boundary