Giter Club home page Giter Club logo

akademy's Introduction

Akademy

Akademy is a module containing composable object classes for developing reinforcement learning algorithms focused on quantitative trading and time-series forecasting. This module is a work-in-progress and should, at no time, be assumed to be designed well or be free of bugs.

Overview

Akademy is designed using an Agent-Environment model such that Agent-class objects ingest information from Environment-class objects (Env), produce an Action, which is then applied to the Environment which results in a change in State and possible reward to offer feedback to the agent.

Note: this module does not provide any training routines -- only the object class that can be used to support the implementation of custom training routines.

Getting Started

To install akademy use the following command in the desired Python 3.7+ environment:

pip install akademy

Once installed, developers will have access to Agent, TradeEnv, and Network class objects in which to design Reinforcement Learning algorithms to train models.

Sample training routine:

from akademy.models.envs import TradeEnv
from akademy.models.agents import DQNAgent
from akademy.common.utils import load_spy_daily

# loads the dataset used during training
data = load_spy_daily(count=2500)

# load the Trading Environment
env = TradeEnv(
    data=data,
    window=50,
    asset="spy",
)

# load the agent to train
agent = DQNAgent(
    action_count=env.action_space.n,
    state_shape=env.observation_space.shape
)

# load user-defined training routine
training_routine(
    agent=agent,
    env=env
)

Tests

Unit testing can be run via the following command:

python -m unittest

For detailed information the --verbose flag can be used. For more detailed usage consult the unittest module documentation.

Available Data

This module comes with minimal data for Agents and Environments to train on. The current data available is listed below, along with sources for the most up-to-date versions as well:

1. S&P500

Location: /data/SPY.CSV
Start: 1993-01-29
End: 2023-01-23
Total Rows: 7,454 (excludes header)
Header: Date,Open,High,Low,Close,Adj Close,Volume
Source: https://finance.yahoo.com/quote/SPY/history?p=SPY

note: Any data can be used easily enough via conversion into a Pandas DataFrame object, but must contain information for date and pricing data for open, high, low, and close as well as volume such that each row has at least those 6 features or the latter 5 and an index representative of date.

Notes

Gym vs. Gymnasium

The Gym project by OpenAI has been sunset and now maintained as Gymnasium by the Farama-Foundation. The Env classes present here make use of the newer Gymnasium package which, among other differences, produces an extra item in the step method indicating whether an environment has been truncated. See here

PyTorch

PyTorch requires some additional consideration for setup depending on use-case. Akademy uses an approach whereby CPU-based training and inferences are possible via parameterized function calls. However, GPU use (e.g. CUDA) requires local considerations. [See here] (https://pytorch.org/get-started/locally/) for a more in-depth discussion and guide.

This module currently uses the 1.* version, though a 2.* version release is imminent and an upgrade to that version is planned.

akademy's People

Contributors

alphazwest avatar

Stargazers

Suminda Sirinath Salpitikorala Dharmasena avatar Melanney Orta avatar Nicholas O'Kelley avatar  avatar

Watchers

Kostas Georgiou avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.