Fingym is a toolkit for developing reinforcement learning algorithms tailored specifically for stock market trading. This is the fingym
open-source library, which gives you access to a standardized set of environments.
fingym
makes no assumptions about the structure of your agent, and is compatible with any numerical computation library, such as TensorFlow or Theano. You can use it from Python code.
If you're not sure where to start, we recommend beginning with the docs on our site.
Contents of this document
There are two basic concepts in reinforcement learning: the environment (namely, the outside world) and the agent (namely, the algorithm you are writing). The agent sends actions to the environment, and the environment replies with observations and rewards (that is, a score).
The core fingym interface is Env, which is
the unified environment interface. There is no interface for agents;
that part is left to you. The following are the Env
methods you
should know:
- reset(self): Reset the environment's state. Returns observation.
- step(self, action): Step the environment by one timestep. Returns observation, reward, done, info.
We currently support Python 3.5 -- 3.7.
You can perform a minimal install of fingym
with:
git clone git clone https://github.com/entrpn/fingym
cd fingym
pipenv shell
pipenv install -e .
If you prefer, you can do a minimal install of the packaged version directly from PyPI:
pip install fingym
See the fingym site.
See the fingym site.
See the fingym site.
See the examples
directory.
- Run examples/agents/buy_and_hold_agent.py to run a simple buy and hold agent.
- Run examples/agents/random_agent.py to run a simple random agent.
- Run examples/agents/dqn_agent.py to run a dqn agent.
- Run examples/agents/evolutionary_agent.py to run a generic algorithm.
- Run examples/agents/evolutionary_agent_w_crossover.py to run a generic algorithm using crossover.
If you cloned this repo, add fingym to python path:
>> export PYTHONPATH=$PYTHONPATH:/path/to/fingym/fingym
We are using pytest for tests. You can run them via:
pytest
- 2020-02-05: First release. 3 year spy intraday minute steps. 10 year daily steps.
- 2020-02-26: More environments from different symbols.
- 2020-04-14: Renamed package from gym to fingym
- 2020-05-01: Added random walk environments and alphavantage environment.
- 2020-05-07: Added IEX environment with caching to reduce consumption of message quotes.