Skip to main content

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 /authentication endpoint.
  • Polling respects the Retry-After response header returned by the Brain API.
  • Never commit your credentials to version control. Use ~/.brain_credentials or environment variables instead.

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

autobrain_sim-1.0.0.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

autobrain_sim-1.0.0-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

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

Hashes for autobrain_sim-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f2efea479402b2f6448f3586cb402bbf39da6b246452b23cc89a182ff7968936
MD5 0973a3af06844d5f7652c1bbd5051812
BLAKE2b-256 24e618ef9ed27cc462249b68efea79e4ef6771f62ab8cbc996e86376c8fe96e6

See more details on using hashes here.

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

Hashes for autobrain_sim-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7dd7e34547189c38110ca7c5ef06c716681873d51819a354adb0d0e12bf1d766
MD5 a2d400b06c0d84113aa2d4842023c6da
BLAKE2b-256 e449775bb90a719a12a46f7c1649d4450d761855f9bdb34ad4f5d038a7851979

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page