A system to create, test, optimize, and deploy algorithmic trading strategies
- Combine conditions to form compound conditions. Combine compound conditions and create trading strategies.
- For example:
- Condition A: QQQ stock is 1 SD below its 5-day mean price
- Condition B: Buying power is above $8,000.
- Condition C: Condition A and condition B
- Strategy: If condition C, buy $3000 of SPY
- For example:
- Create unlimited portfolios with different combinations of strategies
- Backtest those strategies using historical data.
- Only stocks are currently supported, but cryptocurrency and options support is baked into the architecture
- Optimize the strategy's parameters using a genetic algorithm
- Choose hyperparameters like mutation rate, training period, validation period, and population size
- Choose to optimize percent gain, sortino ratio, sharpe ratio, or max drawdown
- Deploy the strategies live and see how it performs in real-time
Some architectural artifacts can be found at this link: https://drive.google.com/drive/folders/1TgZNGPd7TBWi47dWh0TI2nZ_9WUhv_P_?usp=sharing
- Mac, Linux or WSL2 preferred
- Tradier Account (with at least a free sandbox token; additional brokers TBD)
- Clone the repository.
- Install MongoDB community edition and enable it.
- Install the dependencies:
npm run install-all
- Make sure all tests pass:
cd app && npm t && cd ..
- Add your Tradier token to the
./app/env
file and rename the file to .env
- If needed, install Node.js. NVM Option:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
- Exit and restart the terminal session.
nvm install --lts
- Install MongoDB community edition and enable. For Ubuntu 20.04:
curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt update
sudo apt install mongodb-org
- Linux/Ubuntu specific:
sudo systemctl status mongod
(verify it's running)sudo systemctl enable mongod
(to auto-start at boot)
- WSL2 specific:
sudo mkdir -p /data/db
sudo chown -R `id -un` /data/db
wget -O mongod.sh https://raw.githubusercontent.com/mongodb/mongo/master/debian/init.d
sudo mv ./mongod.sh /etc/init.d/mongod
sudo chmod +x /etc/init.d/mongod
sudo service mongod start
sudo service mongod status
(verify it's running)
mongo --eval 'db.runCommand({ connectionStatus: 1 })'
(verify it's working)
- Clone the NextTrade repository:
cd ~ && git clone https://github.com/austin-starks/NextTrade && cd NextTrade
- Install the dependencies:
npm run install-all
- Copy the sample config file to .env
cp ./app/env ./app/.env
- Add your Tradier token to the
./app/.env
file - Make sure all tests pass:
cd app && npm t; cd ..
- Open two terminal windows.
- In a terminal instance, turn on the client:
cd client; npm start
- In another terminal instance, turn on the server:
cd app; npm start
- Once started, load the app: http://localhost:3000
npm install pm2@latest -g
cd ~/NextTrade/client && pm2 start npm --name "NextTrade-Client" -- start
cd ~/NextTrade/app && pm2 start npm --name "NextTrade-App" -- start
pm2 save
- To start the client+app:
pm2 start all
- To stop the client+app:
pm2 stop all
- Other Useful commands:
pm2 status
,pm2 logs
,pm2 monit
See PM2 Quickstart for more.