Skip to main content

Automating Portfolio Allocation with Reinforcement Learning

Docs | Examples

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

Logos 1, 2 obtained from flaticon

Metadata

Release files for AssetAllocator 0.0.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for AssetAllocator 0.0.12
File Interpreter ABI Platform
AssetAllocator-0.0.12-py3-none-any.whl Python 3 none any Details

Release files / AssetAllocator-0.0.12-py3-none-any.whl

Download URL AssetAllocator-0.0.12-py3-none-any.whl
Size 586.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1b958385b2df7010ad5449f0fee44741c128181295924255dcf32eecc6d9b63d
BLAKE2b-256 checksum
How to use checksums
72d68a673ca25f46cf34556c241746ea097be824af609d08ea58e9c789e73a9a
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

0.0.12 This release

1 release file

0.0.11

1 release file

0.0.10

1 release file

0.0.9

1 release file

0.0.8

1 release file

0.0.7

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page