Skip to content

jadenfix/trading

Repository files navigation

Agentic Trading Monorepo

Monorepo for four trading/automation tracks:

  • agent-style workflows (clawdbot-workflows)
  • deterministic Rust bots (non-agent-workflows)
  • LLM workflow (llm-workflows)
  • unified observability + sports agent stack (observability-platform)

Workspace Map

Workspace Purpose Start Here
clawdbot-workflows Imported OpenClaw-based agent framework and gateway stack clawdbot-workflows/README.md
non-agent-workflows Kalshi-focused Rust bots (weather + arbitrage) non-agent-workflows/README.md
llm-workflows LLM trading experiments and prototypes llm-workflows/README.md
observability-platform Unified traces, Google-style control API, dashboard, sports worker observability-platform/README.md

OpenClaw Rust Trading Bridge

This repo now includes a low-latency Rust bridge for OpenClaw trade control over a Unix domain socket:

  • crates/trading_daemon: Rust daemon exposing the UDS control endpoint (/var/run/openclaw/trading.sock)
  • crates/trading_protocol: shared framing + envelope protocol
  • crates/tradingctl: CLI client for ping/start/stop/status checks
  • .openclaw/extensions/trading-bridge: OpenClaw tool bridge exposing the unified trading_hft multi-asset tool surface

Bridge runtime behavior:

  • live routing: Coinbase Advanced Trade spot (coinbase_at)
  • paper routing: perps/options/unsupported instruments via deterministic paper adapter
  • default engine mode: auto_live (requires Coinbase credentials)
  • durable file state/journal root: ${TRADING_DATA_DIR:-/var/lib/openclaw/trading}

Run it with:

docker compose -f clawdbot-workflows/docker-compose.yml --project-directory . up -d --build

Detailed bridge architecture and usage:

Architecture (High Level)

weather/arbitrage/llm-rules/sports-agent
                |
                v
      TRADES/* JSONL + broker state
                |
                v
         trace-api (:8791)
   /v1/projects/*/locations/*/...
                |
                v
   dashboard (executions first + actions)

temporal-broker (:8787) stores workflow state machine + operations.
Temporal UI runs in parallel for workflow inspection.

Detailed architecture:

Quick Start

1) Install dependencies

pnpm install

2) Configure credentials

Required for Kalshi-connected workflows:

export KALSHI_API_KEY="your-key-id"
export KALSHI_SECRET_KEY="your-private-key"

Optional/feature-specific:

export GOOGLE_WEATHER_API_KEY="your-google-key"
export WEATHER_BOT_CONTACT_EMAIL="you@yourdomain.com"
export OPENAI_API_KEY="your-openai-key"
export ANTHROPIC_API_KEY="your-anthropic-key"
export SPORTS_DATA_IO_API_KEY="your-sportsdataio-key"
export THE_ODDS_API_KEY="your-theodds-key"
export COINBASE_API_KEY="your-coinbase-key"
export COINBASE_API_SECRET="your-coinbase-secret"
export COINBASE_API_PASSPHRASE="optional-passphrase"
export TRADING_ENGINE_MODE="auto_live"   # paper | hitl_live | auto_live
export TRADING_DATA_DIR="/var/lib/openclaw/trading"

Control token (recommended):

export OBS_CONTROL_TOKEN="replace-me"

If unset, local default is local-dev-token.

3) Start observability stack

bash ./trading-cli observability up
bash ./trading-cli observability status
bash ./trading-cli observability ui

That starts:

  • Temporal (local dev server)
  • temporal-broker (:8787)
  • trace-api + dashboard (:8791)

4) Run workflows

bash ./trading-cli weather go dry-run
bash ./trading-cli arbitrage go dry-run
bash ./trading-cli llm-workflow go

Run sports agent:

# Human-in-the-loop mode
bash ./trading-cli sports-agent up --mode hitl

# Execute pending recommendation
bash ./trading-cli sports-agent execute <workflow_id>

# Cancel
bash ./trading-cli sports-agent cancel <workflow_id>

# Hard cancel
bash ./trading-cli sports-agent cancel <workflow_id> --hard

# Stop sports-agent managed process via control API
bash ./trading-cli sports-agent stop-service

# Ultra strict auto mode
bash ./trading-cli sports-agent up --mode auto_ultra_strict

5) View traces

  • Dashboard: http://127.0.0.1:8791
  • Workflows API: http://127.0.0.1:8791/v1/projects/local/locations/us-central1/workflows
  • Temporal UI: http://127.0.0.1:8233

6) Stop services

bash ./trading-cli down

trading-cli Command Reference

bash ./trading-cli weather [go|up|down|status|logs] [prod|dry-run|check-auth]
bash ./trading-cli arbitrage [go|up|down|status|logs] [prod|dry-run|check-auth]
bash ./trading-cli llm-workflow [go|up|down|status|logs]
bash ./trading-cli temporal [up|down|status|logs|ui|list|describe|show]
bash ./trading-cli observability [up|down|status|logs|ui] [trace-api|temporal-broker|temporal]
bash ./trading-cli sports-agent [go|up|down|status|logs|approve|execute|cancel|hard-cancel|stop-service] [--mode <hitl|auto_ultra_strict>] [--dry-run] [trace_id]
bash ./trading-cli clawdbot-trading [up|down|ps|logs|ping|status|capabilities|doctor|start|stop]
bash ./trading-cli dev
bash ./trading-cli status
bash ./trading-cli down

Temporal Debugger

bash ./trading-cli temporal up
bash ./trading-cli temporal status
bash ./trading-cli temporal ui
bash ./trading-cli temporal list
bash ./trading-cli temporal describe <workflow_id>
bash ./trading-cli temporal show <workflow_id>
bash ./trading-cli temporal logs
bash ./trading-cli temporal down

Optional environment overrides:

export TEMPORAL_ADDRESS="127.0.0.1:7233"
export TEMPORAL_SERVER_IP="127.0.0.1"
export TEMPORAL_UI_IP="127.0.0.1"
export TEMPORAL_UI_PORT="8233"

Testing

Run all suites from repo root:

bash ./trading-cli test
bash ./trading-cli test inclusive

Run single suites:

bash ./trading-cli test common
bash ./trading-cli test kalshi-client
bash ./trading-cli test weather
bash ./trading-cli test arbitrage
bash ./trading-cli test llm-workflow
bash ./trading-cli test sports-agent
bash ./trading-cli test observability

Bot Summaries

Weather Bot

Path: non-agent-workflows/weather-bot

  • discovers weather markets
  • blends NOAA and Google forecasts
  • applies quality + risk gates before order intents
  • writes runtime JSONL events to TRADES/weather-bot

Arbitrage Bot

Path: non-agent-workflows/arbitrage-bot

  • discovers mutually exclusive contract sets
  • scans Buy-Set and Sell-Set opportunities
  • executes grouped orders with strict risk checks
  • writes runtime JSONL events to TRADES/arbitrage-bot

Sports Agent Worker

Path: observability-platform/sports-agent-worker

  • researches sports opportunities continuously while running
  • uses deterministic Bayesian + EV + CLV proxy gates (no ML)
  • supports hitl and auto_ultra_strict execution modes
  • writes runtime JSONL events to TRADES/sports-agent

Logs and Journals

Default trade logs:

  • TRADES/arbitrage-bot
  • TRADES/weather-bot
  • TRADES/llm-rules-bot
  • TRADES/sports-agent

Use TRADES_DIR=/custom/path to change the root folder.

Developer Information

Pull Request Requirements:

  1. Greptile Comments: All comments from Greptile must be addressed and resolved before requesting a review.
  2. Linting & Formatting: Ensure your code is formatted (cargo fmt) and linted (cargo clippy) without warnings.
  3. Tests: Verify all tests pass by running bash ./trading-cli test.
  4. Commit Hygiene: Use clear commit messages and squash intermediate work-in-progress commits.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors