mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-16 09:38:05 +00:00
46 lines
1.4 KiB
Markdown
46 lines
1.4 KiB
Markdown
# The Math Behind ALMA
|
|
|
|
## Components of ALMA
|
|
|
|
ALMA is a single-formula moving average that incorporates elements of several advanced techniques:
|
|
|
|
- Gaussian distribution
|
|
- Weighted moving average
|
|
- Offset parameter
|
|
|
|
### ALMA Formula
|
|
|
|
$ ALMA_t = \sum_{i=0}^{n-1} w_i \cdot P_{t-i} $
|
|
|
|
Where:
|
|
- $ALMA_t$ is the ALMA value at time $t$
|
|
- $n$ is the window size (number of periods)
|
|
- $P_{t-i}$ is the price at time $t-i$
|
|
- $w_i$ are the weights
|
|
|
|
### Weight Calculation
|
|
|
|
The weights $w_i$ are calculated using a Gaussian distribution function with an offset:
|
|
|
|
$ w_i = \exp\left(-\frac{(i - m)^2}{2s^2}\right) $
|
|
|
|
Where:
|
|
- $i$ is the position of the price in the window (0 to $n-1$)
|
|
- $m$ is the offset of the Gaussian distribution, calculated as $m = \text{floor}(offset \cdot (n - 1))$
|
|
- $s$ is the standard deviation of the Gaussian distribution, calculated as $s = \frac{n}{sigma}$
|
|
|
|
### Parameter Definitions
|
|
|
|
ALMA uses three main parameters:
|
|
|
|
- **Window size** ($n$): Affects the overall reactivity of the indicator.
|
|
- **Offset**: Influences the lag of the moving average. Lower values reduce lag but may increase noise.
|
|
- **Sigma**: Controls the smoothness of the indicator. Higher values increase smoothness but may increase lag.
|
|
|
|
### Computational Process
|
|
|
|
For each new data point:
|
|
- Calculate the weights for the entire window.
|
|
- Apply these weights to the most recent $n$ prices.
|
|
- Sum the weighted prices to produce the final ALMA value.
|