{"id":13510395,"url":"https://github.com/huseinzol05/Stock-Prediction-Models","last_synced_at":"2025-03-30T15:31:28.160Z","repository":{"id":37382241,"uuid":"114629751","full_name":"huseinzol05/Stock-Prediction-Models","owner":"huseinzol05","description":"Gathers machine learning and deep learning models for Stock forecasting including trading bots and simulations","archived":true,"fork":false,"pushed_at":"2023-04-16T22:03:47.000Z","size":45976,"stargazers_count":8302,"open_issues_count":52,"forks_count":2879,"subscribers_count":389,"default_branch":"master","last_synced_at":"2025-01-18T21:35:51.880Z","etag":null,"topics":["deep-learning","deep-learning-stock","evolution-strategies","learning-agents","lstm","lstm-sequence","monte-carlo","monte-carlo-markov-chain","seq2seq","stock-market","stock-prediction-models","stock-price-forecasting","stock-price-prediction","strategy-agent","trading-bot"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/huseinzol05.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-12-18T10:49:59.000Z","updated_at":"2025-01-18T05:19:05.000Z","dependencies_parsed_at":"2022-08-08T20:15:13.172Z","dependency_job_id":"a6cfb5e5-e746-42ce-b4bd-d8e69d674c38","html_url":"https://github.com/huseinzol05/Stock-Prediction-Models","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huseinzol05%2FStock-Prediction-Models","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huseinzol05%2FStock-Prediction-Models/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huseinzol05%2FStock-Prediction-Models/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huseinzol05%2FStock-Prediction-Models/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/huseinzol05","download_url":"https://codeload.github.com/huseinzol05/Stock-Prediction-Models/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246339002,"owners_count":20761473,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-learning","deep-learning-stock","evolution-strategies","learning-agents","lstm","lstm-sequence","monte-carlo","monte-carlo-markov-chain","seq2seq","stock-market","stock-prediction-models","stock-price-forecasting","stock-price-prediction","strategy-agent","trading-bot"],"created_at":"2024-08-01T02:01:37.266Z","updated_at":"2025-03-30T15:31:23.149Z","avatar_url":"https://github.com/huseinzol05.png","language":"Jupyter Notebook","funding_links":[],"categories":["Jupyter Notebook","Artificial Intelligence","Python","Others","trading-bot","Social Processing","📚 Project Purpose"],"sub_categories":["Machine Learning","Trading \u0026 Backtesting","GYM Environment","交易与回测","Sentiment Analysis","Machine Learning (Intermediate-Level"],"readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"#readme\"\u003e\n        \u003cimg alt=\"logo\" width=\"50%\" src=\"output/evolution-strategy.png\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/huseinzol05/Stock-Prediction-Models/blob/master/LICENSE\"\u003e\u003cimg alt=\"MIT License\" src=\"https://img.shields.io/badge/License-Apache--License--2.0-yellow.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/deeplearning-30--models-success.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/agent-23--models-success.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n**Stock-Prediction-Models**, Gathers machine learning and deep learning models for Stock forecasting, included trading bots and simulations.\n\n## Table of contents\n  * [Models](#models)\n  * [Agents](#agents)\n  * [Realtime Agent](realtime-agent)\n  * [Data Explorations](#data-explorations)\n  * [Simulations](#simulations)\n  * [Tensorflow-js](#tensorflow-js)\n  * [Misc](#misc)\n  * [Results](#results)\n    * [Results Agent](#results-agent)\n    * [Results signal prediction](#results-signal-prediction)\n    * [Results analysis](#results-analysis)\n    * [Results simulation](#results-simulation)\n\n## Contents\n\n### Models\n\n#### [Deep-learning models](deep-learning)\n 1. LSTM\n 2. LSTM Bidirectional\n 3. LSTM 2-Path\n 4. GRU\n 5. GRU Bidirectional\n 6. GRU 2-Path\n 7. Vanilla\n 8. Vanilla Bidirectional\n 9. Vanilla 2-Path\n 10. LSTM Seq2seq\n 11. LSTM Bidirectional Seq2seq\n 12. LSTM Seq2seq VAE\n 13. GRU Seq2seq\n 14. GRU Bidirectional Seq2seq\n 15. GRU Seq2seq VAE\n 16. Attention-is-all-you-Need\n 17. CNN-Seq2seq\n 18. Dilated-CNN-Seq2seq\n\n**Bonus**\n\n1. How to use one of the model to forecast `t + N`, [how-to-forecast.ipynb](deep-learning/how-to-forecast.ipynb)\n2. Consensus, how to use sentiment data to forecast `t + N`, [sentiment-consensus.ipynb](deep-learning/sentiment-consensus.ipynb)\n\n#### [Stacking models](stacking)\n 1. Deep Feed-forward Auto-Encoder Neural Network to reduce dimension + Deep Recurrent Neural Network + ARIMA + Extreme Boosting Gradient Regressor\n 2. Adaboost + Bagging + Extra Trees + Gradient Boosting + Random Forest + XGB\n\n### [Agents](agent)\n\n1. Turtle-trading agent\n2. Moving-average agent\n3. Signal rolling agent\n4. Policy-gradient agent\n5. Q-learning agent\n6. Evolution-strategy agent\n7. Double Q-learning agent\n8. Recurrent Q-learning agent\n9. Double Recurrent Q-learning agent\n10. Duel Q-learning agent\n11. Double Duel Q-learning agent\n12. Duel Recurrent Q-learning agent\n13. Double Duel Recurrent Q-learning agent\n14. Actor-critic agent\n15. Actor-critic Duel agent\n16. Actor-critic Recurrent agent\n17. Actor-critic Duel Recurrent agent\n18. Curiosity Q-learning agent\n19. Recurrent Curiosity Q-learning agent\n20. Duel Curiosity Q-learning agent\n21. Neuro-evolution agent\n22. Neuro-evolution with Novelty search agent\n23. ABCD strategy agent\n\n### [Data Explorations](misc)\n\n1. stock market study on TESLA stock, [tesla-study.ipynb](misc/tesla-study.ipynb)\n2. Outliers study using K-means, SVM, and Gaussian on TESLA stock, [outliers.ipynb](misc/outliers.ipynb)\n3. Overbought-Oversold study on TESLA stock, [overbought-oversold.ipynb](misc/overbought-oversold.ipynb)\n4. Which stock you need to buy? [which-stock.ipynb](misc/which-stock.ipynb)\n\n### [Simulations](simulation)\n\n1. Simple Monte Carlo, [monte-carlo-drift.ipynb](simulation/monte-carlo-drift.ipynb)\n2. Dynamic volatility Monte Carlo, [monte-carlo-dynamic-volatility.ipynb](simulation/monte-carlo-dynamic-volatility.ipynb)\n3. Drift Monte Carlo, [monte-carlo-drift.ipynb](simulation/monte-carlo-drift.ipynb)\n4. Multivariate Drift Monte Carlo BTC/USDT with Bitcurate sentiment, [multivariate-drift-monte-carlo.ipynb](simulation/multivariate-drift-monte-carlo.ipynb)\n5. Portfolio optimization, [portfolio-optimization.ipynb](simulation/portfolio-optimization.ipynb), inspired from https://pythonforfinance.net/2017/01/21/investment-portfolio-optimisation-with-python/\n\n### [Tensorflow-js](stock-forecasting-js)\n\nI code [LSTM Recurrent Neural Network](deep-learning/1.lstm.ipynb) and [Simple signal rolling agent](agent/simple-agent.ipynb) inside Tensorflow JS, you can try it here, [huseinhouse.com/stock-forecasting-js](https://huseinhouse.com/stock-forecasting-js/), you can download any historical CSV and upload dynamically.\n\n### [Misc](misc)\n\n1. fashion trending prediction with cross-validation, [fashion-forecasting.ipynb](misc/fashion-forecasting.ipynb)\n2. Bitcoin analysis with LSTM prediction, [bitcoin-analysis-lstm.ipynb](misc/bitcoin-analysis-lstm.ipynb)\n3. Kijang Emas Bank Negara, [kijang-emas-bank-negara.ipynb](misc/kijang-emas-bank-negara.ipynb)\n\n## Results\n\n### Results Agent\n\n**This agent only able to buy or sell 1 unit per transaction.**\n\n1. Turtle-trading agent, [turtle-agent.ipynb](agent/1.turtle-agent.ipynb)\n\n\u003cimg src=\"output-agent/turtle-agent.png\" width=\"70%\" align=\"\"\u003e\n\n2. Moving-average agent, [moving-average-agent.ipynb](agent/2.moving-average-agent.ipynb)\n\n\u003cimg src=\"output-agent/moving-average-agent.png\" width=\"70%\" align=\"\"\u003e\n\n3. Signal rolling agent, [signal-rolling-agent.ipynb](agent/3.signal-rolling-agent.ipynb)\n\n\u003cimg src=\"output-agent/signal-rolling-agent.png\" width=\"70%\" align=\"\"\u003e\n\n4. Policy-gradient agent, [policy-gradient-agent.ipynb](agent/4.policy-gradient-agent.ipynb)\n\n\u003cimg src=\"output-agent/policy-gradient-agent.png\" width=\"70%\" align=\"\"\u003e\n\n5. Q-learning agent, [q-learning-agent.ipynb](agent/5.q-learning-agent.ipynb)\n\n\u003cimg src=\"output-agent/q-learning-agent.png\" width=\"70%\" align=\"\"\u003e\n\n6. Evolution-strategy agent, [evolution-strategy-agent.ipynb](agent/6.evolution-strategy-agent.ipynb)\n\n\u003cimg src=\"output-agent/evolution-strategy-agent.png\" width=\"70%\" align=\"\"\u003e\n\n7. Double Q-learning agent, [double-q-learning-agent.ipynb](agent/7.double-q-learning-agent.ipynb)\n\n\u003cimg src=\"output-agent/double-q-learning.png\" width=\"70%\" align=\"\"\u003e\n\n8. Recurrent Q-learning agent, [recurrent-q-learning-agent.ipynb](agent/8.recurrent-q-learning-agent.ipynb)\n\n\u003cimg src=\"output-agent/recurrent-q-learning.png\" width=\"70%\" align=\"\"\u003e\n\n9. Double Recurrent Q-learning agent, [double-recurrent-q-learning-agent.ipynb](agent/9.double-recurrent-q-learning-agent.ipynb)\n\n\u003cimg src=\"output-agent/double-recurrent-q-learning.png\" width=\"70%\" align=\"\"\u003e\n\n10. Duel Q-learning agent, [duel-q-learning-agent.ipynb](agent/10.duel-q-learning-agent.ipynb)\n\n\u003cimg src=\"output-agent/double-q-learning.png\" width=\"70%\" align=\"\"\u003e\n\n11. Double Duel Q-learning agent, [double-duel-q-learning-agent.ipynb](agent/11.double-duel-q-learning-agent.ipynb)\n\n\u003cimg src=\"output-agent/double-duel-q-learning.png\" width=\"70%\" align=\"\"\u003e\n\n12. Duel Recurrent Q-learning agent, [duel-recurrent-q-learning-agent.ipynb](agent/12.duel-recurrent-q-learning-agent.ipynb)\n\n\u003cimg src=\"output-agent/duel-recurrent-q-learning.png\" width=\"70%\" align=\"\"\u003e\n\n13. Double Duel Recurrent Q-learning agent, [double-duel-recurrent-q-learning-agent.ipynb](agent/13.double-duel-recurrent-q-learning-agent.ipynb)\n\n\u003cimg src=\"output-agent/double-duel-recurrent-q-learning.png\" width=\"70%\" align=\"\"\u003e\n\n14. Actor-critic agent, [actor-critic-agent.ipynb](agent/14.actor-critic-agent.ipynb)\n\n\u003cimg src=\"output-agent/actor-critic.png\" width=\"70%\" align=\"\"\u003e\n\n15. Actor-critic Duel agent, [actor-critic-duel-agent.ipynb](agent/14.actor-critic-duel-agent.ipynb)\n\n\u003cimg src=\"output-agent/actor-critic-duel.png\" width=\"70%\" align=\"\"\u003e\n\n16. Actor-critic Recurrent agent, [actor-critic-recurrent-agent.ipynb](agent/16.actor-critic-recurrent-agent.ipynb)\n\n\u003cimg src=\"output-agent/actor-critic-recurrent.png\" width=\"70%\" align=\"\"\u003e\n\n17. Actor-critic Duel Recurrent agent, [actor-critic-duel-recurrent-agent.ipynb](agent/17.actor-critic-duel-recurrent-agent.ipynb)\n\n\u003cimg src=\"output-agent/actor-critic-duel-recurrent.png\" width=\"70%\" align=\"\"\u003e\n\n18. Curiosity Q-learning agent, [curiosity-q-learning-agent.ipynb](agent/18.curiosity-q-learning-agent.ipynb)\n\n\u003cimg src=\"output-agent/curiosity-q-learning.png\" width=\"70%\" align=\"\"\u003e\n\n19. Recurrent Curiosity Q-learning agent, [recurrent-curiosity-q-learning.ipynb](agent/19.recurrent-curiosity-q-learning-agent.ipynb)\n\n\u003cimg src=\"output-agent/recurrent-curiosity-q-learning.png\" width=\"70%\" align=\"\"\u003e\n\n20. Duel Curiosity Q-learning agent, [duel-curiosity-q-learning-agent.ipynb](agent/20.duel-curiosity-q-learning-agent.ipynb)\n\n\u003cimg src=\"output-agent/duel-curiosity-q-learning.png\" width=\"70%\" align=\"\"\u003e\n\n21. Neuro-evolution agent, [neuro-evolution.ipynb](agent/21.neuro-evolution-agent.ipynb)\n\n\u003cimg src=\"output-agent/neuro-evolution.png\" width=\"70%\" align=\"\"\u003e\n\n22. Neuro-evolution with Novelty search agent, [neuro-evolution-novelty-search.ipynb](agent/22.neuro-evolution-novelty-search-agent.ipynb)\n\n\u003cimg src=\"output-agent/neuro-evolution-novelty-search.png\" width=\"70%\" align=\"\"\u003e\n\n23. ABCD strategy agent, [abcd-strategy.ipynb](agent/23.abcd-strategy-agent.ipynb)\n\n\u003cimg src=\"output-agent/abcd-strategy.png\" width=\"70%\" align=\"\"\u003e\n\n### Results signal prediction\n\nI will cut the dataset to train and test datasets,\n\n1. Train dataset derived from starting timestamp until last 30 days\n2. Test dataset derived from last 30 days until end of the dataset\n\nSo we will let the model do forecasting based on last 30 days, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot.\n\n1. LSTM, accuracy 95.693%, time taken for 1 epoch 01:09\n\n\u003cimg src=\"output/lstm.png\" width=\"70%\" align=\"\"\u003e\n\n2. LSTM Bidirectional, accuracy 93.8%, time taken for 1 epoch 01:40\n\n\u003cimg src=\"output/bidirectional-lstm.png\" width=\"70%\" align=\"\"\u003e\n\n3. LSTM 2-Path, accuracy 94.63%, time taken for 1 epoch 01:39\n\n\u003cimg src=\"output/lstm-2path.png\" width=\"70%\" align=\"\"\u003e\n\n4. GRU, accuracy 94.63%, time taken for 1 epoch 02:10\n\n\u003cimg src=\"output/gru.png\" width=\"70%\" align=\"\"\u003e\n\n5. GRU Bidirectional, accuracy 92.5673%, time taken for 1 epoch 01:40\n\n\u003cimg src=\"output/bidirectional-gru.png\" width=\"70%\" align=\"\"\u003e\n\n6. GRU 2-Path, accuracy 93.2117%, time taken for 1 epoch 01:39\n\n\u003cimg src=\"output/gru-2path.png\" width=\"70%\" align=\"\"\u003e\n\n7. Vanilla, accuracy 91.4686%, time taken for 1 epoch 00:52\n\n\u003cimg src=\"output/vanilla.png\" width=\"70%\" align=\"\"\u003e\n\n8. Vanilla Bidirectional, accuracy 88.9927%, time taken for 1 epoch 01:06\n\n\u003cimg src=\"output/bidirectional-vanilla.png\" width=\"70%\" align=\"\"\u003e\n\n9. Vanilla 2-Path, accuracy 91.5406%, time taken for 1 epoch 01:08\n\n\u003cimg src=\"output/vanilla-2path.png\" width=\"70%\" align=\"\"\u003e\n\n10. LSTM Seq2seq, accuracy 94.9817%, time taken for 1 epoch 01:36\n\n\u003cimg src=\"output/lstm-seq2seq.png\" width=\"70%\" align=\"\"\u003e\n\n11. LSTM Bidirectional Seq2seq, accuracy 94.517%, time taken for 1 epoch 02:30\n\n\u003cimg src=\"output/bidirectional-lstm-seq2seq.png\" width=\"70%\" align=\"\"\u003e\n\n12. LSTM Seq2seq VAE, accuracy 95.4190%, time taken for 1 epoch 01:48\n\n\u003cimg src=\"output/lstm-seq2seq-vae.png\" width=\"70%\" align=\"\"\u003e\n\n13. GRU Seq2seq, accuracy 90.8854%, time taken for 1 epoch 01:34\n\n\u003cimg src=\"output/gru-seq2seq.png\" width=\"70%\" align=\"\"\u003e\n\n14. GRU Bidirectional Seq2seq, accuracy 67.9915%, time taken for 1 epoch 02:30\n\n\u003cimg src=\"output/bidirectional-gru-seq2seq.png\" width=\"70%\" align=\"\"\u003e\n\n15. GRU Seq2seq VAE, accuracy 89.1321%, time taken for 1 epoch 01:48\n\n\u003cimg src=\"output/gru-seq2seq-vae.png\" width=\"70%\" align=\"\"\u003e\n\n16. Attention-is-all-you-Need, accuracy 94.2482%, time taken for 1 epoch 01:41\n\n\u003cimg src=\"output/attention-is-all-you-need.png\" width=\"70%\" align=\"\"\u003e\n\n17. CNN-Seq2seq, accuracy 90.74%, time taken for 1 epoch 00:43\n\n\u003cimg src=\"output/cnn-seq2seq.png\" width=\"70%\" align=\"\"\u003e\n\n18. Dilated-CNN-Seq2seq, accuracy 95.86%, time taken for 1 epoch 00:14\n\n\u003cimg src=\"output/dilated-cnn-seq2seq.png\" width=\"70%\" align=\"\"\u003e\n\n**Bonus**\n\n1. How to forecast,\n\n\u003cimg src=\"output/how-to-forecast.png\" width=\"70%\" align=\"\"\u003e\n\n2. Sentiment consensus,\n\n\u003cimg src=\"output/sentiment-consensus.png\" width=\"70%\" align=\"\"\u003e\n\n### Results analysis\n\n1. Outliers study using K-means, SVM, and Gaussian on TESLA stock\n\n\u003cimg src=\"misc/outliers.png\" width=\"70%\" align=\"\"\u003e\n\n2. Overbought-Oversold study on TESLA stock\n\n\u003cimg src=\"misc/overbought-oversold.png\" width=\"70%\" align=\"\"\u003e\n\n3. Which stock you need to buy?\n\n\u003cimg src=\"misc/which-stock.png\" width=\"40%\" align=\"\"\u003e\n\n### Results simulation\n\n1. Simple Monte Carlo\n\n\u003cimg src=\"simulation/monte-carlo-simple.png\" width=\"70%\" align=\"\"\u003e\n\n2. Dynamic volatity Monte Carlo\n\n\u003cimg src=\"simulation/monte-carlo-dynamic-volatility.png\" width=\"70%\" align=\"\"\u003e\n\n3. Drift Monte Carlo\n\n\u003cimg src=\"simulation/monte-carlo-drift.png\" width=\"70%\" align=\"\"\u003e\n\n4. Multivariate Drift Monte Carlo BTC/USDT with Bitcurate sentiment\n\n\u003cimg src=\"simulation/multivariate-drift-monte-carlo.png\" width=\"70%\" align=\"\"\u003e\n\n5. Portfolio optimization\n\n\u003cimg src=\"simulation/portfolio-optimization.png\" width=\"40%\" align=\"\"\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhuseinzol05%2FStock-Prediction-Models","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhuseinzol05%2FStock-Prediction-Models","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhuseinzol05%2FStock-Prediction-Models/lists"}