Skip to main content

Create a custom gym environment to simulate simple betting strategy.

Project description

fastbet

from IPython.display import HTML

import pandas as pd

from fastbet.config.mongo import mongo_init
from fastbet.datastructure.data_extractor import data_aggregator
from fastbet.environment import BettingEnv

Install

pip install fastbet

Config

In order to connect to the mongo database we require some connection parameters defined in toml format and should be read when the library is loaded. The package will look first under /secrets/config.toml or in the environment variable BETTING_ENV_CONFIG. An example of config file is provided with the package and will be used by default. It is the user’s responsibility to make sure this file is saved at the right location if you want to use your own.

Let’s start by registering the connection to the mongo database:

mongo_init(db_host="public_atlas")

Simplified betting environment

The punter starts with $N (N>0) in his Bank account and can use them to place bets on several football games.

He is offered the option to bet on the 3 main markets: 1X2 (home/draw/away), Asian handicap and Total(Over/Under) (we focus on the even line) and is only allowed to place a small, medium, or big stake on one and only one of the 7 possible selections home team win, away team win, or draw (1X2 case) or home or away (Asian handicap and Total) or skip the betting opportunity. At each step, the punter is presented with some information about a game and the associated betting opportunities. If he decides to bet, he receives a reward that could be positive (profit) or negative (loss of his stake). His balance is then updated accordingly and he moves to the next step i.e next game. An episode ends when the punter goes bankrupt (Balance <= 0) or if no more betting opportunities are available.

Load games

fixtures = data_aggregator(limit=10)

Init environment

env = BettingEnv(fixtures)
max_steps_limit = fixtures.shape[0]

Playing random choices

# Init RL env.
env.reset()

# Init done Flag to False.
done = False
# Init loop counter.
i = 0
# Stops when it is done or when we have bet on all provided games.
while not done and i < max_steps_limit:
    # Make a step.
    obs, reward, done, info = env.step(env.action_space.sample())
    # Increment counter.
    i = i + 1

Playing Medium Stake on Home Team Win (1X2)

# Init RL env.
env.reset()
# Init done Flag to False.
done = False
# Init loop counter.
i = 0
# Stops when it is done or when we have bet on all provided games.
while not done and i < max_steps_limit:
    # Make a step.
    obs, reward, done, info = env.step(2)
    # Increment counter.
    i = i + 1

Project details


Download files

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

Source Distribution

fastbet-0.2.3.tar.gz (23.1 kB view hashes)

Uploaded Source

Built Distribution

fastbet-0.2.3-py3-none-any.whl (24.5 kB view hashes)

Uploaded Python 3

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