Python client for the WorldQuant Brain API
Project description
AutoBrain Sim
A lightweight Python client library for interacting with the WorldQuant Brain platform API. Supports authentication, alpha simulation submission, and result retrieval.
Features
- Multiple authentication methods (direct, credentials file, interactive prompt)
- Submit alpha expressions for simulation
- Poll for simulation completion automatically
- Retrieve alpha details and PnL record sets
Install
pip install autobrain-sim
Requirements
- Python 3.7+
requests
Install the dependency:
pip install requests
Files
| File | Description |
|---|---|
brain_client.py |
Core client library (BrainClient, SimulationResult) |
example.py |
Standalone usage example |
main.ipynb |
Jupyter notebook walkthrough |
Quick Start
Authentication
Method 1 — Direct credentials
from brain_client import BrainClient
client = BrainClient(email="your@email.com", password="yourpassword")
client.authenticate()
Method 2 — One-liner login
client = BrainClient.login("your@email.com", "yourpassword")
Method 3 — Interactive prompt (asks at runtime if no credentials are found)
client = BrainClient()
client.authenticate()
Method 4 — Credentials file
Create ~/.brain_credentials (or any path) as a JSON array:
["your@email.com", "yourpassword"]
Then load it:
client = BrainClient(credentials_file="~/.brain_credentials")
client.authenticate()
Credentials priority: direct args →
credentials_file→~/.brain_credentials→ interactive prompt.
Simulate an Alpha
sim = client.simulate(
expression="close / ts_mean(close, 20) - 1",
settings={
"region": "USA",
"universe": "TOP3000",
"neutralization": "SUBINDUSTRY",
}
)
result = sim.wait(verbose=True) # blocks until done
print("Alpha ID:", sim.alpha_id)
Retrieve Results
alpha = sim.get_alpha()
print("Sharpe:", alpha["is"]["sharpe"])
print("Fitness:", alpha["is"]["fitness"])
pnl = sim.get_pnl()
print(pnl)
API Reference
BrainClient
| Method | Description |
|---|---|
__init__(email, password, credentials_file) |
Initialize client with credentials |
BrainClient.login(email, password) |
Create client and authenticate in one step |
authenticate() |
Sign in and obtain a session token |
simulate(expression, settings, ...) |
Submit an alpha for simulation; returns SimulationResult |
get_alpha(alpha_id) |
Fetch alpha details by ID |
get_pnl(alpha_id) |
Fetch PnL record set for an alpha |
get_recordset(alpha_id, record_set_name) |
Fetch any named record set |
Default Simulation Settings
{
"instrumentType": "EQUITY",
"region": "USA",
"universe": "TOP3000",
"delay": 1,
"decay": 15,
"neutralization": "SUBINDUSTRY",
"truncation": 0.08,
"maxTrade": "ON",
"pasteurization": "ON",
"testPeriod": "P1Y6M",
"unitHandling": "VERIFY",
"nanHandling": "OFF",
"language": "FASTEXPR",
}
Any key passed via settings overrides the default.
SimulationResult
Returned by client.simulate().
| Method | Description |
|---|---|
wait(verbose=True) |
Poll until simulation completes; returns result JSON |
get_alpha() |
Fetch full alpha details (call after wait()) |
get_pnl(poll_interval) |
Fetch PnL record set (call after wait()) |
| Attribute | Description |
|---|---|
alpha_id |
Alpha ID string (available after wait()) |
progress_url |
URL used to poll simulation progress |
Example
from brain_client import BrainClient
client = BrainClient.login() # interactive prompt
sim = client.simulate("close / ts_mean(close, 20) - 1")
result = sim.wait(verbose=True)
alpha = sim.get_alpha()
print(f"Alpha ID : {sim.alpha_id}")
print(f"Sharpe : {alpha['is']['sharpe']}")
print(f"Fitness : {alpha['is']['fitness']}")
Notes
- The client uses HTTP Basic Auth to obtain a session token from the
/authenticationendpoint. - Polling respects the
Retry-Afterresponse header returned by the Brain API. - Never commit your credentials to version control. Use
~/.brain_credentialsor environment variables instead.
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
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
File details
Details for the file autobrain_sim-1.0.0.tar.gz.
File metadata
- Download URL: autobrain_sim-1.0.0.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2efea479402b2f6448f3586cb402bbf39da6b246452b23cc89a182ff7968936
|
|
| MD5 |
0973a3af06844d5f7652c1bbd5051812
|
|
| BLAKE2b-256 |
24e618ef9ed27cc462249b68efea79e4ef6771f62ab8cbc996e86376c8fe96e6
|
File details
Details for the file autobrain_sim-1.0.0-py3-none-any.whl.
File metadata
- Download URL: autobrain_sim-1.0.0-py3-none-any.whl
- Upload date:
- Size: 6.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7dd7e34547189c38110ca7c5ef06c716681873d51819a354adb0d0e12bf1d766
|
|
| MD5 |
a2d400b06c0d84113aa2d4842023c6da
|
|
| BLAKE2b-256 |
e449775bb90a719a12a46f7c1649d4450d761855f9bdb34ad4f5d038a7851979
|