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
JavaScript
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;
}