Options
All
  • Public
  • Public/Protected
  • All
Menu

@thi.ng/transducers-stats

@thi.ng/transducers-stats

npm version npm downloads Twitter Follow

This project is part of the @thi.ng/umbrella monorepo.

About

Transducers for statistical / technical analysis. This is a support package for @thi.ng/transducers.

This package provides a set of transducers for technical (financial) and statistical analysis and replaces the older @thi.ng/indicators package.

The transducers provided here accept an optional input iterable, which allows them them to be used directly instead of having to wrap their call in one of the transducer execution functions (i.e. transduce(), iterator()). If executed this way, the functions will return a transforming ES6 iterator (generator) instead of a transducer.

Supported indicators

Status

STABLE - used in production

Installation

yarn add @thi.ng/transducers-stats

Package sizes (gzipped): ESM: 1.1KB / CJS: 1.3KB / UMD: 1.3KB

Dependencies

Usage examples

Several demos in this repo's /examples directory are using this package.

A selection:

crypto-chart

screenshot

Basic crypto-currency candle chart with multiple moving averages plots

Live demo | Source

shader-ast-workers

screenshot

Live demo | Source

API

Generated API docs

import * as tx from "@thi.ng/transducers";
import * as stats from "@thi.ng/transducers-stats";

// Simple moving average (SMA) (sliding window size 5)
// if an input is given (as is the case here), then returns
// a transforming iterator instead of transducer
[...stats.sma(5, [1,2,3,4,5,10,11,12,13,14,9,8,7,6,5])]
// [ 3, 4.8, 6.6, 8.4, 10.2, 12, 11.8, 11.2, 10.2, 8.8, 7 ]

// compute multiple stats at once
tx.transduce(
    tx.comp(
        tx.multiplexObj({
            sma: stats.sma(5),
            ema: stats.ema(5),
            wma: stats.wma(5)
        }),
        // ignore first `period-1` values
        // (because MAs require at least `period` inputs to warm up)
        tx.drop(4)
    ),
    tx.push(),
    [1,2,3,4,5,10,11,12,13,14,9,8,7,6,5]
);
// [ { wma: 3.6666666666666665, ema: 3, sma: 3 },
//   { wma: 6, ema: 5.333333333333333, sma: 4.8 },
//   { wma: 8.066666666666666, ema: 7.222222222222221, sma: 6.6 },
//   { wma: 9.866666666666667, ema: 8.814814814814815, sma: 8.4 },
//   { wma: 11.4, ema: 10.209876543209877, sma: 10.2 },
//   { wma: 12.666666666666666, ema: 11.473251028806585, sma: 12 },
//   { wma: 11.666666666666666, ema: 10.64883401920439, sma: 11.8 },
//   { wma: 10.4, ema: 9.76588934613626, sma: 11.2 },
//   { wma: 9, ema: 8.843926230757507, sma: 10.2 },
//   { wma: 7.6, ema: 7.895950820505004, sma: 8.8 },
//   { wma: 6.333333333333333, ema: 6.93063388033667, sma: 7 } ]

Authors

Karsten Schmidt

License

© 2017 - 2020 Karsten Schmidt // Apache Software License 2.0

Generated using TypeDoc