
OpenClaw 在量化架构中的 角色定位
OpenClaw + MiniMax M2.5 在现有架构中扮演'自动化策略工程师'的角色,将高层次交易信号转化为可执行的 NautilusTrader 策略代码。
与 TradingAgents 的多智能体辩论决策不同,OpenClaw 专注于将高层次的交易信号和市场分析转化为可执行的 NautilusTrader 策略代码, 并自动完成回测验证。这形成了一个完整的闭环:
硬件 部署方案
| 设备 | 新增服务 | 职责 |
|---|---|---|
| 5080 主机 | OpenClaw Agent (MiniMax M2.5) | 策略代码生成、回测执行、结果分析 |
| Mac Mini Pro | 云端存储代理 (S3/OSS) | 策略文件和回测结果的云端持久化 |
| 联想 4070 | 无变化 | 继续负责 THGNN 模型训练 |
每周自动化 工作流
每周日 20:00 自动启动,从数据准备到策略生成、回测验证、结果保存,形成完整的闭环。
从数据源拉取恒生科技 30 只成分股最近一周的小时级 K 线数据,计算 14 维特征,更新邻接矩阵,生成最新的 THGNN 输入数据。
加载最新的 THGNN 模型,对下周的价格走势进行预测,生成每只股票的方向概率和置信度评分。
n8n 触发 OpenClaw Agent,传入 THGNN 预测结果、上周回测表现、NautilusTrader 开发规范和市场环境摘要。OpenClaw 基于 MiniMax M2.5 自动生成完整的 NautilusTrader 策略 Python 文件。
OpenClaw 自动将生成的策略加载到 NautilusTrader 的 Sandbox 环境中,使用最近 4 周的历史数据进行回测验证,提取年化收益率、最大回撤、夏普比率、胜率等关键指标。
策略通过预设质量门槛(夏普比率 > 1.5,最大回撤 < 15%)后标记为'候选策略',打包上传至云端存储,并通过 n8n 触发 MiniMax TTS 生成语音摘要推送。
OpenClaw 将本周策略表现与历史策略对比分析,生成改进建议,作为下周策略生成的参考输入。形成持续学习和优化的闭环。
策略生成上下文输入
与 TradingAgents 的 协同机制
TradingAgents — 负责'做什么'
分析市场环境,确定交易方向和风险偏好。通过多智能体辩论系统形成深思熟虑的投资观点,发布 TradeDecisionEvent。
OpenClaw — 负责'怎么做'
将交易决策转化为精确的可执行代码。订阅 TradeDecisionEvent,据此调整策略参数,自动生成完整的 NautilusTrader 策略文件。
可执行的 成熟策略代码
基于恒生科技成分股小时级数据的 THGNN 动量策略,每周建模,自动排名并做多 Top N 股票。
class THGNNHourlyMomentumStrategy(Strategy):
"""
恒生科技小时级 THGNN 动量策略
- 消费 THGNNSignalEvent 获取预测信号
- 每周排名并做多 Top N 股票
- 固定比例仓位管理 + 百分比止损
"""
def __init__(self, strategy_id, venue, instrument_list,
bar_type, trade_size_usd=10000.0,
top_n_long=5, stop_loss_pct=0.05):
super().__init__(strategy_id=strategy_id)
self.venue = venue
self.instrument_ids = [InstrumentId.from_str(s)
for s in instrument_list]
self.bar_type = bar_type
self.trade_size = Money(trade_size_usd, "USD")
self.top_n_long = top_n_long
self.stop_loss_pct = Decimal(str(stop_loss_pct))
self.latest_signals = {}
self.stop_loss_prices = {}
def on_start(self):
for inst_id in self.instrument_ids:
self.subscribe_bars(self.bar_type, inst_id)
self.register_handler(THGNNSignalEvent,
self.on_thgnn_signal)
def on_thgnn_signal(self, event: THGNNSignalEvent):
self.latest_signals = {
InstrumentId.from_str(k): v
for k, v in event.predictions.items()
}
def rebalance_portfolio(self):
sorted_signals = sorted(
self.latest_signals.items(),
key=lambda x: x[1], reverse=True
)
target = {id for id, _ in sorted_signals[:self.top_n_long]}
current = {p.instrument_id for p in self.portfolio.positions()
if p.is_open}
for id in (current - target):
self.liquidate_position(id)
for id in (target - current):
self.open_position(id)HSI_TECH_STOCKS = [
'HK.00700', # 腾讯控股 'HK.09988', # 阿里巴巴
'HK.03690', # 美团 'HK.01810', # 小米集团
'HK.09618', # 京东集团 'HK.01024', # 快手
'HK.00241', # 阿里健康 'HK.02015', # 理想汽车
'HK.09888', # 百度集团 'HK.00941', # 中国移动
'HK.01211', # 比亚迪电子 'HK.09999', # 网易
'HK.06060', # 众安在线 'HK.02382', # 舜宇光学
'HK.00388', # 香港交易所 'HK.00857', # 中国石油
'HK.01357', # 美图公司 'HK.01833', # 平安好医生
'HK.02628', # 中国人寿 'HK.03968', # 招商银行
'HK.00939', # 建设银行 'HK.06881', # 中国银河
'HK.01928', # 金沙中国 'HK.02333', # 长城汽车
'HK.01299', # 友邦保险 'HK.03333', # 中国恒大
'HK.00285', # 比亚迪电子 'HK.00669', # 创科实业
'HK.00175', # 吉利汽车 'HK.00272', # 瑞声科技
]云端 存储结构
cloud-storage/
├── strategies/
│ ├── 2026-W10/
│ │ ├── strategy_v1.py # 策略代码
│ │ ├── backtest_report.json # 回测报告
│ │ ├── performance_metrics.csv # 性能指标
│ │ └── summary.md # 策略摘要
│ ├── 2026-W11/
│ └── ...
├── models/
│ ├── thgnn_latest.pth # 最新模型
│ └── training_logs/ # 训练日志
└── reports/
├── weekly_review.md # 周度回顾
└── monthly_analysis.md # 月度分析质量门槛
事件驱动型量化交易 Agent 系统
TradingAgents + NautilusTrader + THGNN + OpenClaw