← Open Source
Albert-Z-Guo

Deep-Reinforcement-Stock-Trading

A light-weight deep reinforcement learning framework for portfolio management. This project explores the possibility of applying deep reinforcement learning algorithms to stock trading in a highly modular and scalable framework.

ApplicationsSpecialistsJupyter Notebook
Open on GitHub
Momentum
+0stars in 24 hours0.0%
690
Stars
157
Forks
+-1
This week
3
Contributors
Created 2019-05-19 · Updated 2026-10-12 · #14955 today
Top developers
Albert-Z-Guofengints

Albert-Z-Guo/Deep-Reinforcement-Stock-Trading is ranked 14,955 with 690 stars.

Same-category comparison

Albert-Z-Guo/Deep-Reinforcement-Stock-Trading is ranked 14,955 among these 8 peers; space-nuko/ComfyBox is ranked 14,952.

Same-category comparison
NameRankMetrics
SipherAGI/sd-webui-agent-scheduler14,944
Language:
Python
Stars:
691
Forks:
92
Description:
An open source Scheduling Agent for Generative AI.
mic1on/chatGPT-web14,948
Language:
Vue
Stars:
691
Forks:
242
natanielruiz/android-yolo14,949
Language:
C++
Stars:
691
Forks:
211
Description:
Real-time object detection on Android using the YOLO network with TensorFlow.
space-nuko/ComfyBox14,952
Language:
TypeScript
Stars:
691
Forks:
51
Description:
Customizable Stable Diffusion frontend for ComfyUI.
AlexanderDzhoganov/ComfyTextures14,961
Language:
C++
Stars:
689
Forks:
86
Description:
Unreal Engine ⚔️ ComfyUI - Automatic texturing using generative diffusion models.
AnsahMohammad/shots-studio14,962
Language:
Dart
Stars:
689
Forks:
48
Description:
An AI Powered Screenshot manager for Android.
datvodinh/rag-chatbot14,967
Language:
Python
Stars:
689
Forks:
110
Description:
Chat with multiple PDFs locally.
sharonzhou/long_stable_diffusion14,976
Language:
Python
Stars:
689
Forks:
52
Description:
Long-form text-to-images generation, using a pipeline of deep generative models (GPT-3 and Stable Diffusion).
Key parameters and specifications
Key parameters and specifications
ParameterValue
LanguageJupyter Notebook
CategoryApplications
SubcategorySpecialists
KeywordsFinance, RL, Trading
Stars690
Forks157
Contributors3
Created date2019-05-19
Updated date2026-10-12
Stars in 1 day0
Stars in 7 days-1
Rank14,955
Previous rank14,784
Rank change-171
7-day stars rank17,708
Previous 7-day stars rank17,665
7-day stars rank change-43
Total stars rank15,044
Previous total stars rank15,017
Total stars rank change-27
CountryChina
README summary

Deep-Reinforcement-Stock-Trading This project intends to leverage deep reinforcement learning in portfolio management. The framework structure is inspired by Q-Trader. The reward for agents is the net unrealized (meaning the stocks are still in portfolio and not cashed out yet) profit evaluated at each action step. For inaction at each step, a negtive penalty is added to the portfolio as the missed opportunity to invest in "risk-free" Treasury bonds. A lot of new features and improvements

are made in the training and evaluation pipelines. All evaluation metrics and visualizations are built from scratch. Key assumptions and limitations of the current framework: trading has no impact on the market only single stock type is supported only 3 basic actions: buy, hold, sell (no short selling or other complex actions) the agent performs only 1 action for portfolio reallocation at the end of each trade day all reallocations can be finished at the closing prices no missing data

in price history no transaction cost Key challenges of the current framework: implementing algorithms from scratch with a thorough understanding of their pros and cons building a reliable reward mechanism (learning tends to be stationary/stuck in local optima quite often) ensuring the framework is scalable and extensible Currently, the state is defined as the normalized adjacent daily stock price differences for days plus . In the future, we plan to add other state-of-the-art deep reinforcement learning algorithms

, such as Proximal Policy Optimization (PPO), to the framework and increase the complexity to the state in each algorithm by constructing more complex price tensors etc. with a wider range of deep learning approaches, such as convolutional neural networks or attention mechanism. In addition, we plan to integrate better pipelines for high quality data source, e. from vendors like Quandl; and backtesting, e. Getting Started To install all libraries/dependencies used in this project, run To train a DDPG agent

or a DQN agent, e. over S&P 500 from 2010 to 2015, run is the model to use: either or ; default is is the stock used to train the model; default is , which is S&P 500 from 1/1/2010 to 12/31/2015 is the span (days) of observation; default is is the number of episodes used for training; default is is the initial balance of the portfolio; default is To evaluate a DDPG or DQN agent

, run is the model to load; default is ; alternative is etc. is the stock used to evaluate the model; default is , which is S&P 500 from 1/1/2018 to 12/31/2018 is the initial balance of the portfolio; default is is the span (days) of observation; default is where can be referred in directory and can be referred in directory. To visualize training loss and portfolio value fluctuations history, run: where can be found in directory. Example

Results Note that the following results were obtained with 10 epochs of training only. Frequently Asked Questions (FAQ) How is

Frequently asked questions

How many stars and forks are recorded?

Albert-Z-Guo/Deep-Reinforcement-Stock-Trading has 690 stars and 157 forks.

What is the repository rank?

Albert-Z-Guo/Deep-Reinforcement-Stock-Trading is ranked 14,955.

What language and category are recorded?

Albert-Z-Guo/Deep-Reinforcement-Stock-Trading has 690 stars, uses Jupyter Notebook and belongs to Applications.

Which repository is closest in rank?

Albert-Z-Guo/Deep-Reinforcement-Stock-Trading is compared with space-nuko/ComfyBox, ranked 14,952 with 691 stars.

README

Deep-Reinforcement-Stock-Trading

This project intends to leverage deep reinforcement learning in portfolio management. The framework structure is inspired by Q-Trader. The reward for agents is the net unrealized (meaning the stocks are still in portfolio and not cashed out yet) profit evaluated at each action step. For inaction at each step, a negtive penalty is added to the portfolio as the missed opportunity to invest in "risk-free" Treasury bonds. A lot of new features and improvements are made in the training and evaluation pipelines. All evaluation metrics and visualizations are built from scratch.

Key assumptions and limitations of the current framework:

  • trading has no impact on the market
  • only single stock type is supported
  • only 3 basic actions: buy, hold, sell (no short selling or other complex actions)
  • the agent performs only 1 action for portfolio reallocation at the end of each trade day
  • all reallocations can be finished at the closing prices
  • no missing data in price history
  • no transaction cost

Key challenges of the current framework:

  • implementing algorithms from scratch with a thorough understanding of their pros and cons
  • building a reliable reward mechanism (learning tends to be stationary/stuck in local optima quite often)
  • ensuring the framework is scalable and extensible

Currently, the state is defined as the normalized adjacent daily stock price differences for n days plus [stock_price, balance, num_holding].

In the future, we plan to add other state-of-the-art deep reinforcement learning algorithms, such as Proximal Policy Optimization (PPO), to the framework and increase the complexity to the state in each algorithm by constructing more complex price tensors etc. with a wider range of deep learning approaches, such as convolutional neural networks or attention mechanism. In addition, we plan to integrate better pipelines for high quality data source, e.g. from vendors like Quandl; and backtesting, e.g. zipline.

Getting Started

To install all libraries/dependencies used in this project, run

pip3 install -r requirements.txt

To train a DDPG agent or a DQN agent, e.g. over S&P 500 from 2010 to 2015, run

python3 train.py --model_name=model_name --stock_name=stock_name
  • model_name is the model to use: either DQN or DDPG; default is DQN
  • stock_name is the stock used to train the model; default is ^GSPC_2010-2015, which is S&P 500 from 1/1/2010 to 12/31/2015
  • window_size is the span (days) of observation; default is 10
  • num_episode is the number of episodes used for training; default is 10
  • initial_balance is the initial balance of the portfolio; default is 50000

To evaluate a DDPG or DQN agent, run

python3 evaluate.py --model_to_load=model_to_load --stock_name=stock_name
  • model_to_load is the model to load; default is DQN_ep10; alternative is DDPG_ep10 etc.
  • stock_name is the stock used to evaluate the model; default is ^GSPC_2018, which is S&P 500 from 1/1/2018 to 12/31/2018
  • initial_balance is the initial balance of the portfolio; default is 50000
  • window_size is the span (days) of observation; default is 10

where stock_name can be referred in data directory and model_to_laod can be referred in saved_models directory.

To visualize training loss and portfolio value fluctuations history, run:

tensorboard --logdir=logs/model_events

where model_events can be found in logs directory.

Example Results

Note that the following results were obtained with 10 epochs of training only.

Frequently Asked Questions (FAQ)

  • How is this project different from other price prediction approaches, such as logistic regression or LSTM?
    • Price prediction approaches like logistic regression have numerical outputs, which have to be mapped (through some interpretation of the predicted price) to action space (e.g. buy, sell, hold) separately. On the other hand, reinforcement learning approaches directly output the agent's action.

References:

Nearby in the ranking
Similar items