Real-time-stock-market-prediction

授权协议 未知
开发语言 Python
所属分类 神经网络/人工智能、 机器学习/深度学习
软件类型 开源软件
地区 不详
投 递 者 孟自强
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Server architecture for Real-time Stock-market prediction with ML

In this repository, I have developed the entire server-side principal architecture for real-time stock market prediction with Machine Learning. I have used TensorFlow.js for constructing ml model architecture, and Kafka for real-time data streaming and pipelining.

Technologies used:

  1. Kafka.
    • Pipelining logs from source to topics.
    • Topics are subscribed by consumer for real-time ml prediction and model training in parallel.
  2. TensorFlow.js.
    • Construction of tensorflow model in node.js.
    • Training model with time-series stock market data.
    • Use tfjs model for real-time prediction.
  3. MongoDB.
    • Update data-base with incoming stock market logs.
    • Use stored logs for analysis, and model training.
    • Store performance of the ml model for monitoring purpose.
  4. Node.js
    • The entire server architecture is developed with node.js

Implementation

Start the Kafka environment

Start the ZooKeeper service.

$ bin/zookeeper-server-start.sh config/zookeeper.properties

Start the Kafka broker service

$ bin/kafka-server-start.sh config/server.properties

Start Streaming of logs.

Here, I have used .csv files in the dataset folder as the source of data. The data-source is pipelined with Kafka Topics. The first topic pipelines logs to MongoDB and the second topic pipelines logs to Tensorflow model for real-time prediction.
The streaming of logs from data-source through producer and consumer makes this architecture suitable for real-time analysis, ML model training and model prediction in parallel.
The producer could be started from

$ node producer.js
# or
$ start.sh

Streaming producer logs.

$ node consumer.js

Streaming consumer logs.

In the consumer(consumer.js) the incoming logs are updated to MongoDB for further model training and analysis.

Machine Learning model.

The machine learning model architecture has been developed with TensorFlow.js. The model is trained with 80% of the stored data and validated against 20% of them. As the problem statement focuses over a time-series problem so we need to pre-process the data before training. Data have been pre-processed with MinMax-Scalar algorithm.
Training the ml model.

$ node tf_train.js
# or
$ server.sh

Validating the model.
$ node tf_validate.js


After validation the real and predicted values along with date and attribute of the stock-market time-series data that the model is trained against are updated to the MongoDB.

Model performance chart from MongoDB

Real-time prediction.

The weights of the trained model are saved and loaded at the consumer side that subscribes to the second topic of the Kafka stream and predicts the output of the time-series event in real-time. As both topics of the Kafka pipeline are working in parallel, parallelism is achieved and logs are streamed by Kafka is real-time, which indeed implies the machine learning model could train and predict target in real-time.

$ node ml_consumer.js

Prediction [attribute] [predicted value].
example - Prediction Open 0.12453 

This line in the above image(ml_consumer.js output) indicates the prediction of the model in real-time. The model utilizes 7 prior time-series logs as input and predicts the 8th time-series event.

Future Scopes.

  1. I have created the server-side architecture of the model, for which the client-side also needed to be developed.
  2. I was researching on react.js for construction of the client-side, but I failed at some aspects due to which I left the client-side for future development.
  3. The code I have written could be further optimised for better architectural design and model performance.
 相关资料
  • stock-market-india A npm package which fetches data from Bombay & National Stock Exchange and provides an API to access it. National Stock Exchange (NSE) API Get the stock market status (open/closed)

  • stock-market-scraper Always wanted to get live updated historical data of your favourite stocks? Say no more! stock-market-scraper is a command line tool which downloads all historical stock data in b

  • Real-Time Voice Cloning 是“Transfer Learning from Speaker Verification to Multispeaker Text-To-Speech Synthesis(SV2TTS)”论文的实现,这是一个三阶深度学习框架,允许从几秒钟的音频中创建一个数字化的语音,并使用它来调节训练的“文本转语音”模型,以推广到新的声音。 此项目中带有一个实时工作的声码器。

  • Real-time Blend Demo 是一个示例应用,用于演示由 Imaging SDK 提供的实时混合效果,这种效果会被用在手机的摄像头中。

  • 基于 Java 的客户端/服务器在线游戏引擎和 API,可轻松创建/运行实时多人游戏。游戏包括战舰、卡米洛特、跳棋、国际象棋、连线、围棋、德州扑克、黑白棋、俄罗斯方块和井字棋。

  • 1.1 题目 Say you have an array for which the ith element is the price of a given stock on day i. If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the sto