JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q40813F
  • License MIT

Quickly calculate moving volume-weighted average prices [aka VWAP or MVWAP] from a stream of OHLCV candles. Uses prefix sums and static 'rolling' arrays for efficiency.

Package Exports

  • vwap-fast
  • vwap-fast/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (vwap-fast) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

vwap-fast

Quickly calculate moving volume-weighted average prices [aka VWAP or MVWAP] from a stream of OHLCV candles. Uses prefix sums in static "rolling" arrays for efficiency.

I haven't tested this much so use at your own risk.

Installation

npm i vwap-fast

Usage

//example candle
// var candle = {
//     o: 1,
//     h: 1,
//     l: 1,
//     c: 1,
//     v: 1000
// };

var Vwap = require('vwap-fast');
var maximumPeriods = 20000; //default 20000
var vwap = new Vwap(maximumPeriods); //note - 'new' keyword is optional, works either way

//first we generate 1,000,000 candles
for(var i=0;i<1000000;i++){
    var candle = vwap.generateFakeCandle(); //generate random candle around price $150
    //submitCandle(candle, useTypicalPrice=true, doAutoShift=true) 
    // -- typical price is (l+h+c)/3 -- otherwise use closing price
    // -- doAutoShift resets the zero-th prefix sum to zero every 
    // time the array "rolls over" to increase numeric stability 
    // [for very large runs where the prefix sums may overflow or lose precision]
    vwap.submitCandle(candle);
}

//get mvwap for 1000 periods
var vwap1k = vwap.getVwap(1000) //getVwap(nPeriods >= 1)
console.log(vwap1k);
//150.01489792240628

//more fields:
//vwap.totalCandles //total number of candles ever submitted to this vwap [including any that have been purged etc]
//vwap.prefixSums_PriceTimesVolume //rolling array of prefix sums for price x volume
//vwap.prefixSums_Volume //rolling array of prefix sums for volume
//vwap.currentArrayIndex //current index for "rolling" arrays. loops from 0...maximumPeriods

stonks