DeMark Pivot Points
Install and import#
npm install fintech-algorithmsimport { demarkPivotPoints } from "fintech-algorithms/geometric-chart-patterns/pivots-and-levels/demark-pivot-points";Signature#
demarkPivotPoints(input)Chooses one of three formulas for the intermediate X depending on whether the previous bar closed below, above, or level with its open, then reports pivot = X / 4 with a single band pair r1 = X / 2 - L_prev and s1 = X / 2 - H_prev.
Parameters#
| Name | Type | Notes |
|---|---|---|
input | TopicInput | bars is the required OHLCV history, strictly ordered by timestamp and on a single adjustment basis. This variant reads no keys from parameters; the branch is selected purely from the previous bar's close-versus-open relationship. period (default 20) is still validated as an integer of at least 2 if supplied. |
Returns#
TopicResult
series and latest carry pivot, r1, s1, r2 and s2, but DeMark defines only one band pair, so r2 and s2 are null at every index including the last. The warm-up is one bar.
Warm-up#
The first 1 bar positions are null. Index 0 is null in every series and ready_at is 1; r2 and s2 never leave null, which is the formula and not an unfinished warm-up.
Errors#
- When a bar's
highis below its ownopen,close, orlow(orlowis above them) — throws Error - When
barsis empty or is not an array — throws Error
Complexity: time O(n),
space O(n).
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#
{
"bars": [
{
"timestamp": "2024-01-02",
"basis": "synthetic-unadjusted",
"open": 100,
"high": 101.45,
"low": 98.695,
"close": 100,
"volume": 750000,
"benchmark": 200
},
{
"timestamp": "2024-01-03",
"basis": "synthetic-unadjusted",
"open": 101.49111452,
"high": 103.38381693,
"low": 100.05480022,
"close": 101.78791214,
"volume": 795117,
"benchmark": 200.56326135
},
{
"timestamp": "2024-01-04",
"basis": "synthetic-unadjusted",
"open": 102.45519048,
"high": 104.6701838,
"low": 100.91147007,
"close": 102.9549389,
"volume": 840234,
"benchmark": 201.11020913
}
],
"parameters": {}
}Call#
demarkPivotPoints(input)Returns#
object with 9 fields: topic_id, title, state, ready, ready_at, series, latest, parameters, …
{
"topic_id": "D08-F01-A09",
"title": "DeMark Pivot Points",
"state": "calculated",
"ready": true,
"ready_at": 1,
"series": {
"pivot": [
null,
100.03625,
102.152586555,
103.3016941425,
103.58734312749999,
103.220884675
],
"r1": [
null,
101.3775,
104.25037289,
105.691918215,
106.09474635499998,
105.64435387999998
],
"s1": [
null,
98.62249999999999,
100.92135618,
101.93320448499999,
102.15611129499999,
101.81435779999998
],
"r2": [null, null, null, null, null, null],
"s2": [null, null, null, null, null, null]
},
"latest": {
"pivot": 101.174576485,
"r1": 102.31329422,
"s1": 99.19207042000001,
"r2": null,
"s2": null
},
"parameters": {},
"diagnostics": {
"causal": true,
"input_count": 96
}
}Diagrams#
Calculation flow#
DeMark Pivot Points calculation flow
flowchart LR
A["closed OHLC bars or causally confirmed pivots with session"] --> B["Validate order, basis, and finite values"]
B --> C["Apply the selected DeMark Pivot Points convention"]
C --> D["Emit value, readiness, and diagnostics"]
D --> E["Interpret descriptively; test outcomes separately"]
B -->|invalid or insufficient| X["Withhold output with a reason"]
DeMark Pivot Points readiness and evidence states
stateDiagram-v2
[*] --> Waiting
Waiting --> Ready: enough valid causal observations
Waiting --> Rejected: malformed or unsupported input
Ready --> Calculated: selected formula applied
Calculated --> Interpreted: diagnostic and limitation retained
Interpreted --> Ready: next observation arrives
Rejected --> Waiting: corrected input and deterministic reset
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#
- CFA Institute technical-analysis overview — see linked primary or authoritative record
- TA-Lib maintained source — see linked primary or authoritative record
- Long-Term Storage Capacity of Reservoirs — see linked primary or authoritative record
- Evidence decision
- Level 1 evidence map