Betfair
Founded in 2000, Betfair operates the world’s largest online betting exchange, with its headquarters in London and satellite offices across the globe.
NautilusTrader provides an adapter for integrating with the Betfair REST API and Exchange Streaming API.
Installation
To install the latest nautilus_trader
package along with the betfair
dependencies using pip:
pip install -U "nautilus_trader[betfair]"
To install from source using poetry:
poetry install --extras betfair
Examples
You can find working live example scripts here.
Betfair documentation
Betfair provides extensive documentation for developers integrating with their exchange APIs. This resource is valuable for gaining background information, understanding the APIs, and troubleshooting integration issues.
Application Keys
Betfair uses Application Keys (App keys) to manage interactions with its APIs. Initially, you will be given a "Delayed" App key (data delayed 1-180 seconds), later you can apply for a "Live" App key.
After setting up a funded Betfair account, you will need to obtain your App key. You can do this through the Accounts API Demo Tool. Follow these steps:
- Log in to your Betfair account. With your browser's developer tools open, inspect the initial POST request to https://identitysso.betfair.com.au/api/login, and find the
ssoid
in the response headers (set in the cookie). - Open the Betfair API tool and enter your
ssoid
into the Session Token (ssoid) field. - In the left-hand navigation, select
getDeveloperAppKeys
, then click the Execute button at the bottom to retrieve your App key.
See also the Betfair Getting Started - Application Keys guide.
API credentials
There are two options for supplying your credentials to the Betfair clients. Either pass the corresponding values to the config dictionaries, or set the following environment variables:
BETFAIR_USERNAME
BETFAIR_PASSWORD
BETFAIR_APP_KEY
BETFAIR_CERT_DIR
When starting the trading node, you'll receive immediate confirmation of whether your credentials are valid and have trading permissions.
Best practice is to manage your credentials using environment variables.
Overview
The following adapter classes are available:
BetfairInstrumentProvider
which enables querying the Betfair market catalogue for betting markets, which are then converted into Nautilus "instruments".BetfairDataClient
which connects to the Exchange Stream API and streams market data.BetfairExecutionClient
which enables the retrieval of account information and execution and updates for orders (or bets).
Configuration
The most common use case is to configure a live TradingNode
to include Betfair
data and execution clients. To achieve this, add a BETFAIR
section to your client
configuration(s):
from nautilus_trader.config import TradingNodeConfig
config = TradingNodeConfig(
..., # Omitted
data_clients={
"BETFAIR": {
# username=None, # 'BETFAIR_USERNAME' env var
# password=None, # 'BETFAIR_PASSWORD' env var
# app_key=None, # 'BETFAIR_APP_KEY' env var
# cert_dir=None, # 'BETFAIR_CERT_DIR' env var
},
},
exec_clients={
"BETFAIR": {
# username=None, # 'BETFAIR_USERNAME' env var
# password=None, # 'BETFAIR_PASSWORD' env var
# app_key=None, # 'BETFAIR_APP_KEY' env var
# cert_dir=None, # 'BETFAIR_CERT_DIR' env var
"base_currency": "AUD",
},
}
)
Then, create a TradingNode
and add the client factories:
from nautilus_trader.adapters.betfair.factories import BetfairLiveDataClientFactory
from nautilus_trader.adapters.betfair.factories import BetfairLiveExecClientFactory
from nautilus_trader.live.node import TradingNode
# Instantiate the live trading node with a configuration
node = TradingNode(config=config)
# Register the client factories with the node
node.add_data_client_factory("BETFAIR", BetfairLiveDataClientFactory)
node.add_exec_client_factory("BETFAIR", BetfairLiveExecClientFactory)
# Finally build the node
node.build()