Options
All
  • Public
  • Public/Protected
  • All
Menu

@thi.ng/transducers-stats

transducers-stats

npm versionnpm 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
// ES module
<script type="module" src="https://unpkg.com/@thi.ng/transducers-stats?module" crossorigin></script>

// UMD
<script src="https://unpkg.com/@thi.ng/transducers-stats/lib/index.umd.js" crossorigin></script>

Package sizes (gzipped, pre-treeshake): ESM: 1.15 KB / CJS: 1.27 KB / UMD: 1.31 KB

Dependencies

Usage examples

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

A selection:

ScreenshotDescriptionLive demoSource
Basic crypto-currency candle chart with multiple moving averages plotsDemoSource
Fork-join worker-based raymarch rendererDemoSource

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