Betting trading framework
Project description
flūmine
Betting trading framework with a focus on:
- simplicity
- modular
- pythonic
- rock-solid
- safe
Support for market, order and custom streaming data.
Tested on Python 3.8, 3.9, 3.10, 3.11 and 3.12.
installation
$ pip install flumine
flumine requires Python 3.8+
setup
Get started...
import betfairlightweight
from flumine import Flumine, clients
trading = betfairlightweight.APIClient("username")
client = clients.BetfairClient(trading)
framework = Flumine(
client=client,
)
Example strategy:
from flumine import BaseStrategy
from flumine.order.trade import Trade
from flumine.order.order import LimitOrder, OrderStatus
from flumine.markets.market import Market
from betfairlightweight.filters import streaming_market_filter
from betfairlightweight.resources import MarketBook
class ExampleStrategy(BaseStrategy):
def start(self) -> None:
print("starting strategy 'ExampleStrategy'")
def check_market_book(self, market: Market, market_book: MarketBook) -> bool:
# process_market_book only executed if this returns True
if market_book.status != "CLOSED":
return True
def process_market_book(self, market: Market, market_book: MarketBook) -> None:
# process marketBook object
for runner in market_book.runners:
if runner.status == "ACTIVE" and runner.last_price_traded < 1.5:
trade = Trade(
market_id=market_book.market_id,
selection_id=runner.selection_id,
handicap=runner.handicap,
strategy=self
)
order = trade.create_order(
side="LAY",
order_type=LimitOrder(price=1.01, size=2.00)
)
market.place_order(order)
def process_orders(self, market: Market, orders: list) -> None:
for order in orders:
if order.status == OrderStatus.EXECUTABLE:
if order.size_remaining == 2.00:
market.cancel_order(order, 0.02) # reduce size to 1.98
if order.order_type.persistence_type == "LAPSE":
market.update_order(order, "PERSIST")
if order.size_remaining > 0:
market.replace_order(order, 1.02) # move
strategy = ExampleStrategy(
market_filter=streaming_market_filter(
event_type_ids=["7"],
country_codes=["GB"],
market_types=["WIN"],
)
)
framework.add_strategy(strategy)
Run framework:
framework.run()
Features
- Streaming
- Multiple strategies
- Multiple clients
- Order execution
- Paper trading
- Simulation
- Event simulation (multi market)
- Middleware and background workers to enable Scores / RaceCard / InPlayService
Dependencies
flumine relies on these libraries:
betfairlightweight- Betfair API supporttenacity- Used for connection retrying (streaming)python-json-logger- JSON loggingrequests- HTTP supportsmart-open- Efficient streaming of very large files from/to storages such as S3, including (de)compression
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
flumine-2.6.0.tar.gz
(3.3 MB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
flumine-2.6.0-py3-none-any.whl
(79.1 kB
view details)
File details
Details for the file flumine-2.6.0.tar.gz.
File metadata
- Download URL: flumine-2.6.0.tar.gz
- Upload date:
- Size: 3.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.8.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de901f5227a2593f2242cf81a7d01afc43513f8d46a23f5e21ab345b17b79e32
|
|
| MD5 |
c2963ee12cd96c37a17593e82344fc9a
|
|
| BLAKE2b-256 |
bd3661375d1a587a04df62dddc7ebc8db519e7684ea655468d92a23dcdf9dcf7
|
File details
Details for the file flumine-2.6.0-py3-none-any.whl.
File metadata
- Download URL: flumine-2.6.0-py3-none-any.whl
- Upload date:
- Size: 79.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.8.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e98ef13cf3bc4090632683f16a2f87d2d26bd0a01b5942f8a99532cab3acdddc
|
|
| MD5 |
ee397ed1fd9f0bd0a398b834e4220296
|
|
| BLAKE2b-256 |
7a156333acc47b26af0ebe4a1da264f1fe70ced0cc2b9d304b990f5f99d76df0
|