UNPKG

fake-stock-market-generator

Version:

Generates FAKE price data that can be used to simulate a stock market

38 lines (35 loc) 1.56 kB
let faker = require('faker'); exports.generateStockData = function(numberOfMinutes) { let symbol = makeUpSymbol(); let companyName = faker.company.companyName(); let catchPhrase = faker.company.catchPhrase(); let priceData = generatePriceData(numberOfMinutes); let returnObject = {symbol, companyName, catchPhrase, priceData}; console.log(returnObject); return returnObject; } makeUpSymbol = () => { let length = Math.floor(Math.random() * 3) + 1 let result = ''; let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; let charactersLength = characters.length; for ( var i = 0; i < length; i++ ) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } generatePriceData = (numberOfMinutes) => { let startingPrice = Number(Math.floor(Math.random() * 1000) + 1); let marketWeighting = Number(Math.random() * 2) + -1; let volatility = Number(Math.random() * 10) + 1; let priceDataArray = []; for(let x = 0; x < numberOfMinutes; x++) { let maxMovement = Number((startingPrice * 0.1 ) + (volatility * marketWeighting)); priceDataArray.push({minute:x, price:Number(startingPrice.toFixed(2))}); let movement = Number(maxMovement * Math.random()); movement = Number(Math.random() < 0.5) ? -Math.abs(movement) : Math.abs(movement); let significantMovement = Number(Math.random() < 0.01) ? 10 : 1; startingPrice = Number(startingPrice + movement * significantMovement); } return priceDataArray; }