CVD Slope Indicator: Formula, Settings and How to Read It
CVD Slope measures how fast session cumulative delta is changing. It takes the difference between the current CVD and its value N bars earlier, divides it by N, and reports the result in contracts per bar, with N set to 10 by default.
Senzoukria · Indicators · Updated September 2026
CVD Slope ships with the Senzoukria desktop app, in the Tape & flow group of the indicator catalogue. It is drawn in its own panel below the chart.
What CVD Slope measures
The underlying CVD accumulates bar delta from the CME session open and resets at each open, so the slope window must stay inside a single session. When the bar N positions back belongs to a previous session, no value is printed: the calculation would otherwise measure the artificial step created by the reset instead of the flow. The same applies during warm-up, when fewer than N bars have elapsed since the open. The sign of the reading gives the direction of accumulation over the window and the magnitude gives its pace, which the raw CVD curve conveys only by eye.
The formula, as implemented
This is not a description of how the indicator is usually defined elsewhere — it is what the shipped code computes, documented next to the implementation:
Pente du CVD de séance sur N barres : value = (CVD[i] − CVD[i−N]) / N (contrats par barre) CVD = cumul de `totalDelta` depuis l'ouverture CME 17:00 CT, reset à chaque ouverture (canon — `sessionCvd`). POURQUOI : le CVD brut est une courbe qui monte ou descend depuis l'ouverture ; ce qui se trade, c'est son INCLINAISON. Une pente qui s'aplatit alors que le prix continue est le premier signe qu'une jambe s'essouffle, bien avant que le CVD ne retourne. Convention NON NÉGOCIABLE : la fenêtre doit tenir DANS LA MÊME SÉANCE. Une pente calculée à cheval sur un reset mesurerait la marche artificielle du remise-à-zéro, pas le flux → null (`sessionStart[i] !== sessionStart[i−N]`). Warm-up (moins de N barres depuis l'ouverture) → null. Défaut N=10 : assez long pour lisser deux barres contradictoires, assez court pour tourner dans la séance.
How to read it
- A reading above zero means net aggressive buying accumulated over the last N bars, regardless of where the CVD curve sits in absolute terms.
- A slope flattening toward zero while price continues in the same direction indicates the move is no longer being fed by aggression at the earlier rate.
- Flattening comes first: by the time the reading crosses zero, cumulative delta is already below where it stood N bars ago.
- Compare magnitudes at comparable times of day; contracts per bar is much larger around an active open than in a quiet period.
- Empty values in the first bars after a session open are expected and mark the warm-up, not a flat market.
Parameters and defaults
Period defaults to 10 and accepts 1 to 500. A period of 1 reduces the reading to the bar's own delta, which defeats the purpose; longer periods average more strongly but react later and stay empty longer after each session open, since the whole window has to fit inside the session. The line colour defaults to #2962ff and is cosmetic; there is no smoothing parameter, the reading being an average over the period already.
| Parameter | Type | Default | Range |
|---|---|---|---|
| Period | number | 10 | 1 – 500 |
What it does not show
The slope is a straight line between two points and ignores the path taken between them, so a steady accumulation and a single violent burst followed by nothing can produce the same value. The unit is contracts per bar, which depends on the bar type and interval, so readings cannot be carried from one chart configuration to another. Values are absent across session boundaries by design, which limits its use around the open. And the pace of aggressive flow tells you nothing about the resting liquidity absorbing it.
Using it in Senzoukria
Add it from the Indicators panel of any footprint chart or candle chart. It runs on futures data from Rithmic or Databento and on crypto pairs from Binance and Bybit, on the same engine — the calculation does not change with the venue, only the data feeding it does. Market data subscriptions are billed by the provider, separately from the app.
Related indicators
- Tape Speed — Tape & flow
- Diagonal Imbalances — Tape & flow
- Stacked Imbalances — Tape & flow
- Absorption Score — Tape & flow
- Unfinished Auctions — Tape & flow
- Effort vs Result — Tape & flow
See the full indicator library, or start with the order flow guide if you are new to reading aggression, delta and absorption.
Frequently asked questions
- What does CVD slope measure?
- It measures the average change in session cumulative delta per bar over a fixed window, by default ten bars. A positive value means net aggressive buying has been accumulating over that window, and a larger value means it accumulated faster. It converts the visual steepness of the CVD curve into a number that can be compared bar to bar.
- Why is CVD slope blank right after the session open?
- The calculation needs a CVD value from N bars earlier that belongs to the same session. Just after the open there are not yet enough bars, and reaching back further would cross the reset where CVD jumps to zero, producing a meaningless value. The indicator prints nothing until a full window fits inside the current session.
- Does a flattening CVD slope mean price will reverse?
- No. A slope moving toward zero means aggressive flow accumulated more slowly than over the previous window, which is a statement about the pace of executed volume and nothing else. Price can keep going while flow slows, for instance when little resting liquidity stands in the way. The reading is worth examining next to price and the order book, not on its own.