This module is lack of maintenance.
If you are familiar with python programming maybe you could check stock-pandas which provides powerful statistic indicators support, and is backed by numpy and pandas.
The performance of stock-pandas is many times higher than JavaScript libraries, and can be directly used by machine learning programs.
The complete collection of mathematical utility methods for FinTech , including:
- Moving averages
- MACD
- Bollinger bands
- Standard deviations
- Highest high values / Lowest low values
And all finmath methods also handle empty values.
- simple Moving Average (MA)
- Dynamic weighted Moving Average (DMA)
- Exponential Moving Average (EMA)
- Smoothed Moving Average (SMA)
- Weighted Moving Average (WMA)
- MACD
- BOLLinger bands (BOLL)
- Standard Deviations (SD)
- Highest High Values (HHV)
- Lowest Low Values (LLV)
$ npm i finmathimport {
ma, dma, ema, sma, wma,
macd,
boll,
sd,
hhv, llv,
add, sub, mul, div
} from 'finmath'
ma([1, 2, 3, 4, 5], 2)
// [<1 empty item>, 1.5, 2.5, 3.5, 4.5]type Data = EmptyableArray<number>- data
Datathe collection of data inside which empty values are allowed. Empty values are useful if a stock is suspended. - size
numberthe size of the periods.
Returns Data
Type Array<number|Empty> represents an array of numbers or empty items. And every method of finmath does NOT accepts items that are not numbers.
[1,, 2, 3] // OK ✅
[1, undefined, 2, 3] // NOT OK ❌
[1, null, 2, 3] // NOT OK ❌// If the size is less than `1`
ma([1, 2, 3], 0.5) // [1, 2, 3]
// If the size is larger than data length
ma([1, 2, 3], 5) // [<3 empty items>]
ma([, 1,, 3, 4, 5], 2)
// [<2 empty items>, 0.5, 1.5, 3.5, 4.5]And all of the other moving average methods have similar mechanism.
- data
- alpha
Datathe coefficient or list of coefficientsalpharepresents the degree of weighting decrease for each datum.- If
alphais a number, then the weighting decrease for each datum is the same. - If
alphalarger than1is invalid, then the return value will be an empty array of the same length of the original data. - If
alphais an array, then it could provide different decreasing degree for each datum.
- If
- noHead
Boolean=whether we should abandon the first DMA.
Returns Data
dma([1, 2, 3], 2) // [<3 empty items>]
dma([1, 2, 3], 0.5) // [1, 1.5, 2.25]
dma([1, 2, 3, 4, 5], [0.1, 0.2, 0.1])
// [1, 1.2, 1.38]Calulates the most frequent used exponential average which covers about 86% of the total weight (when alpha = 2 / (N + 1)).
- data
- size
Numberthe size of the periods.
Returns Data
Also known as the modified moving average or running moving average, with alpha = times / size.
- data
- size
- times?
Number=1
Returns Data
Calculates convolution of the datum points with a fixed weighting function.
Returns Data
MACD, short for Moving Average Convergence / Divergence, is a trading indicator used in technical analysis of stock prices, created by Gerald Appel in the late 1970s.
- data
Datathe collection of prices - slowPeriods?
number=26the size of slow periods. Defaults to26 - fastPeriods?
number=12the size of fast periods. Defaults to12 - signalPeriods?
number=9the size of periods to calculate the MACD signal line.
Returns MACDGraph
macd(data)
// which returns:
// {
// MACD: <Array>,
// signal: <Array>,
// histogram: <Array>
// }- MACD
Datathe difference between EMAs of the fast periods and EMAs of the slow periods. - signal
Datathe EMAs of theMACD - histogram
DataMACDminussignal
In some countries, such as China, the three series above are commonly known as:
MACD -> DIF
signal -> DEA
histogram -> MACDboll([1, 2, 4, 8], 2, 2)
// {
// upper: [, 2.5, 5, 10],
// mid : [, 1.5, 3, 6],
// lower: [, 0.5, 1, 2]
// }- data
Datathe collection of data - size?
Number=20the period size, defaults to20 - times?
Number=2the times of standard deviation between the upper band and the moving average. - options?
Object=optional options- ma?
Data=the moving averages of the provideddatumand periodsize. This option is used to prevent duplicate calculation of moving average. - sd?
Data=the standard average of the provideddatumand periodsize
- ma?
Returns Array<Band> the array of the Band object.
interface Band {
// the value of the upper band
upper: number
// the value middle band (simple moving average)
mid: number
// the value of the lower band
lower: number
}- data
Datathe collection of data - size
numberthe sample size of
Returns Data the array of standard deviations.
sd([1, 2, 4, 8], 2) // [<1 empty item>, 0.5, 1, 2]
sd([1, 2, 3, 4, 5, 6], 4)
// [
// <3 empty items>,
// 1.118033988749895,
// 1.118033988749895,
// 1.118033988749895
// ]- data
Datathe array of closing prices. - periods
numberthe size of periods
Returns Data the highest high values of closing prices over the preceding periods periods (periods includes the current time).
const array = [1, 2, 4, 1]
hhv(array, 2) // [, 2, 4, 4]
hhv(array) // 4
hhv(array, 5) // [<4 empty items>]
hhv(array, 1) // [1, 2, 4, 1]
hhv(array, 2) // [, 1, 2, 2]Instead, returns Data the lowest low values.