Train RL agents to manage a portfolio
Project description
Automating Portfolio Allocation with Reinforcement Learning
AssetAllocator
Installation
pip install AssetAllocator
Usage
Available Models and their keys
Model Name | Key |
---|---|
Normalized Advantage Function | NAF |
REINFORCE | REINFORCE |
Deep Deterministic Policy Gradient | DDPG |
Twin Delayed Deep Deterministic Policy Gradient | TD3 |
Advantage Actor Critic | A2C |
Soft Actor Critic | SAC |
Trust Region Policy Optimization | TRPO |
Proximal Policy Optimization | PPO |
Running Experiments
We wrote a generic Trainer and Experiment class that can be used to train any of the agents. All you need to do is your hyperparameter dictionaries and the agent name to run an experiment
import torch
from AssetAllocator.experiment import Experiment
device = 'cuda' if torch.cuda.is_available() else 'cpu'
trainer_kw = {'print_every': 1, 'test_runs': 1}
model_kw = {'device': device}
exp = Experiment(trainer_kwargs=trainer_kw, model_kwargs=model_kw)
exp.run('SAC')
exp = Experiment(trainer_kwargs=trainer_kw, model_kwargs=model_kw, timesteps=[1_000_000])
exp.run('SAC')
Hyperparameter Tuning
The Experiment class has support for overriding agent, trainer, and environment parameters. Check the docs for more details about the agent, trainer, and environment and pass in the appropriate dictionaries to the Experiment class. An example can be seen below
trainer_kw = {
'experiment_name': 'time_to_get_rich',
'print_every': 100,
'test_runs': 10,
'add_softmax'=True,
'start_date'='2009-01-01',
'end_date'='2022-01-01',
'seed'=667,
'test_length'=550,
'test_runs'=1
}
model_kw = {
'device': device,
'hidden_dim'=256,
'gamma'=0.9,
}
exp = Experiment(trainer_kwargs=trainer_kw, model_kwargs=model_kw)
exp.run('A2C')
More Examples
We have provided several example notebooks to help you get started
Dependencies
- gym
- torchvision
- scipy
- torch
- yfinance
- stable_baselines3
- numpy
- tqdm
- pandas
- matplotlib
Contributions
AssetAllocator is open to contributions
Attribution
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file AssetAllocator-0.0.10-py3-none-any.whl
.
File metadata
- Download URL: AssetAllocator-0.0.10-py3-none-any.whl
- Upload date:
- Size: 583.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 01b6d8e9b0f4d0673ccb9ea72edfd482cafce8d3820b4d6971822e4466bc5f9b |
|
MD5 | 1917c533bdeee70008a521dc2faa2e9f |
|
BLAKE2b-256 | 8e25f867955ae8278ca6e42347c96e6bf64b6551548dd841359b0ebddaefe888 |