* feat: rdkit for chemcotbench * update qwen2.5&llama3.1 context * fix: force failure on validation error and remove try/except in validator * feat: unified error sample extraction (with test scripts) * feat: set conda cache with .env * feat: skip data eval if data pass in last evo * fix: rm redundant param * fix ui bug * refactor: centralize assign_code_list_to_evo in MultiProcessEvolvingStrategy * feat: add test_params.yaml generation and workspace cleanup improvements for finetune * refactor: replace get_clear_ws_cmd with clear_workspace and update prompts for hard check criteria * add bioprobench dataset * fix: handle commas in training config extraction and refactor prompt includes * bioprobench description * add bioprobench readme * feat: merge lora adapter for blackwell gpu * feat: support for multi benchmarks in one job * change dfficult aware content for training * update difficulty-aware and logging principles * fix: resolve variable name conflict in FTRunnerEvaluator * set job id accuracy to minute * feat(ui): display one selected metric per benchmark * feat: store sota exp, and fix ws_ckp bug * fix: truncate data.json in feedback * fix: opencompass data for conda env * fix: save only the last model * feat: set log path and ws path * fix: set overwrite_cache to avoid lock contention(through injecting params) * feat: redirect stdout to file in localenv * add pickle cache to dataset desc * fix CI * fix: remove redundant wrapper * feat: set python_unbuffered * move redirect stdout to env run * fix a small bug * move model folder * feat(ui): display benchmark baseline * fix: enrich scenario and benchmark description * fix: rewrite runner eval to accept easier * feat: compare with baseline when no SOTA * update tablebench readme * fix: switch back to single benchmark (for baseline) * feat(ui): add ws path in ui * refactor: update SOTA tracking to use DAG traversal and parent selection * fix: prioritize local_selection in trace and refactor sibling retrieval logic * refactor: unify error handling in feedback generation and update workspace injection * feat: add skip_loop_error_stepname to control error skip step in LoopBase * fix: set local_selection to NEW_ROOT for experiments without parent * feat: set different ports for jobs * feat: set different ports for jobs * feat: add upper data size limit for LLM fine-tuning and update related prompts * fix: replace get_truncated_stdout() with stdout for consistent output handling * refactor: remove data.json from cache and workspace logic, focus on script-based reuse * fix: rm target_scenario * feat: add selective cache extraction and custom cache key for data processing * fix(ui): bug when displaying tablebench * fix: filter config in dataset_info.json * feat: add test set, set valid set * feat(ui): update test score, and set color for final decision * feat: add test score for baseline and update ui * fix: use [-100:] as test range * feat: update data_stats in runner * feat: wait for opencompass init when run multi jobs * fix: adjust test&valid split * feat: force to generate COT(with <think> token), and add answer format in scenarios.json * feat: improve ui * fix: unify benchmark volume mounts and set extra_volumes for conda env * fix(ui): number color * fix: update GPU memory handling to use total memory in GB and streamline code * fix: set use_cot_postprocessor * feat: add env_dict to config classes and merge env vars in Env run * fix: let coder obey proposal * fix(ui): direction bug and update chemcot core metirc * fix: set consistent benchmark mount points and env vars for docker and conda * fix: addintional target for LoRA * feat: workspace dir log for benchmark running * fix: tableInstruct path bug and update benchmark description * feat: timeout for whole job * fix: align FinanceIQ import to opencompass * feat: use llm_judge for FinanceIQ * feat: switch to turn on <think> or not * feat: using scripts to redirect stdout, and run in different windows * feat: sync litellm log * fix: gpu memory format * fix: escape special characters in benchmark desc * fix: set data processing timeout to 1h * feat: set valid_loss and save_best_model * fix: inject timeout and stage * fix: loss history extract logic * feat: inject output dir * feat: inject eval batch size * feat: inject save_total_limit * feat: update data prompt * fix: escape shell special characters * fix: tablebench visualization UI * fix: move implementation validation to coder, and ignore injected params * docs: add README for RL-PostTraining evaluation system * Add AutoRL-Bench evaluation framework for RL post-training * Add architecture documentation * docs: update architecture and interface documentation for AutoRL-Bench * improve doc * fix * refactor: YAML配置驱动 * feat: add RL Docker env, workspace test, and update project structure * feat: 重命名 autorl_bench, 新增 RLWorkspace, 配置 Docker extra_volumes * Add eval-only AutoRL-Bench pipeline * sturcture clean * docs: add autorl_bench README * feat(rl): Implement RL post-training agent scaffold and example * refactor: simplify RL scenario classes and update RL CoSTEER integration * feat(rl): 调通 scaffold,mock 数据跑完 5 步循环 * feat(rl): 接入 LLM 生成代码,支持 model_path 传递 * feat(rl): Docker 执行框架,RLWorkspace.run() + RLPostTrainingRunner * feat(rl): LLM 生成假设/反馈,完整 loop 跑通 * feat: add RL post-training entry point with configurable options * refactor: simplify RL proposal and trace classes, update config and docs * Update rl eval autorl_bench layout * Update RL workflow and evaluation setup * Integrate AutoRL-Bench evaluation in RL workflow * feat(rl): 添加 --base-model/--benchmark CLI 参数,简化 RLTask * feat(rl): Docker 环境动态选择 + example_agent 完整训练评测流程(无llm) * fix(rl): 修复 feedback 传递 + 添加 verl 依赖 * refactor: remove unused validate in BenchmarkAdapter and add core utils module * feat(rl): UI * Refactor autorl_bench layout and docker entrypoint * autorl_bench: add aider autoloop tool * feat(rl): environment docker * refactor: simplify aider autoloop tooling * chore: update misc files * feat(rl): yaml-driven dataset download & auto-download on startup * feat(rl): yaml-driven dataset download & auto-download on startup * Refactor RL eval runner and clean up * Simplify RL eval runner and env * rl: include litellm in RL docker image * feat(rl): unified resource path & model repo_id structure * feat(rl): refactor eval with OpenCompass & add training code template * feat(rl): refactor eval with OpenCompass & add training code template * feat(rl): delete test bench * docs: add benchmark interface notes and TODOs for unified evaluation * feat(rl): unified benchmark eval interface + shared configs * feat(rl): 优雅 * feat(rl): prompt prososal+coder improve * feat(rl): fix eval * fix(rl): docker * fix(rl): eval * v 1.0 tmep * benchmark v1.0 * benchmark v1.1 * benchmark v1.1: grading日志+代码去重 * benchmark v1.1: grading日志+代码去重 * benchmark v1.1: grading日志+代码去重+task description * benchmark v1.2: fix * benchmark v1.3: fix,example-agent ok,rdagent test,openhands develop * benchmark v1.4: fix,example-agent ok,rdagent ok,openhands develop * benchmark : add alfworld * benchmark : update readme * benchmark : update readme * benchmark : * chore: add eval bypass block and mark TODO in grading server * benchmark * benchmark * benchmark * benchmark * alfworld * alfworld * benchmark * rdagent * rdagent * benchmark * benchmark:ui * benchmark:delete docker + log * 1 * alfworld * ui * alfworld * readme * alfworld * parallex * alfworld * run * eval gpu * alfworld * alfworld * fix conda init in start.sh for non-interactive shells Fallback to common miniconda paths when conda is not in PATH. Fixes B200 pod startup failure (conda: command not found). Made-with: Cursor * simplify start.sh: read TRAINING_PYTHON from .env No more conda detection logic. Just set TRAINING_PYTHON in .env. Fallback to conda only if not set. Made-with: Cursor * use OPENHANDS_PYTHON from .env to run agent start.sh now uses OPENHANDS_PYTHON for main.py execution, since the parent process may be in a different conda env. Made-with: Cursor * feat: register OpenCode agent into autorl_bench framework - Add agents/opencode/ with config.yaml, start.sh, README.md - Include opencode-rl pipeline code (pipeline/, runner_fsm/, benchmarks/) - Merge opencode-rl dependencies into autorl_bench requirements.txt - Remove separate venv requirement, share main environment Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update opencode agent, benchmarks, and eval configs - Sync opencode-rl runner_fsm with latest simplifications - Add smith benchmarks integration - Update opencompass configs and server with GPU support + error handling * Update OpenCode agent docs for external opencode-rl integration - Document external repo architecture (opencode-rl as independent plugin) - Add setup instructions for cloning and configuring opencode-rl - Add architecture diagram showing RD-Agent ↔ opencode-rl interaction - Document OPENCODE_RL_ROOT for custom paths * feat: add smith benchmark discovery and per-sample evaluator - Add smith/ module for dynamic benchmark discovery from rl-smith - Add PerSampleEvaluator for per-sample scoring via vLLM - Update utils.py to support script-based data download for smith benchmarks - Update opencode agent config * enforce RL-only in instructions.md; remove embedded opencode-rl - instructions.md: prohibit SFT, require RL (GRPO/PPO) for all benchmarks - remove agents/opencode/opencode-rl/ (runtime uses external OPENCODE_RL_ROOT) Made-with: Cursor * comment out OpenCode-only deps in requirements.txt openai, httpx, python-dotenv, tenacity are for OpenCode agent's separate environment. Keep peft and pydantic as shared deps. Made-with: Cursor * refactor: extract _kill_process_group, narrow exception catches - run.py: replace 2x nested 3-level try/except with shared _kill_process_group() using loop + specific exceptions - server.py: except Exception → except (RuntimeError, ValueError, OSError) - utils.py: except Exception → except requests.ConnectionError Made-with: Cursor * move kill_process_group to core/utils for reuse Extract from run.py into core/utils.py so other runners can also use it. Exported via core/__init__.py. Made-with: Cursor * add comments to run.py for workspace isolation and signal handling Made-with: Cursor * remove OpenCode-only deps from requirements.txt entirely Made-with: Cursor * allow SFT in instructions, RL as ultimate goal Made-with: Cursor * add workspace isolation rules to instructions.md Use relative paths, forbid cd outside workspace, ignore symlink targets. Made-with: Cursor * update opencode start.sh: use OPENCODE_PYTHON, add PATH for opencode CLI, remove unsupported args Made-with: Cursor * opencode start.sh: pass --run-dir to use AutoRL-Bench workspace Ensures OpenCode-FSM-Runner writes outputs into the workspace prepared by AutoRL-Bench instead of creating its own runs/ directory. Made-with: Cursor * opencode start.sh: prepend training env bin to PATH Ensures LLM agent bash calls (e.g. python3 -c "from trl import ...") resolve to the correct training environment, instead of relying on parent shell conda activation. Made-with: Cursor * opencode start.sh: restore --max-retries and --eval-timeout for opencode-rl Made-with: Cursor * add humaneval benchmark * Replace import * cleanup hack with explicit imports in OpenCompass config - Resolve dataset variable names via importlib before generating config, so the template uses `from xxx import datasets` instead of `import *` - Remove the fragile runtime cleanup hack that set leaked modules to None - Increase OpenCompass timeout from 3600s to 7200s - Fix score parsing to average across multiple subdatasets * refine opencompass config file generating * add humaneval benchmark dependency instructions human-eval package requires clone from open-compass/human-eval with a one-line patch to relax assertion for partial evaluation (test split only). Made-with: Cursor * fix: sanitize user-provided paths in RL UI (CodeQL) * fix: resolve user path relative to safe root (CodeQL) * fix: use Copilot-suggested path sanitization pattern (CodeQL) * fix: normalize and reject absolute user paths (CodeQL) * Fix training params, vLLM OOM cleanup, OpenCompass score parsing, and baseline cache logic * fix: add setuptools<75 to requirements for opencompass pkg_resources dependency uv venv does not include setuptools by default, causing OpenCompass baseline evaluation to fail with "No module named 'pkg_resources'". Made-with: Cursor * webshop * feat(autorl_bench): improve smith benchmark integration and evaluator robustness - Add smith benchmark docs to README: usage examples, discovery mechanism, SMITH_BENCH_DIR - Improve PerSampleEvaluator: vLLM GPU cleanup, test_range slicing - Refactor server.py: extract grading server from utils - Fix OpenCompass score parsing and baseline cache logic * fix: add smart fallback for OpenCompass dataset variable resolution When build_dataset_imports_explicit() fails to import an OpenCompass dataset module (common in grading server subprocess), it now guesses the correct variable name from the module path convention instead of falling back to empty names (which causes import * and breaks BBH due to leaked file handle objects). * revert: restore opencompass.py to pre-modification state Revert vLLM pid cleanup, dash-value checks, and metric-based score parsing added in 31caff2f and bb32e555. * keep metric-aware score parsing in opencompass; add baseline column to UI - opencompass.py: retain metric-type filtering (accuracy/score) instead of naive averaging, avoids polluting scores with pass/timeout counters - ui.py: add Baseline column to Agent Summary table Made-with: Cursor * fix: handle non-string answers in extract_answer to prevent TypeError arc_agi and other benchmarks can have non-string answer fields (e.g. lists), which caused a crash in re.search(). Adding str() coercion fixes this. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update deepsearch qa tasks * fix: benchmark evaluation reliability (B1-B4) - B1: auto-detect LoRA adapters and enable vLLM LoRA mode (read base_model from adapter_config.json) - B2: serialize evaluations with threading.Lock to prevent GPU contention - B3: cache eval results by model_path to deduplicate concurrent submissions - B4: propagate error details from OpenCompass to agent (non-numeric scores, load failures) Made-with: Cursor * fix(B1): reject LoRA adapter submissions with clear merge instructions - opencompass.py: detect adapter_config.json and return error with merge_and_unload() instructions instead of broken vLLM LoRA mode - instructions.md: add requirement to submit full merged models - opencompass_template.yaml: remove unused is_lora/lora_path params Made-with: Cursor * update chat completion * update * update deepsearch * md * codex + benchmark update * codex + benchmark update * codex + benchmark update * codex * codex * fix: grading server cache key includes mtime to detect model overwrites Previously cache used only resolved_path, so overwritten models at the same path returned stale scores. Now cache key = path@max_mtime so re-evaluation is triggered when model files change. Made-with: Cursor * feat: add gemini/claude agent scaffolds, fix codex binary path - codex/start.sh: use CODEX_BIN env var instead of bare 'codex' - Add gemini/ and claude/ agent directories with config.yaml and start.sh Made-with: Cursor * chore: remove copied human_readable_trace.py from PostTrainBench Made-with: Cursor * update evaluation * benchmark * Fix log cleanup and OpenHands env * fix: webshop env pth problem * benchmark alpacaeval * style(rl): apply auto-lint fixes * fix(rl): address CI and CodeQL issues * fix(rl): make autorl bench imports CI-safe --------- Co-authored-by: Qizheng Li <jenssenlee@163.com> Co-authored-by: Young <afe.young@gmail.com> Co-authored-by: Bowen Xian <xianbowen@outlook.com> Co-authored-by: chelsea97 <zhuowbrown@gmail.com> Co-authored-by: Xu Yang <peteryang@vip.qq.com> Co-authored-by: sakura657 <yctangcse@gmail.com> Co-authored-by: shatianming5 <tianming.sha@stonybrook.edu> Co-authored-by: Yeyuqing0913 <shatianming4@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
🖥️ Live Demo | 🎥 Demo Video ▶️YouTube | 📖 Documentation | 📄 Tech Report | 📃 Papers
📰 News
| 🗞️ News | 📝 Description |
|---|---|
| NeurIPS 2025 Acceptance | We are thrilled to announce that our paper R&D-Agent-Quant has been accepted to NeurIPS 2025 |
| Technical Report Release | Overall framework description and results on MLE-bench |
| R&D-Agent-Quant Release | Apply R&D-Agent to quant trading |
| MLE-Bench Results Released | R&D-Agent currently leads as the top-performing machine learning engineering agent on MLE-bench |
| Support LiteLLM Backend | We now fully support LiteLLM as our default backend for integration with multiple LLM providers. |
| General Data Science Agent | Data Science Agent |
| Kaggle Scenario release | We release Kaggle Agent, try the new features! |
| Official WeChat group release | We created a WeChat group, welcome to join! (🗪QR Code) |
| Official Discord release | We launch our first chatting channel in Discord (🗪 |
| First release | R&D-Agent is released on GitHub |
🏆 The Best Machine Learning Engineering Agent!
MLE-bench is a comprehensive benchmark evaluating the performance of AI agents on machine learning engineering tasks. Utilizing datasets from 75 Kaggle competitions, MLE-bench provides robust assessments of AI systems' capabilities in real-world ML engineering scenarios.
R&D-Agent currently leads as the top-performing machine learning engineering agent on MLE-bench:
| Agent | Low == Lite (%) | Medium (%) | High (%) | All (%) |
|---|---|---|---|---|
| R&D-Agent o3(R)+GPT-4.1(D) | 51.52 ± 6.9 | 19.3 ± 5.5 | 26.67 ± 0 | 30.22 ± 1.5 |
| R&D-Agent o1-preview | 48.18 ± 2.49 | 8.95 ± 2.36 | 18.67 ± 2.98 | 22.4 ± 1.1 |
| AIDE o1-preview | 34.3 ± 2.4 | 8.8 ± 1.1 | 10.0 ± 1.9 | 16.9 ± 1.1 |
Notes:
- O3(R)+GPT-4.1(D): This version is designed to both reduce average time per loop and leverage a cost-effective combination of backend LLMs by seamlessly integrating Research Agent (o3) with Development Agent (GPT-4.1).
- AIDE o1-preview: Represents the previously best public result on MLE-bench as reported in the original MLE-bench paper.
- Average and standard deviation results for R&D-Agent o1-preview is based on a independent of 5 seeds and for R&D-Agent o3(R)+GPT-4.1(D) is based on 6 seeds.
- According to MLE-Bench, the 75 competitions are categorized into three levels of complexity: Low==Lite if we estimate that an experienced ML engineer can produce a sensible solution in under 2 hours, excluding the time taken to train any models; Medium if it takes between 2 and 10 hours; and High if it takes more than 10 hours.
You can inspect the detailed runs of the above results online.
For running R&D-Agent on MLE-bench, refer to MLE-bench Guide: Running ML Engineering via MLE-bench
🥇 The First Data-Centric Quant Multi-Agent Framework!
R&D-Agent for Quantitative Finance, in short RD-Agent(Q), is the first data-centric, multi-agent framework designed to automate the full-stack research and development of quantitative strategies via coordinated factor-model co-optimization.
Extensive experiments in real stock markets show that, at a cost under $10, RD-Agent(Q) achieves approximately 2× higher ARR than benchmark factor libraries while using over 70% fewer factors. It also surpasses state-of-the-art deep time-series models under smaller resource budgets. Its alternating factor–model optimization further delivers excellent trade-off between predictive accuracy and strategy robustness.
You can learn more details about RD-Agent(Q) through the paper and reproduce it through the documentation.
Data Science Agent Preview
Check out our demo video showcasing the current progress of our Data Science Agent under development:
https://github.com/user-attachments/assets/3eccbecb-34a4-4c81-bce4-d3f8862f7305
🌟 Introduction
R&D-Agent aims to automate the most critical and valuable aspects of the industrial R&D process, and we begin with focusing on the data-driven scenarios to streamline the development of models and data. Methodologically, we have identified a framework with two key components: 'R' for proposing new ideas and 'D' for implementing them. We believe that the automatic evolution of R&D will lead to solutions of significant industrial value.
R&D is a very general scenario. The advent of R&D-Agent can be your
- 💰 Automatic Quant Factory (🎥Demo Video|▶️YouTube)
- 🤖 Data Mining Agent: Iteratively proposing data & models (🎥Demo Video 1|▶️YouTube) (🎥Demo Video 2|▶️YouTube) and implementing them by gaining knowledge from data.
- 🦾 Research Copilot: Auto read research papers (🎥Demo Video|▶️YouTube) / financial reports (🎥Demo Video|▶️YouTube) and implement model structures or building datasets.
- 🤖 Kaggle Agent: Auto Model Tuning and Feature Engineering(🎥Demo Video Coming Soon...) and implementing them to achieve more in competitions.
- ...
You can click the links above to view the demo. We're continuously adding more methods and scenarios to the project to enhance your R&D processes and boost productivity.
Additionally, you can take a closer look at the examples in our 🖥️ Live Demo.
⚡ Quick start
RD-Agent currently only supports Linux.
You can try above demos by running the following command:
🐳 Docker installation.
Users must ensure Docker is installed before attempting most scenarios. Please refer to the official 🐳Docker page for installation instructions.
Ensure the current user can run Docker commands without using sudo. You can verify this by executing docker run hello-world.
🐍 Create a Conda Environment
- Create a new conda environment with Python (3.10 and 3.11 are well-tested in our CI):
conda create -n rdagent python=3.10 - Activate the environment:
conda activate rdagent
🛠️ Install the R&D-Agent
For Users
- You can directly install the R&D-Agent package from PyPI:
pip install rdagent
For Developers
- If you want to try the latest version or contribute to RD-Agent, you can install it from the source and follow the development setup:
git clone https://github.com/microsoft/RD-Agent cd RD-Agent make dev
More details can be found in the development setup.
💊 Health check
- rdagent provides a health check that currently checks two things.
- whether the docker installation was successful.
- whether the default port used by the rdagent ui is occupied.
rdagent health_check --no-check-env
⚙️ Configuration
-
The demos requires following ability:
- ChatCompletion
- json_mode
- embedding query
You can set your Chat Model and Embedding Model in the following ways:
🔥 Attention: We now provide experimental support for DeepSeek models! You can use DeepSeek's official API for cost-effective and high-performance inference. See the configuration example below for DeepSeek setup.
-
Using LiteLLM (Default): We now support LiteLLM as a backend for integration with multiple LLM providers. You can configure in multiple ways:
Option 1: Unified API base for both models
Configuration Example:
OpenAISetup :cat << EOF > .env # Set to any model supported by LiteLLM. CHAT_MODEL=gpt-4o EMBEDDING_MODEL=text-embedding-3-small # Configure unified API base OPENAI_API_BASE=<your_unified_api_base> OPENAI_API_KEY=<replace_with_your_openai_api_key>Configuration Example:
Azure OpenAISetup :Before using this configuration, please confirm in advance that your
Azure OpenAI API keysupportsembedded models.cat << EOF > .env EMBEDDING_MODEL=azure/<Model deployment supporting embedding> CHAT_MODEL=azure/<your deployment name> AZURE_API_KEY=<replace_with_your_openai_api_key> AZURE_API_BASE=<your_unified_api_base> AZURE_API_VERSION=<azure api version>Option 2: Separate API bases for Chat and Embedding models
cat << EOF > .env # Set to any model supported by LiteLLM. # Configure separate API bases for chat and embedding # CHAT MODEL: CHAT_MODEL=gpt-4o OPENAI_API_BASE=<your_chat_api_base> OPENAI_API_KEY=<replace_with_your_openai_api_key> # EMBEDDING MODEL: # TAKE siliconflow as an example, you can use other providers. # Note: embedding requires litellm_proxy prefix EMBEDDING_MODEL=litellm_proxy/BAAI/bge-large-en-v1.5 LITELLM_PROXY_API_KEY=<replace_with_your_siliconflow_api_key> LITELLM_PROXY_API_BASE=https://api.siliconflow.cn/v1Configuration Example:
DeepSeekSetup :Since many users encounter configuration errors when setting up DeepSeek. Here's a complete working example for DeepSeek Setup:
cat << EOF > .env # CHAT MODEL: Using DeepSeek Official API CHAT_MODEL=deepseek/deepseek-chat DEEPSEEK_API_KEY=<replace_with_your_deepseek_api_key> # EMBEDDING MODEL: Using SiliconFlow for embedding since deepseek has no embedding model. # Note: embedding requires litellm_proxy prefix EMBEDDING_MODEL=litellm_proxy/BAAI/bge-m3 LITELLM_PROXY_API_KEY=<replace_with_your_siliconflow_api_key> LITELLM_PROXY_API_BASE=https://api.siliconflow.cn/v1Notice: If you are using reasoning models that include thought processes in their responses (such as <think> tags), you need to set the following environment variable:
REASONING_THINK_RM=TrueYou can also use a deprecated backend if you only use
OpenAI APIorAzure OpenAIdirectly. For this deprecated setting and more configuration information, please refer to the documentation. -
If your environment configuration is complete, please execute the following commands to check if your configuration is valid. This step is necessary.
rdagent health_check
🚀 Run the Application
The 🖥️ Live Demo is implemented by the following commands(each item represents one demo, you can select the one you prefer):
-
Run the Automated Quantitative Trading & Iterative Factors Model Joint Evolution: Qlib self-loop factor & model proposal and implementation application
rdagent fin_quant -
Run the Automated Quantitative Trading & Iterative Factors Evolution: Qlib self-loop factor proposal and implementation application
rdagent fin_factor -
Run the Automated Quantitative Trading & Iterative Model Evolution: Qlib self-loop model proposal and implementation application
rdagent fin_model -
Run the Automated Quantitative Trading & Factors Extraction from Financial Reports: Run the Qlib factor extraction and implementation application based on financial reports
# 1. Generally, you can run this scenario using the following command: rdagent fin_factor_report --report-folder=<Your financial reports folder path> # 2. Specifically, you need to prepare some financial reports first. You can follow this concrete example: wget https://github.com/SunsetWolf/rdagent_resource/releases/download/reports/all_reports.zip unzip all_reports.zip -d git_ignore_folder/reports rdagent fin_factor_report --report-folder=git_ignore_folder/reports -
Run the Automated Model Research & Development Copilot: model extraction and implementation application
# 1. Generally, you can run your own papers/reports with the following command: rdagent general_model <Your paper URL> # 2. Specifically, you can do it like this. For more details and additional paper examples, use `rdagent general_model -h`: rdagent general_model "https://arxiv.org/pdf/2210.09789" -
Run the Automated Medical Prediction Model Evolution: Medical self-loop model proposal and implementation application
# Generally, you can run the data science program with the following command: rdagent data_science --competition <your competition name> # Specifically, you need to create a folder for storing competition files (e.g., competition description file, competition datasets, etc.), and configure the path to the folder in your environment. In addition, you need to use chromedriver when you download the competition descriptors, which you can follow for this specific example: # 1. Download the dataset, extract it to the target folder. wget https://github.com/SunsetWolf/rdagent_resource/releases/download/ds_data/arf-12-hours-prediction-task.zip unzip arf-12-hours-prediction-task.zip -d ./git_ignore_folder/ds_data/ # 2. Configure environment variables in the `.env` file dotenv set DS_LOCAL_DATA_PATH "$(pwd)/git_ignore_folder/ds_data" dotenv set DS_CODER_ON_WHOLE_PIPELINE True dotenv set DS_IF_USING_MLE_DATA False dotenv set DS_SAMPLE_DATA_BY_LLM False dotenv set DS_SCEN rdagent.scenarios.data_science.scen.DataScienceScen # 3. run the application rdagent data_science --competition arf-12-hours-prediction-taskNOTE: For more information about the dataset, please refer to the documentation.
-
Run the Automated Kaggle Model Tuning & Feature Engineering: self-loop model proposal and feature engineering implementation application
Using tabular-playground-series-dec-2021 as an example.
- Register and login on the Kaggle website.
- Configuring the Kaggle API.
(1) Click on the avatar (usually in the top right corner of the page) ->Settings->Create New Token, A file calledkaggle.jsonwill be downloaded.
(2) Movekaggle.jsonto~/.config/kaggle/
(3) Modify the permissions of the kaggle.json file. Reference command:chmod 600 ~/.config/kaggle/kaggle.json - Join the competition: Click
Join the competition->I Understand and Acceptat the bottom of the competition details page.
# Generally, you can run the Kaggle competition program with the following command: rdagent data_science --competition <your competition name> # 1. Configure environment variables in the `.env` file mkdir -p ./git_ignore_folder/ds_data dotenv set DS_LOCAL_DATA_PATH "$(pwd)/git_ignore_folder/ds_data" dotenv set DS_CODER_ON_WHOLE_PIPELINE True dotenv set DS_IF_USING_MLE_DATA True dotenv set DS_SAMPLE_DATA_BY_LLM True dotenv set DS_SCEN rdagent.scenarios.data_science.scen.KaggleScen # 2. run the application rdagent data_science --competition tabular-playground-series-dec-2021 - Register and login on the Kaggle website.
🖥️ Monitor the Application Results
-
You can run the following command for our demo program to see the run logs.
rdagent ui --port 19899 --log-dir <your log folder like "log/"> --data-science -
About the
data_scienceparameter: If you want to see the logs of the data science scenario, set thedata_scienceparameter toTrue; otherwise set it toFalse. -
Although port 19899 is not commonly used, but before you run this demo, you need to check if port 19899 is occupied. If it is, please change it to another port that is not occupied.
You can check if a port is occupied by running the following command.
rdagent health_check --no-check-env --no-check-docker
🏭 Scenarios
We have applied R&D-Agent to multiple valuable data-driven industrial scenarios.
🎯 Goal: Agent for Data-driven R&D
In this project, we are aiming to build an Agent to automate Data-Driven R&D that can
- 📄 Read real-world material (reports, papers, etc.) and extract key formulas, descriptions of interested features and models, which are the key components of data-driven R&D .
- 🛠️ Implement the extracted formulas (e.g., features, factors, and models) in runnable codes.
- Due to the limited ability of LLM in implementing at once, build an evolving process for the agent to improve performance by learning from feedback and knowledge.
- 💡 Propose new ideas based on current knowledge and observations.
📈 Scenarios/Demos
In the two key areas of data-driven scenarios, model implementation and data building, our system aims to serve two main roles: 🦾Copilot and 🤖Agent.
- The 🦾Copilot follows human instructions to automate repetitive tasks.
- The 🤖Agent, being more autonomous, actively proposes ideas for better results in the future.
The supported scenarios are listed below:
| Scenario/Target | Model Implementation | Data Building |
|---|---|---|
| 💹 Finance | 🤖 Iteratively Proposing Ideas & Evolving▶️YouTube | 🤖 Iteratively Proposing Ideas & Evolving ▶️YouTube 🦾 Auto reports reading & implementation▶️YouTube |
| 🩺 Medical | 🤖 Iteratively Proposing Ideas & Evolving▶️YouTube | - |
| 🏭 General | 🦾 Auto paper reading & implementation▶️YouTube 🤖 Auto Kaggle Model Tuning |
🤖Auto Kaggle feature Engineering |
- RoadMap: Currently, we are working hard to add new features to the Kaggle scenario.
Different scenarios vary in entrance and configuration. Please check the detailed setup tutorial in the scenarios documents.
Here is a gallery of successful explorations (5 traces showed in 🖥️ Live Demo). You can download and view the execution trace using this command from the documentation.
Please refer to 📖readthedocs_scen for more details of the scenarios.
⚙️ Framework
Automating the R&D process in data science is a highly valuable yet underexplored area in industry. We propose a framework to push the boundaries of this important research field.
The research questions within this framework can be divided into three main categories:
| Research Area | Paper/Work List |
|---|---|
| Benchmark the R&D abilities | Benchmark |
| Idea proposal: Explore new ideas or refine existing ones | Research |
| Ability to realize ideas: Implement and execute ideas | Development |
We believe that the key to delivering high-quality solutions lies in the ability to evolve R&D capabilities. Agents should learn like human experts, continuously improving their R&D skills.
More documents can be found in the 📖 readthedocs.
📃 Paper/Work list
Overall Technical Report
@misc{yang2025rdagentllmagentframeworkautonomous,
title={R&D-Agent: An LLM-Agent Framework Towards Autonomous Data Science},
author={Xu Yang and Xiao Yang and Shikai Fang and Yifei Zhang and Jian Wang and Bowen Xian and Qizheng Li and Jingyuan Li and Minrui Xu and Yuante Li and Haoran Pan and Yuge Zhang and Weiqing Liu and Yelong Shen and Weizhu Chen and Jiang Bian},
year={2025},
eprint={2505.14738},
archivePrefix={arXiv},
primaryClass={cs.AI},
url={https://arxiv.org/abs/2505.14738},
}
📊 Benchmark
@misc{chen2024datacentric,
title={Towards Data-Centric Automatic R&D},
author={Haotian Chen and Xinjie Shen and Zeqi Ye and Wenjun Feng and Haoxue Wang and Xiao Yang and Xu Yang and Weiqing Liu and Jiang Bian},
year={2024},
eprint={2404.11276},
archivePrefix={arXiv},
primaryClass={cs.AI}
}
🔍 Research
In a data mining expert's daily research and development process, they propose a hypothesis (e.g., a model structure like RNN can capture patterns in time-series data), design experiments (e.g., finance data contains time-series and we can verify the hypothesis in this scenario), implement the experiment as code (e.g., Pytorch model structure), and then execute the code to get feedback (e.g., metrics, loss curve, etc.). The experts learn from the feedback and improve in the next iteration.
Based on the principles above, we have established a basic method framework that continuously proposes hypotheses, verifies them, and gets feedback from the real-world practice. This is the first scientific research automation framework that supports linking with real-world verification.
For more detail, please refer to our 🖥️ Live Demo page.
🛠️ Development
@misc{yang2024collaborative,
title={Collaborative Evolving Strategy for Automatic Data-Centric Development},
author={Xu Yang and Haotian Chen and Wenjun Feng and Haoxue Wang and Zeqi Ye and Xinjie Shen and Xiao Yang and Shizhao Sun and Weiqing Liu and Jiang Bian},
year={2024},
eprint={2407.18690},
archivePrefix={arXiv},
primaryClass={cs.AI}
}
Deep Application in Diverse Scenarios
@misc{li2025rdagentquantmultiagentframeworkdatacentric,
title={R&D-Agent-Quant: A Multi-Agent Framework for Data-Centric Factors and Model Joint Optimization},
author={Yuante Li and Xu Yang and Xiao Yang and Minrui Xu and Xisen Wang and Weiqing Liu and Jiang Bian},
year={2025},
eprint={2505.15155},
archivePrefix={arXiv},
primaryClass={q-fin.CP},
url={https://arxiv.org/abs/2505.15155},
}
🤝 Contributing
We welcome contributions and suggestions to improve R&D-Agent. Please refer to the Contributing Guide for more details on how to contribute.
Before submitting a pull request, ensure that your code passes the automatic CI checks.
📝 Guidelines
This project welcomes contributions and suggestions. Contributing to this project is straightforward and rewarding. Whether it's solving an issue, addressing a bug, enhancing documentation, or even correcting a typo, every contribution is valuable and helps improve R&D-Agent.
To get started, you can explore the issues list, or search for TODO: comments in the codebase by running the command grep -r "TODO:".
Before we released R&D-Agent as an open-source project on GitHub, it was an internal project within our group. Unfortunately, the internal commit history was not preserved when we removed some confidential code. As a result, some contributions from our group members, including Haotian Chen, Wenjun Feng, Haoxue Wang, Zeqi Ye, Xinjie Shen, and Jinhui Li, were not included in the public commits.
⚖️ Legal disclaimer
The RD-agent is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. The RD-agent is aimed to facilitate research and development process in the financial industry and not ready-to-use for any financial investment or advice. Users shall independently assess and test the risks of the RD-agent in a specific use scenario, ensure the responsible use of AI technology, including but not limited to developing and integrating risk mitigation measures, and comply with all applicable laws and regulations in all applicable jurisdictions. The RD-agent does not provide financial opinions or reflect the opinions of Microsoft, nor is it designed to replace the role of qualified financial professionals in formulating, assessing, and approving finance products. The inputs and outputs of the RD-agent belong to the users and users shall assume all liability under any theory of liability, whether in contract, torts, regulatory, negligence, products liability, or otherwise, associated with use of the RD-agent and any inputs and outputs thereof.


