2025-12-20 15:08:07 -08:00
# ADL: Accumulation/Distribution Line
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
> "Volume precedes price." — Old Wall Street Adage
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
The Accumulation/Distribution Line (ADL) is the bedrock of volume analysis. It attempts to answer a single, vital question: "Are the big players buying or selling?"
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
Unlike On-Balance Volume (OBV), which treats every up-day as 100% buying, ADL is nuanced. It looks at *where* the price closed within the day's range. A close near the high on massive volume screams "Accumulation." A close near the low on massive volume screams "Distribution."
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
## Historical Context
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
Developed by Marc Chaikin, the ADL was originally designed to spot divergences. Chaikin noticed that if a stock made a new high but the ADL failed to make a new high, a crash was imminent. He essentially quantified the "smart money" flow.
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
## Architecture & Physics
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
ADL is a cumulative indicator, meaning it has infinite memory. Today's value depends on the sum of all yesterdays.
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
The core mechanic is the **Money Flow Multiplier (MFM)** , also known as the Close Location Value (CLV). This value ranges from -1 to +1:
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
- **+1**: Close = High (Maximum Accumulation)
- **-1**: Close = Low (Maximum Distribution)
- **0**: Close is exactly in the middle
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
This multiplier is then applied to the volume to determine the "Money Flow Volume" for the period.
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
## Mathematical Foundation
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
### 1. Money Flow Multiplier (MFM)
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
$$
MFM = \frac{(Close - Low) - (High - Close)}{High - Low}
$$
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
### 2. Money Flow Volume (MFV)
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
$$
MFV = MFM \times Volume
$$
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
### 3. Accumulation/Distribution Line (ADL)
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
$$
ADL_t = ADL_{t-1} + MFV_t
$$
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
## Performance Profile
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
ADL is extremely lightweight.
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
| Metric | Complexity | Notes |
2025-12-18 21:32:01 -08:00
| :--- | :--- | :--- |
2025-12-20 15:08:07 -08:00
| **Throughput** | ~2ns / bar | Simple arithmetic + accumulation |
| **Allocations** | 0 bytes | Hot path is allocation-free |
| **Complexity** | O(1) | Constant time per update |
| **Precision** | `double` | Essential for cumulative sums |
2025-12-18 21:32:01 -08:00
## Validation
2025-12-21 14:37:44 -08:00
Validation is performed against **TA-Lib** , **Skender.Stock.Indicators** , and **Tulip Indicators** .
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
- **Accuracy**: Matches external libraries to 9 decimal places.
- **Edge Cases**: Handles `High == Low` (division by zero protection) by setting MFM to 0.
2025-12-18 21:32:01 -08:00
2025-12-20 15:08:07 -08:00
### Common Pitfalls
- **Gaps**: ADL ignores gaps. If a stock gaps up but closes near its low, ADL will register distribution, even if the price is higher than yesterday.
- **Scale**: The absolute value of ADL is meaningless; it depends on the start date of the data. Only the *trend* and *divergence* matter.
- **Volume Spikes**: A single bad data point with erroneous volume can permanently skew the ADL. Sanitize your data.