Skip to main content

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

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

Logos 1, 2 obtained from flaticon

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

AssetAllocator-0.0.8-py3-none-any.whl (583.6 kB view details)

Uploaded Python 3

File details

Details for the file AssetAllocator-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: AssetAllocator-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 583.6 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

Hashes for AssetAllocator-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 fdb3e09e05ce7efebc76277e533bc82cfbdefb1b00ee3c117dc0d81915d56521
MD5 fee6071f453758f3aafb042af0172689
BLAKE2b-256 89284df925328f763edc6dd433033a7888a67eadaf17881d53365bfa55a16c80

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page