Skip to content

These are the source codes for the published paper titled "Dynamic portfolio rebalancing through reinforcement learning" at Neural Computing and Applications journal

Notifications You must be signed in to change notification settings

cao-q/Dynamic-portfolio-rebalancing-through-RL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

Dynamic portfolio rebalancing through reinforcement learning

by Qing Yang Eddy Lim, Qi Cao, Chai Quek

These are the source codes for our paper titled "Dynamic Portfolio Rebalancing through Reinforcement Learning" published at Neural Computing and Application in 2022.

Welcome to cite our paper.

How to cite our paper:

Q. Y. E. Lim, Q. Cao, and C. Quek, "Dynamic portfolio rebalancing through reinforcement learning," Neural Computing and Applications, vol. 34, no. 9, pp. 7125-7139, 2022. (https://doi.org/10.1007/s00521-021-06853-3).

Arguments

  • choose_set_num: index of data_set where data_set = ['portfolio1', 'portfolio2', 'portfolio3']
  • stocks: Stock tickers in order of risk (Desc)
  • path: path to save, replace '/' with ','
  • load: whether to load / train
  • full_swing: whether to use full_swing / gradual approach

Example gradual approach for portfolio 1

  1. train without LSTM prediction (gradual approach)
python3 train_wo_predict.py \
    --choose_set_num=0 \
    --stocks=WMT,AXP,MCD \
    --path=data,rl,portfolio1,lagged
  1. load without LSTM prediction (gradual approach)
python3 train_wo_predict.py \
    --choose_set_num=0 \
    --stocks=WMT,AXP,MCD \
    --path=data,rl,portfolio1,lagged \
    --load
  1. train LSTM model. To run for all tickers
python3 lstm_pred.py --stock=WMT --stock_file=portfolio1
python3 lstm_pred.py --stock=AXP --stock_file=portfolio1
python3 lstm_pred.py --stock=MCD --stock_file=portfolio1
  1. train with LSTM prediction (gradual approach)
python3 train_wo_predict.py \
    --choose_set_num=0 \
    --stocks=WMT,AXP,MCD \
    --path=data,rl,portfolio1,non_lagged
  1. load with LSTM prediction (gradual approach)
python3 train_wo_predict.py \
    --choose_set_num=0 \
    --stocks=WMT,AXP,MCD \
    --path=data,rl,portfolio1,non_lagged \
    --load

Example full_swing approach for portfolio 1

  1. train without LSTM prediction (full_swing approach)
python3 train_wo_predict.py \
    --choose_set_num=0 \
    --stocks=WMT,AXP,MCD \
    --path=data,rl,portfolio1,fs_lagged \
    --full_swing
  1. load without LSTM prediction (full_swing approach)
python3 train_wo_predict.py \
    --choose_set_num=0 \
    --stocks=WMT,AXP,MCD \
    --path=data,rl,portfolio1,fs_lagged \
    --load \
    --full_swing
  1. train LSTM model. To run for all tickers
python3 lstm_pred.py --stock=WMT --stock_file=portfolio1
python3 lstm_pred.py --stock=AXP --stock_file=portfolio1
python3 lstm_pred.py --stock=MCD --stock_file=portfolio1
  1. train with LSTM prediction (full_swing approach)
python3 train_wo_predict.py \
    --choose_set_num=0 \
    --stocks=WMT,AXP,MCD \
    --path=data,rl,portfolio1,fs_non_lagged \
    --full_swing
  1. load with LSTM prediction (full_swing approach)
python3 train_wo_predict.py \
    --choose_set_num=0 \
    --stocks=WMT,AXP,MCD \
    --path=data,rl,portfolio1,fs_non_lagged \
    --load \
    --full_swing

For plotting results

Use rl_visual.py. Change arguments in py script as necessary

Environment

Code tested in Python 3.7.3 64-bit, in Ubuntu 18.0.4

About

These are the source codes for the published paper titled "Dynamic portfolio rebalancing through reinforcement learning" at Neural Computing and Applications journal

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages