Zentos

Autonomous Execution Agent

Autonomous strategy research agent adapted from Microsoft's RD-Agent(Q).

Overview

The automatic agent is the challenger. Adapted from Microsoft's RD-Agent(Q), it runs 24/7 autonomously — generating hypotheses, implementing factors, backtesting, and iterating — attempting to beat the human baseline.

Both systems log to the same trading-tracker for direct comparison.

Server Details

PropertyValue
IP Address64.23.179.43
OSUbuntu 24.04 LTS
Dashboardhttp://64.23.179.43:8080
SSH Port22
AuthSSH key only

Access

ssh your-username@64.23.179.43

Request access the same way as the collab server.

Pipeline

Five-stage closed loop running continuously:

Specification → Synthesis → Implementation → Validation → Analysis
      ↑                                                      │
      └──────────────────────────────────────────────────────┘
  1. Specification — Research goal and constraints (e.g., "Sharpe > 1.5, max DD < 15%, US mid-cap").
  2. Synthesis — LLM generates hypotheses from domain priors and prior results.
  3. Implementation — Co-STEER code agent translates hypothesis to executable Qlib factor/model.
  4. Validation — Walk-forward backtest via Qlib + Papermill. Metrics: IC, Sharpe, drawdown, turnover.
  5. Analysis — Multi-armed bandit decides next focus (factor vs model). Results persisted.

Adaptations from Original RD-Agent(Q)

AspectOriginalOurs
MarketChinese A-sharesUS equities (Alpaca)
FactorsAlpha101Custom from team research
EvaluationInternal onlySame Alpaca + trading-tracker as human baseline
Human gateOptionalRequired for live promotion

Directory Structure

/opt/rd-agent/
├── config/          # spec.yaml, scheduler.yaml, model_config.yaml
├── workspace/
│   ├── factors/     # Generated factor code
│   ├── models/      # Generated model code
│   └── results/     # Per-iteration backtest results
├── knowledge/       # hypotheses.json, code_patterns.json, factor_registry.json
├── data/            # market/ and qlib_data/
└── logs/iterations/ # Per-iteration logs

Operations

# Status
systemctl status rd-agent

# Live logs
journalctl -u rd-agent -f

# Current iteration
cat /opt/rd-agent/workspace/results/latest/iteration.json | jq '.iteration'

# View specific iteration
cat /opt/rd-agent/workspace/results/iter_042/hypothesis.json | jq '.'

# Pause / resume
sudo systemctl stop rd-agent
sudo systemctl start rd-agent

# Update research goal
nano /opt/rd-agent/config/spec.yaml
sudo systemctl restart rd-agent

Compare Against Human Baseline

psql -d trading_tracker -c "
  SELECT source,
         COUNT(*) as trades,
         ROUND(SUM(pnl)::numeric, 2) as total_pnl,
         ROUND(AVG(pnl)::numeric, 4) as avg_pnl
  FROM trades
  WHERE timestamp > NOW() - INTERVAL '30 days'
  GROUP BY source
  ORDER BY total_pnl DESC;
"

Performance Reference (Original RD-Agent(Q))

  • ~2× annualized returns vs Alpha101 factor library.
  • 70% fewer factors needed.
  • < $10 LLM API cost per full research cycle.

Our results will differ based on market and configuration.

Troubleshooting

Stuck on implementationtail -100 /opt/rd-agent/logs/iterations/latest/implementation.log then sudo systemctl restart rd-agent.

Backtest failurespython -c "import qlib; qlib.init(); print('OK')" and check /opt/rd-agent/data/qlib_data/.

High memoryfree -h. Reduce backtest range in spec.yaml or add swap.

On this page