最近整理了一下我自己做的项目:AutoTrading。
如果用一句更形象的话来描述,我想做的其实不是一个“自动选股脚本”,而是开一家由大模型驱动的交易公司。
这家公司里有研究员、有交易员、有基金经理,也有自己的候选池系统、执行系统和经营看板。它不是靠一个模型直接说“买这个”,而是尽量按真实团队的协作方式,把研究、评审、执行和复盘都串起来。
这套系统最核心的两点其实很简单:
- 像搭一个真实交易团队一样搭系统。 不是让一个模型直接拍板,而是让不同角色分工合作,再层层汇总成最终决定。
- 像经营一家公司一样经营交易流程。 找机会、讨论、执行、回写、看板都在一条链上,而且后面还能继续往里加新的选股方式。
这个项目的整体架构设计参考了 TradingAgents,这里也对它致敬一下。
它把交易研究拆成多个角色协作,也就是把“分析师、研究员、交易员、风控、组合经理”这些职能用多代理方式组织起来。我是在这个架构方向上,继续做了一个更适合我自己使用方式的版本:
- 我做的是从选股到交易的整条自动化链路。 它不是只研究一只票,而是每天先跑候选池、再送投委会、再做执行和回写。
- TradingAgents 更像围绕单个股票展开分析与决策。 AutoTrading 则更强调“每天要跑起来”的 operating system,重点是让候选发现、评审、执行、展示都接进同一条日常流程。
所以更准确的说法是:AutoTrading 是在 TradingAgents 提供的架构方向上,继续做出来的一个更适合我自己使用节奏的版本,也是一套每天运行的自动化交易工作流。
拥有一间 Hedge Fund
用一句话概括:AutoTrading 是我为一间 AI-Native Hedge Fund 搭的操作系统。
它不是单点工具,而是一组协同模块:
| 模块 | 通俗理解 | 作用 |
|---|---|---|
MarketRegime | 市场天气预报 | 先判断最近更适合激进进攻,还是先保守一点 |
Screener | 找机会的研究部门 | 每天先从市场里找出一批值得关注的标的 |
InvestmentCommittee | 投资委员会 | 把这些机会逐个讨论,决定哪些值得真正进入交易计划 |
Execution | 交易台 | 把会议结论变成具体动作,并跟踪订单和持仓状态 |
web | 公司总看板 | 把研究、决策和执行结果统一展示出来 |
所以它本质上不是“用一个模型直接说买什么”,而是把一间基金内部会发生的事情拆成可运行的模块:
- 先判断现在是强势市场、震荡市场还是弱势市场。
- 再从不同策略里找出候选标的。
- 然后让多位分析师分别从技术、基本面、事件、社区叙事、宏观风险等角度做评审。
- 最后再把结论翻译成执行计划,并进入券商账户的订单、成交、持仓跟踪。
我真正想做的,就是把“拥有一间基金公司”这件事软件化:让大模型以团队协作的方式参与交易,而不是让单个模型直接拍板。
先把这家公司搭起来
如果把它当成一间基金来看,最核心的是组织分工很清楚:
- 环境层:先判断市场环境,再决定后面的表达方式。
- 发现层:先生成候选池,而不是让大模型直接全市场自由发挥。
- 研究层:把观点拆给多个角色,再做多空辩论和管理层裁决。
- 执行层:把研究结论翻译成订单与风控状态,而不是停在“建议买入”。
- 展示层:把各环节统一收进一个 dashboard,方便复盘与校验。
这也是整个项目最核心的架构方向。它至少在工程上回答了三个关键问题:
- 上游环境怎么约束下游决策?
- 研究结论怎么变成结构化执行语义?
- 执行结果怎么回流到统一界面,而不是散落在日志里?
它怎么运转
先把这间公司的主链路画出来:
Market Regime
↓
Screener
↓
Review Queue
↓
Investment Committee
├─ 基础分析师层
├─ Bull / Bear Researcher
├─ Research Manager
├─ Trader
└─ Fund Manager
↓
Execution
↓
Longbridge Paper / 本地执行账本
↓
Web Dashboard
从操作层面看,这间基金其实有两个“总控面”:
这张图可以把整套系统看得更直观一些:上面是市场环境和候选池,中间是投委会研究链,下面是执行、风控和看板。它不是几块孤立模块拼在一起,而是一条从研究走到执行、再回到展示层的完整经营链路。
交易台:每天怎么开工
仓库根目录的 main.py 负责把几个模块串起来。普通理解的话,它就像这间公司的“开工按钮”:按下去之后,研究部门先开始找机会,投资委员会再开会,最后交易台再去执行。
如果你想看具体命令和实现细节,最直接的方式不是在文章里抠命令,而是直接去看 GitHub 仓库: AutoTrading on GitHub
管理看板
InvestmentCommittee/main.py 默认启动 8011 端口的 API / scheduler 运行时,而 web/ 目录下的 Next.js 前端负责展示:
/regime/screener/investment-committee/execution
这意味着它既有后台工作流,也有前台看板。这两个入口在很多项目里是断开的,但在 AutoTrading 里是刻意统一的。
第一层:先判断今天该怎么做交易
这是我觉得这个项目最重要的设计点。
很多交易系统会把“市场环境”当成一个背景板,但在 AutoTrading 里,它更像是每天开盘前的一场晨会。
系统会先回答几个很现实的问题:
- 现在这个市场,适不适合积极出手?
- 应该多做一点,还是先保守一点?
- 仓位应该放大,还是先留更多现金?
- 今天更适合顺势做,还是宁愿少做一点?
关键点不在于它给市场打了多少分,而在于这个判断会直接影响后面每一步到底怎么做。
它对下游的影响是三段式的:
在候选池里
研究部门在找机会的时候,会自动考虑“现在是不是适合做这种票”。同一只股票,在强势市场里可能排得更靠前,在偏弱市场里可能就先放一放。
在投资委员会里
投资委员会在讨论时,也不能只说“这只票看起来不错”,还得回答“在现在这个市场里,值不值得现在就做”。
在执行层里
到了交易台,系统还会按这个市场判断去控制仓位、现金和出手节奏,而不是前面说想买,后面就一把梭进去。
所以从架构角度看,MarketRegime 的作用不是“提供市场背景”,而是把环境判断前置成整个系统的控制变量。这一点比“先选股,后补一句大盘怎样”严谨很多。
第二层:先有候选池,再谈交易
Screener 模块负责的不是下单,而是每天先把“值得看一眼的机会”找出来。
如果不看代码,只看功能,这条链路其实很好理解:
- 同步行情数据
- 计算涨跌幅、成交额等衍生字段
- 补充个股基础资料与强势原因
- 调用模型做摘要或候选分析
- 导出给 dashboard 使用的快照
目前这套系统会从三类机会里找票:
- 最近一直很强、还在创新高的一批票 这类更像“市场已经用价格投票”的强势股。
- 刚开始加速、走势越来越顺的一批票 这类更像“正在进入主升阶段”的趋势股。
- 最近市场讨论度突然很高的一批票 这类来自热点话题、社区讨论或情绪快速升温的方向。
如果你想看它们在代码里的内部名字和具体实现,可以直接去 GitHub 看配置和源码;文章这里更关心的是它们在实际使用里分别代表什么。
更关键的是,它不是把三批股票混在一起乱排,而是会按固定规则送去投资委员会。
简单理解就是:
- 强势股里多挑几只
- 趋势刚起来的票里挑最像样的一只
- 热点话题里再挑一只最值得讨论的
这样做的好处是,整个组合不会只剩下一种风格,也不会被单一来源绑死。
这个设计很重要,因为它让 Screener 成为一个候选池组合层,而不是某一个单点策略脚本。这样做至少有三个好处:
- 可以同时容纳“规则型候选池”和“叙事型候选池”
- 可以在送审阶段控制组合结构,而不是把所有候选一股脑交给下游
- 后面如果继续新增策略,只需要按同样协议接入候选池和送审编排,而不需要推翻整条链路
第三层:让投资委员会来做决定
如果说 Market Regime 决定环境,Screener 决定研究名单,那么 Investment Committee 决定的是:这些候选到底能不能进入基金的交易计划。
它不是一个简单评分器,而是一条多层研究链。
先拆成基础分析师
默认有 6 位基础分析师:
- 市场结构分析师
- 技术指标分析师
- 新闻事件与披露分析师
- 社区叙事分析师
- 基本面分析师
- 宏观与外部风险分析师
如果这只票本身就是从“市场最近很热的话题”里出来的,系统还会再加一位专门看情绪和舆论的分析师。
再让多头和空头辩论
基础分析师的输出不会直接变成结论,而是交给:
Bull ResearcherBear Researcher
也就是说,这里先做一次“多头观点整合”和“空头观点整合”,而不是一开始就让模型产出单边结论。
最后交给研究经理、交易员和基金经理
之后再进入:
Research ManagerTraderFund Manager
它们各自解决的问题不一样:
Research Manager:整合共识、分歧、盲区和关键闸门Trader:把研究语言翻译成执行语言,比如分批、触发条件、失效条件Fund Manager:形成最终裁决,例如买入、增持、持有、减持或卖出
所以这一层的真正价值,不只是“模型分析很细”,而是它把研究结论结构化成了可以被执行层消费的输出。
这张图对应的其实就是“投委会怎么开会”这件事:先拿到候选名单,再分给不同分析师准备材料,接着做多空讨论和研究经理整合,最后交给基金经理形成结论,并把结果发给执行层。
为什么这一层很关键
很多 AI 项目会停在“模型给出一段分析”这里,但 AutoTrading 不是这样。
它把这场“投委会讨论”真正接进了后面的交易流程里:前面研究出来的观点,要在这里被整理、被取舍、被转成明确动作,然后才能继续往下走。
所以这一层的意义,不是把角色设计得多热闹,而是把“大家各说各话”的分析,收束成一份可以继续执行的决策结果。
第四层:把研究结论变成真正的交易动作
很多项目在“建议买入”之后就结束了,但 AutoTrading 继续往下做了一层 Execution。
它的职责包括:
- 读取
Investment Committee的完整评审结果 - 解析动作、触发条件、失效条件
- 结合
Market Regime的风险边界生成执行计划 - 同步订单、成交、持仓和账户状态
- 处理退出、空仓补位、主动换仓
这里最值得注意的是,它并不重复研究逻辑,而是专门处理交易台的执行编排。
如果用最通俗的话说,交易台主要做四件事:
- 把投委会的结论翻译成执行计划
- 把计划真的送进券商执行通道
- 持续跟踪订单、成交和持仓变化
- 在该减仓、补位、换仓的时候继续往下推进
这张图更适合拿来理解“买入之后系统还在做什么”。它不是下完单就结束,而是会继续跟踪订单状态、持仓状态、退出条件、空位补充和主动换仓,所以更像一个真的在持续运作的交易台。
当前默认执行模式是 longbridge_paper,也就是先按 paper trading 的方式运行;如果有需要,这套接口本身也可以切换到实盘自动化。
换句话说,paper 不是能力上限,而是默认起步方式。系统在执行层已经把自动化交易需要的那套编排、同步和风控接口准备好了。
第五层:让整家公司有一个统一看板
这个项目还有一个很重要但容易被忽略的点:它没有让结果停在数据库或日志里。
web/ 目录下的 Next.js 看板把四条链路统一展示出来:
RegimeScreenerInvestment CommitteeExecution
这带来的价值不是“更好看”,而是更像一间基金真正会用的经营看板,更容易做下面三件事:
- 检查上游输出有没有真的传到下游
- 对照 Dev / Prod / API 结果是否一致
- 复盘某一天到底是哪里出了偏差
从工程角度说,Dashboard 其实是这套架构里的“可解释性层”和“验收层”。
这套系统怎么跑起来
如果把它当成一间本地运行的 AI Hedge Fund,使用方式其实很清晰。
1. 先准备运行环境
项目当前依赖几块能力:
- Python 3.10+
- 根目录
requirements.txt中的公共依赖 Execution/与InvestmentCommittee/两个可编辑包web/目录下的前端依赖- 外部数据与模型凭证
- Longbridge 账户相关凭证
它不是那种一条命令就能完全跑起来的 demo,因为里面涉及行情、新闻、LLM 和券商 paper 账户这些真实依赖。
所以如果你只是想理解它,最好的方式是:
- 先看文章把整体思路看明白。
- 再去 GitHub 看仓库结构和 README。
- 如果你真的想跑,再按仓库里的说明一步步配置环境。
2. 然后跑研究链路
如果你真的想跑它,最简单的理解方式是:
- 先让系统找机会
- 再让投资委员会开会
- 最后让交易台去执行
具体怎么启动、每个命令怎么配,仓库里写得比文章更准确,建议直接看 GitHub: AutoTrading on GitHub
3. 再跑计划提交和状态同步
如果当天已经跑过一轮,后面系统主要就是两件事:
- 继续把新计划送出去
- 持续同步账户里的真实状态
4. 最后回到 Dashboard 看全局
本地开发时,可以直接启动 dashboard:
python main.py dashboard-dev
然后重点看四个页面:
/regime:环境判断是否合理/screener:候选池和送审队列是否符合预期/investment-committee:多分析师评审是否完整/execution:订单、成交、持仓、轮换、补位是否正确
如果只讲使用方法,我觉得最重要的不是记住某一个命令,而是理解它的工作顺序:
先有环境,再有候选,再有评审,再有执行,最后通过 dashboard 做统一验证。
最后
对我来说,AutoTrading 后面真正值得继续做的,不是把某一个策略打磨成孤立功能,而是把这间“AI Hedge Fund”的整条经营链继续做顺。
一方面,它可以继续扩更多研究入口和候选来源,让这家公司拥有更丰富的“研究员”和“机会池”;另一方面,也可以把执行、风控、账户切换和看板联动做得更稳,让它从“能跑起来”进一步走向“能长期使用”。
如果你想理解它的用法,最好的方式其实不是盯某一段代码,而是按这条顺序去看:先看市场环境,再看候选池,再看投委会,最后看执行和看板。这个顺序跑通了,后面的扩展空间就会很自然。
相关链接
- 项目 GitHub: https://github.com/anon019/AutoTrading