从零搭建一个可以炒股的自主 AI Agent Harness Engineering(含风险警示)


🚨【开篇前置:最强风险警示,必读!!!】

各位读者朋友,在正式进入技术内容之前,请务必牢记:本文仅用于技术研究与教学演示,绝对不构成任何投资建议、交易指导或财务规划参考!!!

金融市场(尤其是股票、期货等高杠杆/高波动市场)存在极高的系统性风险、非系统性风险、操作风险、技术风险和政策风险。即使是华尔街顶级量化交易团队、拥有超算资源和千亿数据训练的AI模型,也无法保证稳定盈利,更无法规避黑天鹅事件导致的本金全部损失

自主开发的“炒股AI Agent”在合规性、鲁棒性、风控能力、交易成本控制等方面与专业机构相比有天壤之别

  1. 合规红线:在中国,未取得中国证监会、证券业协会等监管机构颁发的相关资质(如证券投资咨询业务资格、基金管理资格、量化交易系统接入许可等),以盈利为目的向他人提供投资建议、代理他人交易或利用自有/他人资金进行高频/程序化交易,均可能违反《证券法》《证券投资基金法》《刑法修正案(十一)》等法律法规,面临罚款、没收违法所得、市场禁入甚至刑事处罚!!!
  2. 技术风险:自主开发的系统可能存在代码漏洞、网络延迟、API限流、交易所API变更、数据错误、下单延迟/重复/撤销失败等问题,任何一个小故障都可能导致巨大亏损;
  3. 风控缺失:专业机构有严格的VaR(风险价值)、CVaR(条件风险价值)、最大回撤、头寸集中度、杠杆率、止损止盈、异常交易监控等多层级风控体系,自主开发的系统通常只能实现简单的止损止盈,无法应对复杂的市场波动;
  4. 过拟合陷阱:AI模型极易在历史数据上“过拟合”——看似回测结果惊人,但实盘表现往往一塌糊涂;
  5. 交易成本吞噬利润:自主交易通常无法享受专业机构的佣金优惠、融券费率优惠、手续费返还等政策,印花税、过户费、佣金、融资融券利息等交易成本可能完全吞噬甚至超过你的“预期利润”;
  6. 心理与情绪压力:即使你把交易交给AI,市场波动带来的账户资金变化也会给你带来巨大的心理压力,进而忍不住干预AI的决策,导致策略失效。

本文将严格以“技术研究与教学演示”为唯一目的,所有内容、代码、模型、数据均为模拟环境下的示例,绝对不能用于实盘交易!!!


0. 目标读者与前置知识

0.1 目标读者

  • 具备3年以上Python全栈开发经验,熟悉Django/FastAPI等Web框架、SQLAlchemy/peewee等ORM框架、Redis/PostgreSQL等数据库;
  • 对机器学习(ML)、深度学习(DL)、强化学习(RL)有基础了解,熟悉Pandas、NumPy、Scikit-learn、TensorFlow/PyTorch等库;
  • 对金融市场有基本认知(知道什么是股票、K线、成交量、MACD、RSI等技术指标,了解什么是回测);
  • 对Agent架构有基础了解(知道什么是Agent、LLM、工具调用、记忆、规划)。

0.2 前置知识(建议先补充)

  • Python 3.10+语法与生态;
  • FastAPI快速入门(本文后端将使用FastAPI);
  • LangChain/LlamaIndex的基础使用(本文Agent框架将使用LangChain);
  • Backtrader/VectorBT的基础使用(本文回测框架将使用VectorBT Pro的开源替代版VectorBT Lite?不,VectorBT Lite是免费的,但本文会自己写一个极简回测引擎,方便读者理解原理);
  • 金融技术指标的计算原理(Pandas-TA库的基础使用);
  • 证券API的基础使用(本文将使用模拟环境的API,不会对接真实券商)。

1. 核心概念与问题背景

1.1 核心概念

1.1.1 AI Agent(人工智能代理)

AI Agent是一种能够感知环境、做出决策、执行动作、根据反馈学习改进的自主实体。通俗来说,AI Agent就像一个“虚拟员工”,你给它一个目标(比如“在模拟A股市场中,以最小风险获得年化15%的收益率”),它会自己调用各种工具(比如获取实时行情、计算技术指标、查询新闻资讯、分析财报、生成交易信号、执行模拟交易)来完成目标。

根据Agent的决策逻辑,可以将其分为:

  1. 规则型Agent:完全基于人工编写的规则进行决策(比如“当MACD金叉且RSI<30时买入,当MACD死叉且RSI>70时卖出”);
  2. 机器学习型Agent:基于历史数据训练的ML/DL模型进行决策(比如训练一个LSTM模型预测未来5天的股价涨跌);
  3. 强化学习型Agent:通过与环境交互(试错)获得奖励(比如盈利、控制回撤),进而学习最优决策策略(比如DQN、PPO、SAC等算法);
  4. LLM增强型Agent:结合大语言模型(LLM)的推理能力、知识理解能力和自然语言交互能力,实现更复杂的决策(比如本文要搭建的Agent,就是LLM增强型Agent)。
1.1.2 Harness Engineering( harness 工程化)

Harness Engineering( harness 可译为“ harness 框架”“ harness 平台”或“ harness 工程化套件”)是近年来随着AI Agent的兴起而出现的一个新概念。通俗来说,Harness Engineering就是为AI Agent提供一套标准化的、可复用的、可扩展的工程化框架和工具链,帮助开发者快速搭建、测试、部署、监控、迭代AI Agent。

一个完整的AI Agent Harness Engineering框架通常包含以下核心组件:

  1. Agent Core(代理核心):负责Agent的感知、决策、规划、执行逻辑;
  2. Tool Registry(工具注册表):负责管理Agent可以调用的各种工具(比如金融数据工具、技术分析工具、新闻分析工具、交易执行工具等);
  3. Memory System(记忆系统):负责存储Agent的感知数据、决策历史、执行结果、学习经验等,分为短期记忆(Short-Term Memory,STM)和长期记忆(Long-Term Memory,LTM);
  4. Planning System(规划系统):负责将复杂的目标分解为可执行的子任务(比如“完成模拟A股2024年上半年的回测”可以分解为“获取2024年上半年的A股行情数据”“清洗数据”“计算技术指标”“训练/选择策略”“执行回测”“分析回测结果”“生成回测报告”等子任务);
  5. Evaluation System(评估系统):负责评估Agent的性能(比如年化收益率、最大回撤、夏普比率、卡尔马比率、胜率、盈亏比等);
  6. Monitoring System(监控系统):负责监控Agent的运行状态、决策过程、执行结果、风险指标等;
  7. Deployment System(部署系统):负责将Agent部署到生产环境(模拟环境或合规的实盘环境);
  8. Iteration System(迭代系统):负责根据评估结果和反馈数据迭代优化Agent的策略、模型、工具等。
1.1.3 模拟金融环境

模拟金融环境是指完全模拟真实金融市场的运行规则,但不使用真实资金的环境。模拟金融环境通常包含以下功能:

  1. 提供历史行情数据和实时(延迟)行情数据;
  2. 提供模拟账户和资金管理功能;
  3. 提供模拟下单、撤单、成交查询功能;
  4. 提供交易成本计算功能(印花税、过户费、佣金等);
  5. 提供回测功能。

本文将使用自己编写的一个极简模拟A股环境,方便读者理解原理。

1.1.4 量化交易与回测

量化交易是指使用数学模型、统计方法、计算机程序来制定和执行交易策略的交易方式。回测是指将量化交易策略应用到历史行情数据上,模拟策略的运行过程,评估策略的性能的过程。回测是量化交易中最重要的环节之一,它可以帮助开发者验证策略的有效性,避免实盘交易中的盲目性。

1.2 问题背景

1.2.1 传统量化交易的痛点

传统量化交易通常存在以下痛点:

  1. 策略开发门槛高:需要开发者具备深厚的金融知识、数学知识、统计学知识和编程知识;
  2. 策略迭代周期长:从策略构思到回测验证,再到实盘部署,通常需要数周甚至数月的时间;
  3. 策略适应性差:传统量化交易策略通常是基于历史数据训练的,很难适应市场的变化(比如黑天鹅事件、政策变化、市场风格切换等);
  4. 无法处理非结构化数据:传统量化交易策略通常只能处理结构化数据(比如K线数据、成交量数据、财务数据等),很难处理非结构化数据(比如新闻资讯、研报、社交媒体数据等);
  5. 缺乏自然语言交互能力:传统量化交易系统通常只能通过代码或API进行交互,很难通过自然语言进行交互(比如“帮我分析一下贵州茅台最近的走势”“帮我生成一个适合当前市场的低风险交易策略”)。
1.2.2 LLM增强型AI Agent的优势

LLM增强型AI Agent可以很好地解决传统量化交易的痛点:

  1. 降低策略开发门槛:开发者可以通过自然语言与Agent交互,快速构思、验证、迭代策略,不需要具备深厚的金融知识、数学知识和统计学知识(当然,具备这些知识会更好);
  2. 缩短策略迭代周期:Agent可以自动完成数据获取、数据清洗、技术指标计算、策略生成、回测验证、结果分析等任务,大大缩短了策略迭代周期;
  3. 提高策略适应性:LLM具备强大的推理能力和知识理解能力,可以实时分析市场的变化(比如新闻资讯、研报、政策变化等),并及时调整策略;
  4. 处理非结构化数据:LLM可以处理非结构化数据(比如新闻资讯、研报、社交媒体数据等),并从中提取有用的信息(比如利好/利空消息、市场情绪等);
  5. 自然语言交互能力:用户可以通过自然语言与Agent交互,比如“帮我分析一下贵州茅台最近的走势”“帮我生成一个适合当前市场的低风险交易策略”“帮我调整一下止损止盈点位”。
1.2.3 Harness Engineering的必要性

虽然LLM增强型AI Agent有很多优势,但要搭建一个可用的、可扩展的、可维护的AI Agent,仍然需要解决很多工程化问题:

  1. 如何标准化Agent的架构
  2. 如何管理Agent可以调用的各种工具
  3. 如何存储Agent的感知数据、决策历史、执行结果、学习经验等
  4. 如何将复杂的目标分解为可执行的子任务
  5. 如何评估Agent的性能
  6. 如何监控Agent的运行状态、决策过程、执行结果、风险指标等
  7. 如何部署Agent到生产环境
  8. 如何迭代优化Agent的策略、模型、工具等

Harness Engineering就是为了解决这些工程化问题而出现的。

1.3 问题描述

本文要解决的问题是:从零搭建一个LLM增强型的自主炒股AI Agent Harness Engineering框架,并在模拟A股环境中进行测试和演示

具体来说,本文要实现以下功能:

  1. 极简模拟A股环境:提供历史行情数据(使用Yahoo Finance的免费历史数据)、实时(延迟)行情数据(使用Yahoo Finance的免费延迟数据)、模拟账户和资金管理功能、模拟下单/撤单/成交查询功能、交易成本计算功能、极简回测功能;
  2. Agent Core:基于LangChain的Agent框架,实现感知、决策、规划、执行逻辑;
  3. Tool Registry:管理Agent可以调用的各种工具,包括:
    • 金融数据工具(获取股票列表、获取历史行情数据、获取实时(延迟)行情数据、获取财务数据(使用Yahoo Finance的免费财务数据));
    • 技术分析工具(计算技术指标,使用Pandas-TA库);
    • 新闻分析工具(获取股票相关新闻(使用NewsAPI的免费API,需要注册账号)、分析新闻情绪(使用Hugging Face的免费预训练模型));
    • 交易执行工具(模拟下单、模拟撤单、查询模拟账户、查询模拟持仓、查询模拟成交记录);
    • 回测工具(执行极简回测、分析回测结果、生成回测报告);
  4. Memory System:基于Redis实现短期记忆,基于PostgreSQL实现长期记忆;
  5. Planning System:基于LangChain的Plan-and-Execute Agent框架,实现目标分解;
  6. Evaluation System:实现常用的量化交易性能评估指标(年化收益率、最大回撤、夏普比率、卡尔马比率、胜率、盈亏比等);
  7. Monitoring System:基于Prometheus和Grafana实现Agent的运行状态、决策过程、执行结果、风险指标等的监控;
  8. Web UI:基于React和FastAPI实现一个简单的Web UI,方便用户与Agent交互、查看模拟账户、查看模拟持仓、查看模拟成交记录、查看回测报告、查看监控数据。

1.4 问题解决思路

本文的问题解决思路如下:

  1. 环境搭建:搭建开发环境,包括Python 3.10+、FastAPI、LangChain、Pandas、NumPy、Pandas-TA、Yahoo Finance API(yfinance库)、NewsAPI、Hugging Face Transformers、Redis、PostgreSQL、Prometheus、Grafana、React等;
  2. 极简模拟A股环境实现:实现历史行情数据获取、实时(延迟)行情数据获取、模拟账户和资金管理、模拟下单/撤单/成交查询、交易成本计算、极简回测等功能;
  3. Tool Registry实现:将各种工具封装成LangChain的Tool,并注册到Tool Registry中;
  4. Memory System实现:基于Redis实现短期记忆,基于PostgreSQL实现长期记忆;
  5. Planning System实现:基于LangChain的Plan-and-Execute Agent框架实现目标分解;
  6. Agent Core实现:基于LangChain的Agent框架实现感知、决策、规划、执行逻辑;
  7. Evaluation System实现:实现常用的量化交易性能评估指标;
  8. Monitoring System实现:基于Prometheus和Grafana实现监控;
  9. Web UI实现:基于React和FastAPI实现Web UI;
  10. 系统测试与演示:在模拟A股环境中测试和演示系统的功能;
  11. 最佳实践总结:总结搭建AI Agent Harness Engineering框架的最佳实践;
  12. 行业发展与未来趋势:分析AI Agent在金融领域的发展历史、现状和未来趋势;
  13. 风险警示再次强调:再次强调本文仅用于技术研究与教学演示,绝对不能用于实盘交易。

2. 概念结构与核心要素组成

2.1 整体概念结构

本文要搭建的AI Agent Harness Engineering框架的整体概念结构如下图所示:

外部数据源层

工具与服务层

Agent Harness 核心层

用户交互层

Web UI
React

命令行界面
Click

RESTful API
FastAPI

Agent Core
LangChain

Tool Registry
自定义

Memory System
Redis/PostgreSQL

Planning System
LangChain Plan-and-Execute

Evaluation System
自定义

金融数据工具
yfinance

技术分析工具
Pandas-TA

新闻分析工具
NewsAPI/Hugging Face

交易执行工具
自定义模拟环境

回测工具
自定义模拟环境

数据库服务
PostgreSQL

缓存服务
Redis

监控服务
Prometheus/Grafana

Yahoo Finance
免费历史/延迟行情数据

NewsAPI
免费新闻数据

Hugging Face
免费预训练模型

2.2 核心要素组成

2.2.1 用户交互层核心要素
核心要素 功能描述 技术选型
Web UI 提供可视化的用户交互界面,方便用户与Agent交互、查看模拟账户、查看模拟持仓、查看模拟成交记录、查看回测报告、查看监控数据 React 18 + TypeScript + Ant Design 5
命令行界面(CLI) 提供命令行交互界面,方便开发者测试和调试系统 Click 8
RESTful API 提供标准化的API接口,连接用户交互层和Agent Harness核心层 FastAPI 0.110 + Pydantic 2
2.2.2 Agent Harness核心层核心要素
核心要素 功能描述 技术选型
Agent Core 负责Agent的感知、决策、规划、执行逻辑,是整个框架的核心 LangChain 0.1 + LangChain OpenAI 0.1 + LangChain Community 0.1
Tool Registry 负责管理Agent可以调用的各种工具,支持工具的注册、注销、查询、调用 自定义实现(基于LangChain的BaseTool和Toolkit)
Memory System 负责存储Agent的感知数据、决策历史、执行结果、学习经验等,分为短期记忆和长期记忆 短期记忆:Redis 7 + LangChain Redis Memory;长期记忆:PostgreSQL 16 + SQLAlchemy 2 + LangChain Postgres Chat Message History
Planning System 负责将复杂的目标分解为可执行的子任务,并协调子任务的执行 LangChain Plan-and-Execute Agent框架
Evaluation System 负责评估Agent的性能,实现常用的量化交易性能评估指标 自定义实现(基于Pandas和NumPy)
2.2.3 工具与服务层核心要素
核心要素 功能描述 技术选型
金融数据工具 提供股票列表获取、历史行情数据获取、实时(延迟)行情数据获取、财务数据获取等功能 yfinance 0.2
技术分析工具 提供常用技术指标的计算功能 Pandas-TA 0.3
新闻分析工具 提供股票相关新闻获取、新闻情绪分析等功能 NewsAPI Python Client 2.0 + Hugging Face Transformers 4.40 + PyTorch 2.2
交易执行工具 提供模拟下单、模拟撤单、查询模拟账户、查询模拟持仓、查询模拟成交记录等功能 自定义实现(模拟A股环境)
回测工具 提供极简回测功能,包括策略执行、交易记录生成、性能评估、回测报告生成等功能 自定义实现(基于模拟A股环境)
数据库服务 负责存储长期记忆数据、模拟账户数据、模拟持仓数据、模拟成交记录数据、回测报告数据等 PostgreSQL 16
缓存服务 负责存储短期记忆数据、实时(延迟)行情数据、技术指标数据等,提高系统的响应速度 Redis 7
监控服务 负责监控Agent的运行状态、决策过程、执行结果、风险指标等,并提供可视化的监控界面 Prometheus 2.50 + Grafana 11
2.2.4 外部数据源层核心要素
核心要素 功能描述 访问限制
Yahoo Finance 提供免费的历史行情数据、实时(延迟)行情数据、财务数据等 有访问频率限制,建议使用缓存
NewsAPI 提供免费的新闻数据(需要注册账号) 免费版每天最多获取100篇新闻,有访问频率限制
Hugging Face 提供免费的预训练模型(包括新闻情绪分析模型) 部分模型有商业使用限制,建议使用开源协议宽松的模型(比如DistilBERT-base-uncased-finetuned-sst-2-english)

3. 概念之间的关系

3.1 概念核心属性维度对比

为了更好地理解本文涉及的核心概念之间的差异,我们从决策逻辑、知识来源、适应性、可解释性、开发门槛、应用场景等维度进行对比:

概念 决策逻辑 知识来源 适应性 可解释性 开发门槛 应用场景
规则型Agent 完全基于人工编写的规则 人工编写的规则 差(只能适应规则覆盖的场景) 强(决策逻辑完全透明) 中(需要具备金融知识和编程知识) 简单的、规则明确的场景(比如固定收益类产品的交易)
机器学习型Agent 基于历史数据训练的ML/DL模型 历史数据 中(可以适应训练数据覆盖的场景,但很难适应训练数据未覆盖的场景) 弱(尤其是深度学习模型,决策逻辑很难解释) 高(需要具备金融知识、数学知识、统计学知识和编程知识) 结构化数据处理场景(比如股价涨跌预测)
强化学习型Agent 通过与环境交互(试错)获得奖励,进而学习最优决策策略 历史数据 + 环境交互反馈 强(可以适应环境的变化) 弱(决策逻辑很难解释) 很高(需要具备金融知识、数学知识、统计学知识、强化学习知识和编程知识) 复杂的、动态的场景(比如高频交易)
LLM增强型Agent 结合LLM的推理能力、知识理解能力和自然语言交互能力,以及规则/ML/RL模型的决策能力 人工编写的规则 + 历史数据 + 环境交互反馈 + LLM的预训练知识 很强(可以适应各种复杂的场景,包括非结构化数据处理场景) 中(LLM的推理过程可以通过Prompt Engineering和Chain-of-Thought(CoT)技术进行解释,但规则/ML/RL模型的决策逻辑仍然很难解释) 低中(可以通过自然语言交互降低开发门槛,但要搭建一个可用的系统仍然需要具备编程知识) 各种复杂的金融场景(比如投资顾问、策略生成、风险控制、回测分析等)
AI Agent Harness Engineering 不是一种Agent类型,而是一套为AI Agent提供工程化支持的框架和工具链 - - - 中高(需要具备编程知识和Agent架构知识) 各种AI Agent的开发、测试、部署、监控、迭代

3.2 概念联系的ER实体关系图

为了更好地理解本文涉及的核心概念之间的联系,我们使用ER实体关系图进行描述:

创建

拥有

生成

启动

关联

调用

读写

做出

生成

触发

访问

包含

关联

关联

生成

包含

关联

监控

监控

USER

uuid

user_id

PK

用户唯一标识

string

username

用户名

string

email

邮箱

string

password_hash

密码哈希

datetime

created_at

创建时间

datetime

updated_at

更新时间

SESSION

uuid

session_id

PK

会话唯一标识

uuid

user_id

FK

用户唯一标识

string

agent_type

Agent类型(比如RuleBased/MLBased/RLBased/LLMEnhanced)

json

agent_config

Agent配置

datetime

started_at

启动时间

datetime

ended_at

结束时间

string

status

状态(比如Running/Stopped/Failed)

SIMULATION_ACCOUNT

uuid

account_id

PK

模拟账户唯一标识

uuid

user_id

FK

用户唯一标识

string

name

模拟账户名称

string

description

模拟账户描述

decimal

initial_balance

初始资金

decimal

current_balance

当前资金

decimal

total_assets

总资产(当前资金 + 持仓市值)

decimal

total_profit_loss

总盈亏

decimal

total_profit_loss_rate

总盈亏率

datetime

created_at

创建时间

datetime

updated_at

更新时间

BACKTEST_REPORT

uuid

report_id

PK

回测报告唯一标识

uuid

user_id

FK

用户唯一标识

uuid

agent_id

FK

Agent唯一标识(如果是Agent执行的回测)

string

name

回测报告名称

string

description

回测报告描述

string

stock_code

回测股票代码(如果是单股票回测)

json

stock_list

回测股票列表(如果是多股票回测)

datetime

start_date

回测开始日期

datetime

end_date

回测结束日期

decimal

initial_balance

初始资金

json

strategy_config

策略配置

datetime

created_at

创建时间

AGENT

uuid

agent_id

PK

Agent唯一标识

uuid

session_id

FK

会话唯一标识

string

name

Agent名称

string

description

Agent描述

json

config

Agent配置

datetime

created_at

创建时间

datetime

updated_at

更新时间

SHORT_TERM_MEMORY

uuid

memory_id

PK

记忆唯一标识

uuid

session_id

FK

会话唯一标识

string

type

记忆类型(比如ChatHistory/PerceptionData/DecisionHistory/ExecutionResult)

json

content

记忆内容

datetime

created_at

创建时间

datetime

expires_at

过期时间

TOOL

uuid

tool_id

PK

工具唯一标识

string

name

工具名称

string

description

工具描述

string

type

工具类型(比如FinancialData/TechnicalAnalysis/NewsAnalysis/TradingExecution/Backtesting)

json

config

工具配置

boolean

enabled

是否启用

datetime

created_at

创建时间

datetime

updated_at

更新时间

LONG_TERM_MEMORY

uuid

memory_id

PK

记忆唯一标识

uuid

agent_id

FK

Agent唯一标识

string

type

记忆类型(比如ChatHistory/PerceptionData/DecisionHistory/ExecutionResult/LearningExperience)

json

content

记忆内容

vector

embedding

记忆内容的向量嵌入(用于语义搜索)

datetime

created_at

创建时间

datetime

updated_at

更新时间

DECISION

uuid

decision_id

PK

决策唯一标识

uuid

agent_id

FK

Agent唯一标识

string

type

决策类型(比如Buy/Sell/Hold/AdjustPosition/AdjustStopLossTakeProfit)

json

content

决策内容

string

reasoning

决策推理过程(使用Chain-of-Thought技术生成)

datetime

created_at

创建时间

SIMULATION_ORDER

uuid

order_id

PK

模拟订单唯一标识

uuid

account_id

FK

模拟账户唯一标识

uuid

agent_id

FK

Agent唯一标识(如果是Agent生成的订单)

string

stock_code

股票代码

string

stock_name

股票名称

string

type

订单类型(比如MarketOrder/LimitOrder)

string

side

订单方向(比如Buy/Sell)

integer

quantity

订单数量

decimal

price

订单价格(仅限价单有效)

string

status

订单状态(比如Pending/PartiallyFilled/Filled/Cancelled/Rejected)

integer

filled_quantity

成交数量

decimal

filled_price

成交均价

datetime

created_at

创建时间

datetime

updated_at

更新时间

RISK_ALERT

uuid

alert_id

PK

风险预警唯一标识

uuid

agent_id

FK

Agent唯一标识

uuid

account_id

FK

模拟账户唯一标识

string

type

风险预警类型(比如MaxDrawdownExceeded/PositionConcentrationExceeded/LeverageRateExceeded/StopLossTriggered/TakeProfitTriggered)

string

level

风险预警等级(比如Info/Warning/Error/Critical)

string

message

风险预警消息

json

content

风险预警内容

boolean

resolved

是否已解决

datetime

created_at

创建时间

datetime

resolved_at

解决时间

EXTERNAL_DATA_SOURCE

uuid

source_id

PK

数据源唯一标识

string

name

数据源名称

string

description

数据源描述

string

type

数据源类型(比如FinancialData/News/PreTrainedModel)

string

api_endpoint

API端点(如果是API数据源)

string

api_key

API密钥(如果需要)

json

config

数据源配置

boolean

enabled

是否启用

datetime

created_at

创建时间

datetime

updated_at

更新时间

SIMULATION_POSITION

uuid

position_id

PK

模拟持仓唯一标识

uuid

account_id

FK

模拟账户唯一标识

string

stock_code

股票代码(比如600519.SS)

string

stock_name

股票名称(比如贵州茅台)

integer

quantity

持仓数量

decimal

average_cost

平均成本价

decimal

current_price

当前价格

decimal

market_value

持仓市值

decimal

profit_loss

持仓盈亏

decimal

profit_loss_rate

持仓盈亏率

datetime

created_at

创建时间

datetime

updated_at

更新时间

SIMULATION_TRADE

uuid

trade_id

PK

模拟成交记录唯一标识

uuid

account_id

FK

模拟账户唯一标识

uuid

order_id

FK

模拟订单唯一标识

string

stock_code

股票代码

string

stock_name

股票名称

string

side

成交方向(比如Buy/Sell)

integer

quantity

成交数量

decimal

price

成交价格

decimal

amount

成交金额

decimal

stamp_duty

印花税

decimal

transfer_fee

过户费

decimal

commission

佣金

decimal

total_fee

总费用

datetime

created_at

成交时间

EVALUATION_METRIC

uuid

metric_id

PK

评估指标唯一标识

uuid

report_id

FK

回测报告唯一标识

string

name

评估指标名称(比如AnnualReturn/MaxDrawdown/SharpeRatio/SortinoRatio/WinRate/ProfitLossRatio)

decimal

value

评估指标值

string

description

评估指标描述

MONITORING_METRIC

uuid

metric_id

PK

监控指标唯一标识

string

name

监控指标名称(比如AgentUptime/AgentDecisionCount/AgentOrderCount/AccountTotalAssets/AccountMaxDrawdown/PositionConcentration)

string

type

监控指标类型(比如Gauge/Counter/Histogram/Summary)

string

description

监控指标描述

datetime

collected_at

采集时间

3.3 概念交互关系图

为了更好地理解本文涉及的核心概念之间的交互关系,我们使用交互关系图进行描述:

监控服务 缓存服务 数据库服务 外部数据源 回测工具 交易执行工具 新闻分析工具 技术分析工具 金融数据工具 Memory System Tool Registry Planning System Agent Core RESTful API Web UI 用户 监控服务 缓存服务 数据库服务 外部数据源 回测工具 交易执行工具 新闻分析工具 技术分析工具 金融数据工具 Memory System Tool Registry Planning System Agent Core RESTful API Web UI 用户 alt [调用金融数据工具] [调用技术分析工具] [调用新闻分析工具] [调用交易执行工具] [调用回测工具] loop [执行每个子任务] 输入自然语言请求(比如“帮我分析一下贵州茅台最近的走势,并生成一个低风险交易策略”) 发送自然语言请求 转发自然语言请求 读取短期记忆(会话历史)和长期记忆(相关知识) 读取短期记忆 读取长期记忆 发送目标(比如“分析贵州茅台最近的走势,生成低风险交易策略”) 返回子任务列表(比如“1. 获取贵州茅台最近6个月的历史行情数据;2. 计算贵州茅台的技术指标;3. 获取贵州茅台最近的新闻;4. 分析新闻情绪;5. 结合技术指标和新闻情绪分析贵州茅台的走势;6. 生成低风险交易策略;7. 执行策略回测;8. 生成回测报告”) 查询需要调用的工具 返回工具列表 调用工具 调用 访问Yahoo Finance 返回数据 缓存数据 返回结果 调用 读取历史行情数据 返回技术指标 调用 访问NewsAPI获取新闻 返回新闻 访问Hugging Face获取预训练模型 返回模型 返回新闻情绪分析结果 调用 读取/写入模拟账户/持仓/订单/成交记录 返回结果 调用 读取历史行情数据 读取策略配置/写入回测报告/评估指标 返回回测报告 返回工具执行结果 写入短期记忆和长期记忆 写入短期记忆 写入长期记忆 上报监控指标 返回最终响应 返回最终响应 展示最终响应 确认执行策略(仅模拟环境) 发送执行策略请求 转发执行策略请求 调用交易执行工具生成订单 调用 写入模拟订单 返回订单ID 返回订单ID 写入短期记忆和长期记忆 上报监控指标 返回订单ID 返回订单ID 展示订单ID 访问Yahoo Finance获取实时(延迟)行情数据 返回数据 更新模拟订单状态/写入模拟成交记录/更新模拟账户/更新模拟持仓 上报监控指标 通知订单成交 写入短期记忆和长期记忆 推送订单成交通知(WebSocket) 推送订单成交通知 展示订单成交通知

4. 数学模型和公式

4.1 量化交易性能评估指标

量化交易性能评估指标是评估量化交易策略(或AI Agent)性能的重要依据。本文将实现以下常用的量化交易性能评估指标:

4.1.1 总盈亏(Total Profit/Loss, TPL)

总盈亏是指策略在回测期间或实盘交易期间的总盈利或总亏损,计算公式如下:
TPL=Vfinal−Vinitial TPL = V_{final} - V_{initial} TPL=VfinalVinitial
其中,VinitialV_{initial}Vinitial是初始资金,VfinalV_{final}Vfinal是期末资金(或当前总资产)。

4.1.2 总盈亏率(Total Profit/Loss Rate, TPLR)

总盈亏率是指策略在回测期间或实盘交易期间的总盈亏与初始资金的比值,计算公式如下:
TPLR=Vfinal−VinitialVinitial×100% TPLR = \frac{V_{final} - V_{initial}}{V_{initial}} \times 100\% TPLR=VinitialVfinalVinitial×100%

4.1.3 年化收益率(Annual Return, AR)

年化收益率是指策略在回测期间或实盘交易期间的收益率换算成年化后的收益率,计算公式如下:
假设回测期间或实盘交易期间的天数为TTT,则年化收益率的计算公式为:
AR=(VfinalVinitial)365T−1 AR = \left( \frac{V_{final}}{V_{initial}} \right)^{\frac{365}{T}} - 1 AR=(VinitialVfinal)T3651
如果回测期间或实盘交易期间的交易日数为TtradeT_{trade}Ttrade(中国A股市场每年的交易日数约为250天),则年化收益率的计算公式也可以为:
AR=(VfinalVinitial)250Ttrade−1 AR = \left( \frac{V_{final}}{V_{initial}} \right)^{\frac{250}{T_{trade}}} - 1 AR=(VinitialVfinal)Ttrade2501
本文将使用交易日数计算年化收益率。

4.1.4 日收益率(Daily Return, DR)

日收益率是指策略在每个交易日的收益率,计算公式如下:
假设第ttt个交易日的期末总资产为VtV_tVt,第t−1t-1t1个交易日的期末总资产为Vt−1V_{t-1}Vt1,则第ttt个交易日的日收益率为:
DRt=Vt−Vt−1Vt−1 DR_t = \frac{V_t - V_{t-1}}{V_{t-1}} DRt=Vt1VtVt1

4.1.5 平均日收益率(Mean Daily Return, MDR)

平均日收益率是指策略在回测期间或实盘交易期间的所有日收益率的算术平均值,计算公式如下:
MDR=1Ttrade∑t=1TtradeDRt MDR = \frac{1}{T_{trade}} \sum_{t=1}^{T_{trade}} DR_t MDR=Ttrade1t=1TtradeDRt

4.1.6 日收益率标准差(Standard Deviation of Daily Return, SDR)

日收益率标准差是指策略在回测期间或实盘交易期间的所有日收益率的标准差,用于衡量策略的波动率(风险),计算公式如下:
SDR=1Ttrade−1∑t=1Ttrade(DRt−MDR)2 SDR = \sqrt{\frac{1}{T_{trade} - 1} \sum_{t=1}^{T_{trade}} (DR_t - MDR)^2} SDR=Ttrade11t=1Ttrade(DRtMDR)2

4.1.7 年化波动率(Annual Volatility, AV)

年化波动率是指策略在回测期间或实盘交易期间的日收益率标准差换算成年化后的波动率,计算公式如下:
AV=SDR×250 AV = SDR \times \sqrt{250} AV=SDR×250

4.1.8 最大回撤(Maximum Drawdown, MDD)

最大回撤是指策略在回测期间或实盘交易期间的最大资产净值跌幅,用于衡量策略的最大潜在亏损,计算公式如下:
首先,计算每个交易日的资产净值峰值PtP_tPt
Pt=max⁡0≤i≤tVi P_t = \max_{0 \leq i \leq t} V_i Pt=0itmaxVi
然后,计算每个交易日的回撤DtD_tDt
Dt=Pt−VtPt×100% D_t = \frac{P_t - V_t}{P_t} \times 100\% Dt=PtPtVt×100%
最后,最大回撤MDDMDDMDD就是所有回撤中的最大值:
MDD=max⁡1≤t≤TtradeDt MDD = \max_{1 \leq t \leq T_{trade}} D_t MDD=1tTtrademaxDt

4.1.9 夏普比率(Sharpe Ratio, SR)

夏普比率是指策略在回测期间或实盘交易期间的超额收益率(年化收益率减去无风险利率)与年化波动率的比值,用于衡量策略的风险调整后收益,计算公式如下:
SR=AR−RfAV SR = \frac{AR - R_f}{AV} SR=AVARRf
其中,RfR_fRf是无风险利率(本文将使用中国10年期国债收益率的平均值,约为3%)。

夏普比率越高,说明策略的风险调整后收益越好。一般来说,夏普比率大于1表示策略的风险调整后收益较好,大于2表示策略的风险调整后收益很好,大于3表示策略的风险调整后收益非常好。

4.1.10 索提诺比率(Sortino Ratio, SoR)

索提诺比率是夏普比率的改进版,它只考虑下行波动率(负日收益率的标准差),而不是全部波动率,计算公式如下:
首先,计算下行日收益率DRt−DR_t^-DRt
$$
DR_t^- = \begin{cases}
DR_t, & \text{if } DR_t < 0 \

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐