金融研究平台:Qlib、AI-Trader Bench、OpenAlice、AKQuant

金融智能体:Dexter、RD-Agent、ValueCell、FinanceToolkit、Fincept Terminal之后,本文继续汇总几款开源项目。

Qlib

微软开源(GitHub,44.6K Star,7.1K Fork)量化投资平台,支持全链条AI量化投资流程(数据→模型→回测→交易),官方文档

核心价值:

  • 提供监督学习/强化学习/市场动态建模等完整ML范式支持
  • 覆盖Alpha挖掘、风险评估、组合优化、订单执行等投研全环节
  • 已被多家机构用于实际投资研究,2023年推出企业级功能BPQP

RD-Agent,LLM驱动自动化工厂
#mermaid-svg-SmkFeNY1P0O17tHA{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-SmkFeNY1P0O17tHA .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-SmkFeNY1P0O17tHA .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-SmkFeNY1P0O17tHA .error-icon{fill:#552222;}#mermaid-svg-SmkFeNY1P0O17tHA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-SmkFeNY1P0O17tHA .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-SmkFeNY1P0O17tHA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-SmkFeNY1P0O17tHA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-SmkFeNY1P0O17tHA .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-SmkFeNY1P0O17tHA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-SmkFeNY1P0O17tHA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-SmkFeNY1P0O17tHA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-SmkFeNY1P0O17tHA .marker.cross{stroke:#333333;}#mermaid-svg-SmkFeNY1P0O17tHA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-SmkFeNY1P0O17tHA p{margin:0;}#mermaid-svg-SmkFeNY1P0O17tHA .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-SmkFeNY1P0O17tHA .cluster-label text{fill:#333;}#mermaid-svg-SmkFeNY1P0O17tHA .cluster-label span{color:#333;}#mermaid-svg-SmkFeNY1P0O17tHA .cluster-label span p{background-color:transparent;}#mermaid-svg-SmkFeNY1P0O17tHA .label text,#mermaid-svg-SmkFeNY1P0O17tHA span{fill:#333;color:#333;}#mermaid-svg-SmkFeNY1P0O17tHA .node rect,#mermaid-svg-SmkFeNY1P0O17tHA .node circle,#mermaid-svg-SmkFeNY1P0O17tHA .node ellipse,#mermaid-svg-SmkFeNY1P0O17tHA .node polygon,#mermaid-svg-SmkFeNY1P0O17tHA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-SmkFeNY1P0O17tHA .rough-node .label text,#mermaid-svg-SmkFeNY1P0O17tHA .node .label text,#mermaid-svg-SmkFeNY1P0O17tHA .image-shape .label,#mermaid-svg-SmkFeNY1P0O17tHA .icon-shape .label{text-anchor:middle;}#mermaid-svg-SmkFeNY1P0O17tHA .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-SmkFeNY1P0O17tHA .rough-node .label,#mermaid-svg-SmkFeNY1P0O17tHA .node .label,#mermaid-svg-SmkFeNY1P0O17tHA .image-shape .label,#mermaid-svg-SmkFeNY1P0O17tHA .icon-shape .label{text-align:center;}#mermaid-svg-SmkFeNY1P0O17tHA .node.clickable{cursor:pointer;}#mermaid-svg-SmkFeNY1P0O17tHA .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-SmkFeNY1P0O17tHA .arrowheadPath{fill:#333333;}#mermaid-svg-SmkFeNY1P0O17tHA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-SmkFeNY1P0O17tHA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-SmkFeNY1P0O17tHA .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-SmkFeNY1P0O17tHA .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-SmkFeNY1P0O17tHA .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-SmkFeNY1P0O17tHA .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-SmkFeNY1P0O17tHA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-SmkFeNY1P0O17tHA .cluster text{fill:#333;}#mermaid-svg-SmkFeNY1P0O17tHA .cluster span{color:#333;}#mermaid-svg-SmkFeNY1P0O17tHA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-SmkFeNY1P0O17tHA .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-SmkFeNY1P0O17tHA rect.text{fill:none;stroke-width:0;}#mermaid-svg-SmkFeNY1P0O17tHA .icon-shape,#mermaid-svg-SmkFeNY1P0O17tHA .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-SmkFeNY1P0O17tHA .icon-shape p,#mermaid-svg-SmkFeNY1P0O17tHA .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-SmkFeNY1P0O17tHA .icon-shape .label rect,#mermaid-svg-SmkFeNY1P0O17tHA .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-SmkFeNY1P0O17tHA .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-SmkFeNY1P0O17tHA .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-SmkFeNY1P0O17tHA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-SmkFeNY1P0O17tHA .nodeStyle>*{fill:#f0f4ff!important;stroke:#99a9bf!important;stroke-width:1px!important;}#mermaid-svg-SmkFeNY1P0O17tHA .nodeStyle span{fill:#f0f4ff!important;stroke:#99a9bf!important;stroke-width:1px!important;}#mermaid-svg-SmkFeNY1P0O17tHA .diamondStyle>*{fill:#f0f4ff!important;stroke:#99a9bf!important;stroke-width:1px!important;}#mermaid-svg-SmkFeNY1P0O17tHA .diamondStyle span{fill:#f0f4ff!important;stroke:#99a9bf!important;stroke-width:1px!important;} 输入目标
智能体协作
优化模块
因子挖掘
生成量化因子
模型调优
优化交易模型

三大智能场景:

  • 因子挖掘:从市场/研报自动提取有效因子(中英文演示)
  • 模型优化:端到端优化交易模型参数
  • 研报解析:自动提取研报中的量化信号

技术创新

类别 代表性成果(年份)
强化学习 OPDS/PPO订单执行模型(2022)
时序模型 HIST/IGMTF(2022)
集成学习 DoubleEnsemble(2021)

关键组件:

  • 数据集:Alpha158/Alpha360等标准化金融数据集
  • 执行引擎:支持嵌套交易策略的高频执行
  • 动态适应:DDG-DA概念漂移处理(2022)

框架示意图(Graphviz语法)

graphviz 复制代码
digraph architecture {
	rankdir=LR;
	node [shape=box];
	
	数据层 -> {SQLite, Arctic}
	计算引擎 -> {Dask, Ray}
	ML框架 -> {PyTorch, LightGBM}
	部署 -> {Docker, Azure CLI}
	前端 -> {Jupyter, Streamlit}
}

实战

基于Docker、或源码部署:

bash 复制代码
docker run -it -p 8080:8080 pyqlib/qlib_image_stable
# 源码
git clone https://github.com/microsoft/qlib
cd qlib
pip install -e ".[dev]"  # 安装开发依赖
python scripts/get_data.py qlib_data --region cn # 获取中国数据集

配置在线数据服务(需Azure CLI):qlib-server deploy --mode online

运行LightGBM示例:qrun benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml

量化研究流程
回测引擎 模型库 数据层 QLib 用户 回测引擎 模型库 数据层 QLib 用户 #mermaid-svg-inTaEFzf98z81Jgo{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-inTaEFzf98z81Jgo .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-inTaEFzf98z81Jgo .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-inTaEFzf98z81Jgo .error-icon{fill:#552222;}#mermaid-svg-inTaEFzf98z81Jgo .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-inTaEFzf98z81Jgo .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-inTaEFzf98z81Jgo .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-inTaEFzf98z81Jgo .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-inTaEFzf98z81Jgo .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-inTaEFzf98z81Jgo .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-inTaEFzf98z81Jgo .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-inTaEFzf98z81Jgo .marker{fill:#333333;stroke:#333333;}#mermaid-svg-inTaEFzf98z81Jgo .marker.cross{stroke:#333333;}#mermaid-svg-inTaEFzf98z81Jgo svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-inTaEFzf98z81Jgo p{margin:0;}#mermaid-svg-inTaEFzf98z81Jgo .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-inTaEFzf98z81Jgo text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-inTaEFzf98z81Jgo .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-inTaEFzf98z81Jgo .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-inTaEFzf98z81Jgo .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-inTaEFzf98z81Jgo .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-inTaEFzf98z81Jgo #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-inTaEFzf98z81Jgo .sequenceNumber{fill:white;}#mermaid-svg-inTaEFzf98z81Jgo #sequencenumber{fill:#333;}#mermaid-svg-inTaEFzf98z81Jgo #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-inTaEFzf98z81Jgo .messageText{fill:#333;stroke:none;}#mermaid-svg-inTaEFzf98z81Jgo .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-inTaEFzf98z81Jgo .labelText,#mermaid-svg-inTaEFzf98z81Jgo .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-inTaEFzf98z81Jgo .loopText,#mermaid-svg-inTaEFzf98z81Jgo .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-inTaEFzf98z81Jgo .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-inTaEFzf98z81Jgo .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-inTaEFzf98z81Jgo .noteText,#mermaid-svg-inTaEFzf98z81Jgo .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-inTaEFzf98z81Jgo .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-inTaEFzf98z81Jgo .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-inTaEFzf98z81Jgo .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-inTaEFzf98z81Jgo .actorPopupMenu{position:absolute;}#mermaid-svg-inTaEFzf98z81Jgo .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-inTaEFzf98z81Jgo .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-inTaEFzf98z81Jgo .actor-man circle,#mermaid-svg-inTaEFzf98z81Jgo line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-inTaEFzf98z81Jgo :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 定义研究问题 获取金融数据 返回结构化数据 调用预置模型 输出预测结果 执行策略回测 生成可视化报告

高级功能:

  • 强化学习:示例见examples/rl_order_execution
  • 组合优化:支持Planning-based框架(2021)
  • 高频交易:1分钟级数据处理(2021)

AI-Trader Bench

官网,开源(GitHub,19.8K Star,3K Fork)模块化可配置面向多市场的AI驱动量化交易系统,基于分层架构与MCP协议,打通数学计算、搜索、价格获取与交易执行全链路。通过代理类、MCP工具服务与配置文件系统协同工作,支持美股、A股及加密货币市场。只需切换配置,即可启动对应市场的AI交易代理,实现跨市场高效部署。

架构

#mermaid-svg-QRCNASZaiH8KT2dW{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-QRCNASZaiH8KT2dW .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-QRCNASZaiH8KT2dW .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-QRCNASZaiH8KT2dW .error-icon{fill:#552222;}#mermaid-svg-QRCNASZaiH8KT2dW .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-QRCNASZaiH8KT2dW .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-QRCNASZaiH8KT2dW .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-QRCNASZaiH8KT2dW .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-QRCNASZaiH8KT2dW .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-QRCNASZaiH8KT2dW .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-QRCNASZaiH8KT2dW .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-QRCNASZaiH8KT2dW .marker{fill:#333333;stroke:#333333;}#mermaid-svg-QRCNASZaiH8KT2dW .marker.cross{stroke:#333333;}#mermaid-svg-QRCNASZaiH8KT2dW svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-QRCNASZaiH8KT2dW p{margin:0;}#mermaid-svg-QRCNASZaiH8KT2dW .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-QRCNASZaiH8KT2dW .cluster-label text{fill:#333;}#mermaid-svg-QRCNASZaiH8KT2dW .cluster-label span{color:#333;}#mermaid-svg-QRCNASZaiH8KT2dW .cluster-label span p{background-color:transparent;}#mermaid-svg-QRCNASZaiH8KT2dW .label text,#mermaid-svg-QRCNASZaiH8KT2dW span{fill:#333;color:#333;}#mermaid-svg-QRCNASZaiH8KT2dW .node rect,#mermaid-svg-QRCNASZaiH8KT2dW .node circle,#mermaid-svg-QRCNASZaiH8KT2dW .node ellipse,#mermaid-svg-QRCNASZaiH8KT2dW .node polygon,#mermaid-svg-QRCNASZaiH8KT2dW .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-QRCNASZaiH8KT2dW .rough-node .label text,#mermaid-svg-QRCNASZaiH8KT2dW .node .label text,#mermaid-svg-QRCNASZaiH8KT2dW .image-shape .label,#mermaid-svg-QRCNASZaiH8KT2dW .icon-shape .label{text-anchor:middle;}#mermaid-svg-QRCNASZaiH8KT2dW .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-QRCNASZaiH8KT2dW .rough-node .label,#mermaid-svg-QRCNASZaiH8KT2dW .node .label,#mermaid-svg-QRCNASZaiH8KT2dW .image-shape .label,#mermaid-svg-QRCNASZaiH8KT2dW .icon-shape .label{text-align:center;}#mermaid-svg-QRCNASZaiH8KT2dW .node.clickable{cursor:pointer;}#mermaid-svg-QRCNASZaiH8KT2dW .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-QRCNASZaiH8KT2dW .arrowheadPath{fill:#333333;}#mermaid-svg-QRCNASZaiH8KT2dW .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-QRCNASZaiH8KT2dW .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-QRCNASZaiH8KT2dW .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QRCNASZaiH8KT2dW .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-QRCNASZaiH8KT2dW .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QRCNASZaiH8KT2dW .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-QRCNASZaiH8KT2dW .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-QRCNASZaiH8KT2dW .cluster text{fill:#333;}#mermaid-svg-QRCNASZaiH8KT2dW .cluster span{color:#333;}#mermaid-svg-QRCNASZaiH8KT2dW div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-QRCNASZaiH8KT2dW .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-QRCNASZaiH8KT2dW rect.text{fill:none;stroke-width:0;}#mermaid-svg-QRCNASZaiH8KT2dW .icon-shape,#mermaid-svg-QRCNASZaiH8KT2dW .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QRCNASZaiH8KT2dW .icon-shape p,#mermaid-svg-QRCNASZaiH8KT2dW .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-QRCNASZaiH8KT2dW .icon-shape .label rect,#mermaid-svg-QRCNASZaiH8KT2dW .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QRCNASZaiH8KT2dW .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-QRCNASZaiH8KT2dW .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-QRCNASZaiH8KT2dW :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-QRCNASZaiH8KT2dW .node>*{fill:#e6f7ff!important;stroke:#1890ff!important;stroke-width:2px!important;}#mermaid-svg-QRCNASZaiH8KT2dW .node span{fill:#e6f7ff!important;stroke:#1890ff!important;stroke-width:2px!important;} 配置文件
主程序main.py
代理工厂
BaseAgent
BaseAgentAStock
BaseAgentCrypto
MCP工具客户端
数学工具
搜索工具
价格工具
交易工具
外部数据源
搜索引擎
市场数据API
交易执行

分层架构设计,包含配置层、代理层、工具层和数据层,实现职责清晰分离,显著提升系统的可维护性与可扩展性。其核心由代理类(Agent)、MCP工具服务与配置文件系统构成,通过JSON配置文件定义交易参数,驱动AI模型进行决策,真正实现"配置即策略"的灵活部署。系统支持美股、A股和加密货币三大市场的AI交易,每类市场配备专用代理:BaseAgent(美股)、BaseAgentAStock(A股日线)、BaseAgentCrypto(加密货币),精准匹配不同市场的交易规则与频率需求。

通过FastMCP框架实现工具服务,每个工具作为独立HTTP服务运行,支持高内聚低耦合的模块化设计,支持通过环境变量覆盖配置参数,如INIT_DATE、END_DATE,实现运行时动态配置。

实战

基于源码部署:

bash 复制代码
git clone https://github.com/HKUDS/AI-Trader.git
cd AI-Trader
pip install -r requirements.txt
vim .env
# A股交易流程,依次执行数据准备、MCP服务启动和交易运行脚本
bash main_a_stock_step1.sh && bash main_a_stock_step2.sh && bash main_a_stock_step3.sh
# 验证A股交易代理是否成功运行,检查数据存储目录中是否生成交易日志和持仓记录
python -m cli.main --help

OpenAlice

官网,一款面向个人的开源(GitHub,5.3K Star,849 Fork)AI交易代理工具,定位:个人专属的华尔街工作站,能将研究、量化分析、交易执行、风险管理等全流程能力集成在个人笔记本电脑上,实现24/7不间断运行。

特征:

  • 文件驱动:通过Markdown定义智能体角色和任务、JSON配置参数、JSONL存储对话,无需数据库和容器,仅依靠文件读写完成人机与AI对系统的控制,兼顾易用性和灵活性。
  • 推理驱动:所有交易决策基于持续的逻辑推理和多信号融合,而非简单的规则触发,保障决策的合理性。
  • 系统原生:深度适配操作系统能力,可调用浏览器实现网页搜索、通过Telegram发送消息、连接本地设备,打破应用级别的交互限制。
  • 实验性与风险提示:处于活跃开发阶段,功能和接口可能频繁变更,严禁用于实盘资金交易(除非完全理解并承担风险),开发者不承诺正确性、可靠性和盈利性,也不承担财务损失责任。

核心功能

  1. 多维度交易能力
    • 统一交易账户(UTA):隔离AI与经纪商交互,所有订单基于IBKR类型系统,适配Alpaca/CCXT等经纪商;
    • 类Git交易流程:挂单(stage)-提交(commit)-执行(push),全流程可追溯,支持tradingLog/tradingShow查看历史;
    • 前置安全校验(Guard Pipeline):交易执行前的多重防护,避免违规或高风险操作。
  2. 市场数据与研究能力
    • 全品类市场数据:覆盖股票、加密货币、大宗商品、外汇、宏观数据,提供统一的标的搜索和技术指标计算;
    • 股权研究:公司档案、财务报表、估值比率、分析师预测、财报日历、内幕交易、市场异动(涨幅/跌幅/成交量榜);
    • 新闻管理:RSS源收集+归档检索,支持多维度新闻筛选与阅读。
  3. AI与智能体能力
    • 多AI提供商切换:运行时切换CC/Vercel AI SDK/Agent SDK,无需重启;
    • 认知状态持久化:工作记忆、情绪追踪、提交历史,保障智能体记忆连续性;
    • 进化模式:双权限体系,普通模式仅可操作data/brain/,进化模式可访问全项目(包括Bash),支持AI自修改源码。
  4. 系统级特性
    • 热重载:连接器、交易引擎支持运行时启用、禁用、重连,无需重启系统;
    • 事件日志:JSONL格式的追加式日志,支持实时订阅和崩溃恢复;
    • 跨渠道交互:消息自动分发至最近交互渠道(Telegram/Web UI等),保障交互连贯性。

原理

模块化分层式架构
#mermaid-svg-l56RcTPwO2chVNv1{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-l56RcTPwO2chVNv1 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-l56RcTPwO2chVNv1 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-l56RcTPwO2chVNv1 .error-icon{fill:#552222;}#mermaid-svg-l56RcTPwO2chVNv1 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-l56RcTPwO2chVNv1 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-l56RcTPwO2chVNv1 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-l56RcTPwO2chVNv1 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-l56RcTPwO2chVNv1 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-l56RcTPwO2chVNv1 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-l56RcTPwO2chVNv1 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-l56RcTPwO2chVNv1 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-l56RcTPwO2chVNv1 .marker.cross{stroke:#333333;}#mermaid-svg-l56RcTPwO2chVNv1 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-l56RcTPwO2chVNv1 p{margin:0;}#mermaid-svg-l56RcTPwO2chVNv1 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-l56RcTPwO2chVNv1 .cluster-label text{fill:#333;}#mermaid-svg-l56RcTPwO2chVNv1 .cluster-label span{color:#333;}#mermaid-svg-l56RcTPwO2chVNv1 .cluster-label span p{background-color:transparent;}#mermaid-svg-l56RcTPwO2chVNv1 .label text,#mermaid-svg-l56RcTPwO2chVNv1 span{fill:#333;color:#333;}#mermaid-svg-l56RcTPwO2chVNv1 .node rect,#mermaid-svg-l56RcTPwO2chVNv1 .node circle,#mermaid-svg-l56RcTPwO2chVNv1 .node ellipse,#mermaid-svg-l56RcTPwO2chVNv1 .node polygon,#mermaid-svg-l56RcTPwO2chVNv1 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-l56RcTPwO2chVNv1 .rough-node .label text,#mermaid-svg-l56RcTPwO2chVNv1 .node .label text,#mermaid-svg-l56RcTPwO2chVNv1 .image-shape .label,#mermaid-svg-l56RcTPwO2chVNv1 .icon-shape .label{text-anchor:middle;}#mermaid-svg-l56RcTPwO2chVNv1 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-l56RcTPwO2chVNv1 .rough-node .label,#mermaid-svg-l56RcTPwO2chVNv1 .node .label,#mermaid-svg-l56RcTPwO2chVNv1 .image-shape .label,#mermaid-svg-l56RcTPwO2chVNv1 .icon-shape .label{text-align:center;}#mermaid-svg-l56RcTPwO2chVNv1 .node.clickable{cursor:pointer;}#mermaid-svg-l56RcTPwO2chVNv1 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-l56RcTPwO2chVNv1 .arrowheadPath{fill:#333333;}#mermaid-svg-l56RcTPwO2chVNv1 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-l56RcTPwO2chVNv1 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-l56RcTPwO2chVNv1 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-l56RcTPwO2chVNv1 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-l56RcTPwO2chVNv1 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-l56RcTPwO2chVNv1 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-l56RcTPwO2chVNv1 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-l56RcTPwO2chVNv1 .cluster text{fill:#333;}#mermaid-svg-l56RcTPwO2chVNv1 .cluster span{color:#333;}#mermaid-svg-l56RcTPwO2chVNv1 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-l56RcTPwO2chVNv1 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-l56RcTPwO2chVNv1 rect.text{fill:none;stroke-width:0;}#mermaid-svg-l56RcTPwO2chVNv1 .icon-shape,#mermaid-svg-l56RcTPwO2chVNv1 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-l56RcTPwO2chVNv1 .icon-shape p,#mermaid-svg-l56RcTPwO2chVNv1 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-l56RcTPwO2chVNv1 .icon-shape .label rect,#mermaid-svg-l56RcTPwO2chVNv1 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-l56RcTPwO2chVNv1 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-l56RcTPwO2chVNv1 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-l56RcTPwO2chVNv1 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Scheduling --- what fires
Alice进程---agent运行时+研究
Surfaces --- where users interact
Core --- orchestration
spawns headless run
HTTP
.mcp.json
inbox_push
UTA service --- broker carrier
Trading Git
Guards
Brokers
FX + Snapshots
Domain --- Alice-side
Market Data
Analysis
News
Workspace agent's home

(dir + git + native CLI)
claude/codex/opencode

pi/shell session
Web UI
Inbox tab
MCP Server
ToolCenter

  • Workspace ToolCenter
    InboxStore
    Credential vault

injected into workspaces
UTA SDK

HTTP client
Cron / Webhook

解读:

  1. 核心层(Core)。作为系统的中枢,负责核心能力的调度与管理:
    • ProviderRouter:AI提供商路由,实现不同AI后端的动态切换;
    • AgentCenter:智能体中心,统筹AI代理的核心逻辑;
    • ToolCenter:工具中心,管理所有扩展工具的注册与调用;
    • Session Store:会话存储,维护交互会话状态;
    • Event Log:事件日志,基于JSONL的追加式持久化日志,支持实时订阅和崩溃恢复;
    • ConnectorCenter:连接器中心,管理所有外部交互接口的注册与消息分发。
  2. AI 提供商层(Providers)。提供AI能力的底层支撑,支持运行时动态切换:
    • CC CLI(子进程模式);
    • Vercel AI SDK(进程内模式);
    • Anthropic Agent SDK(@anthropic-ai/claude-agent-sdk
  3. 扩展层(Extensions)。系统功能的核心载体,每个扩展为独立工具包:
    • OpenBB Data(opentypebb):TypeScript原生的市场数据引擎,覆盖股票、加密货币、大宗商品、外汇、宏观数据,提供统一的符号搜索和技术指标计算能力,还可暴露兼容OpenBB的HTTP API;
    • Analysis Kit:分析工具集,支撑各类量化与基本面分析;
    • Unified Trading Account (UTA):统一交易账户,核心交易实体,包含:
    • Trading Git:类Git的交易流程(挂单、提交、执行),每笔提交生成8位哈希,支持历史回溯;
    • Guards:执行前安全校验(最大持仓、冷却时间、标的白名单等);
    • Brokers:经纪商连接(基于 IBKR 类型系统,Alpaca/CCXT 适配兼容);
    • News Collector:新闻收集器,基于可配置RSS源收集新闻,提供globNews/grepNews/readNews等检索工具;
    • Brain:智能体认知状态,包含工作记忆、情绪追踪、提交历史,实现持久化大脑;
    • Browser:浏览器集成,支持网页搜索等系统级交互。
  4. 任务层(Tasks)。负责定时任务与核心触发逻辑:
    • Cron Engine:事件驱动的定时任务系统,由AI驱动任务执行,消息自动分发至最近交互渠道;
    • Heartbeat:心跳机制,定期检查市场状态,通过HEARTBEAT_OK/CHAT_YES/CHAT_NO协议反馈状态。
  5. 接口层(Interfaces)。用户交互的入口,支持多端适配:
    • Web UI:本地聊天界面,支持实时SSE流、子频道(按频道配置AI)、投资组合仪表盘、全维度配置管理(交易、数据源、连接器、AI提供商等);
    • 连接器:Telegram、MCP Ask等外部交互接口,支持运行时热插拔。

技术栈

  • TypeScript:全项目核心开发语言,保障类型安全,适配前端、后端、工具链全场景
  • AI 相关:@anthropic-ai/claude-agent-sdk、Vercel AI SDK、Claude Code CLI;
  • 交易相关:@traderalice/ibkr(IBKR 类型系统)、Alpaca API、CCXT;
  • 市场数据:OpenBB(opentypebb,TypeScript原生封装);
  • 前端/UI:Vite(构建工具)、HTML5、SSE(实时流)、Web UI相关组件;
  • 工程化:pnpm(包管理)、vitest(测试)、Git(版本控制)、Cron(定时任务);
  • 运行时:Node.js(后端)、浏览器(前端)、子进程(Claude Code调用);
  • 数据存储:文件系统(Markdown/JSON/JSONL),无数据库依赖;
  • 通信协议:SSE(实时流)、HTTP(OpenBB API)、自定义连接器协议(Telegram/MCP Ask)
  • 配置文件:
    • tsconfig.json(TypeScript 配置)
    • vitest.config.ts(测试配置)
    • vite.config.ts(前端构建)
    • pnpm-workspace.yaml(多包管理)
bash 复制代码
git clone https://github.com/TraderAlice/OpenAlice.git                  
cd OpenAlice
pnpm install
pnpm start
pnpm dev

可选:配置经纪商API(IBKR/Alpaca/CCXT)、Telegram Bot Token(如需Telegram连接器)、AI提供商密钥(Claude/Anthropic)。

ai-provider.json:配置AI提供商(Claude Code/Vercel AI SDK/Agent SDK);

交易配置:UTA信息、经纪商API密钥、Guard规则(最大持仓、标的白名单等);

数据源配置:OpenBB数据来源、RSS新闻源等;

连接器配置:Telegram/MCP Ask 密钥、Web UI端口等。

浏览器打开http://localhost:5173开始体验。

AKQuant

开源(GitHub,1.5K Star,199 Fork)Python量化投研(回测)项目,官方文档

指标名 含义 单位/类型 计算说明
start_time 回测开始时间 Datetime 对应回测数据的第一个Bar的时间
end_time 回测结束时间 Datetime 对应回测数据的最后一个Bar的时间
duration 回测总时长 Timedelta end_time-start_time
total_bars 总Bar数量 Int 回测经历的K线总数
trade_count 交易笔数 Int 完成平仓的交易总数(Round-trip)
initial_market_value 初始市值 Float 初始资金(通常为Cash)
end_market_value 结束市值 Float 回测结束时的总资产(Cash+持仓市值)
total_pnl 总盈亏 Float end_market_value-initial_market_value
unrealized_pnl 未实现盈亏 Float 结束时持仓的浮动盈亏
total_return_pct 总收益率 %(百分比) (结束市值-初始市值)/初始市值*100
annualized_return 年化收益率 Ratio(小数) (1+总收益率)^(1/年数)-1
volatility 年化波动率 Ratio(小数) 收益率标准差*sqrt(252)
total_profit 总盈利 Float 所有盈利交易的盈利之和
total_loss 总亏损 Float 所有亏损交易的亏损之和
total_commission 总手续费 Float 交易产生的总佣金
max_drawdown 最大回撤比率 Ratio(小数) 历史最大回撤幅度
max_drawdown_value 最大回撤金额 Float 历史最大回撤的绝对金额
max_drawdown_pct 最大回撤百分比 %(百分比) max_drawdown*100
win_rate 胜率 %(百分比) 盈利次数/总交易次数*100
loss_rate 败率 %(百分比) 亏损次数/总交易次数*100
winning_trades 盈利次数 Int 盈利大于0的交易次数
losing_trades 亏损次数 Int 盈利小于0的交易次数
avg_pnl 平均盈亏 Float 每笔交易的平均净盈亏
avg_return_pct 平均收益率 %(百分比) 每笔交易收益率的平均值
avg_trade_bars 平均持仓K线数 Float 平均每笔交易持有的Bar数量
avg_profit 平均盈利 Float 盈利交易的平均金额
avg_profit_pct 平均盈利比例 %(百分比) 盈利交易的平均收益率
avg_winning_trade_bars 平均盈利持仓时长 Float 盈利交易的平均持仓Bar数
avg_loss 平均亏损 Float 亏损交易的平均金额
avg_loss_pct 平均亏损比例 %(百分比) 亏损交易的平均收益率
avg_losing_trade_bars 平均亏损持仓时长 Float 亏损交易的平均持仓Bar数
largest_win 最大单笔盈利 Float 单笔交易的最大盈利金额
largest_win_pct 最大单笔盈利比例 %(百分比) 单笔交易的最大收益率
largest_win_bars 最大盈利持仓时长 Float 产生最大盈利那笔交易的持仓Bar数
largest_loss 最大单笔亏损 Float 单笔交易的最大亏损金额
largest_loss_pct 最大单笔亏损比例 %(百分比) 单笔交易的最大亏损率
largest_loss_bars 最大亏损持仓时长 Float 产生最大亏损那笔交易的持仓Bar数
max_wins 最大连续盈利次数 Int 连续盈利的最多次数
max_losses 最大连续亏损次数 Int 连续亏损的最多次数
sharpe_ratio 夏普比率 Ratio (年化收益率-无风险利率)/年化波动率。无风险利率默认0
sortino_ratio 索提诺比率 Ratio (年化收益率-无风险利率)/下行波动率。只考虑下行风险
profit_factor 盈亏比 Ratio 总盈利/abs(总亏损)
ulcer_index 溃疡指数 Ratio 衡量回撤深度和持续时间的指标
upi 溃疡绩效指数 Ratio (年化收益率-无风险利率)/溃疡指数
equity_r2 权益曲线R² Ratio 权益曲线相对于时间的线性回归拟合度(0-1),越接近1表示收益越稳定
std_error 标准误差 Float 权益曲线回归的标准误差
calmar_ratio 卡尔玛比率 Ratio 年化收益率/最大回撤比率
exposure_time_pct 市场暴露时间百分比 %(百分比) 持有仓位(非空仓)的时间占比
var_95 95%风险价值 Ratio(小数) 95%置信度下的每日最大亏损比例
var_99 99%风险价值 Ratio(小数) 99%置信度下的每日最大亏损比例
cvar_95 95%条件风险价值 Ratio(小数) 超过95%VaR阈值后的平均亏损比例(预期亏损)
cvar_99 99%条件风险价值 Ratio(小数) 超过99%VaR阈值后的平均亏损比例(预期亏损)
sqn 系统质量指数(SQN) Float (平均盈亏/盈亏标准差)*sqrt(交易次数)
kelly_criterion 凯利公式比例 Ratio(小数) 胜率-(败率/盈亏比)

解读:

  • 风险类

    • 最大回撤(Max Drawdown):衡量策略在最坏情况下的表现。例如30%的最大回撤意味着如果你在最高点买入,最多可能会亏损30%。通常认为最大回撤越小越好。
    • 波动率(Volatility):衡量收益的不确定性。波动率越高,收益起伏越大。
    • 风险价值(VaR)与条件风险价值(CVaR):
      • VaR(Value at Risk):在特定置信度下(如95%),策略在一天内可能发生的最大损失。
      • CVaR(Conditional VaR):又称Expected Shortfall,衡量当损失超过VaR时的平均损失。比VaR更能反映极端尾部风险。
    • 市场暴露时间(Exposure Time):策略持有头寸(非空仓)的时间占比。低暴露时间意味着资金大部分时间是安全的(现金),但也可能错失机会。
  • 收益风险比类

    • 夏普比率(Sharpe Ratio):投资界的"性价比"指标。它衡量的是每承担一单位总风险,产生了多少超额收益。通常大于1是可接受的,大于2是非常优秀的。
    • 索提诺比率(Sortino Ratio):类似于夏普比率,但只考虑"有害的波动"(下行波动)。如果一个策略经常暴涨(上行波动大),夏普比率可能会低估它,而索提诺比率则更公允。
    • 卡尔玛比率(Calmar Ratio):年化收益率与最大回撤之比。衡量"收益回撤比",是很多基金经理非常看重的指标。
    • 系统质量指数(SQN):衡量交易系统的稳定性。SQN越高,越容易通过加大仓位来获利。一般认为>2.0为合格,>3.0为优秀,>7.0为圣杯。
    • 凯利公式(Kelly Criterion):基于胜率和盈亏比计算的理论最佳仓位比例。注意凯利公式通常过于激进,实盘中常使用半凯利(Half-Kelly)甚至更低比例。

实战

安装:pip install akquant akshare

py 复制代码
import akshare as ak
from akquant import Strategy, run_backtest

# 1. 准备数据,利用AKShare来获取数据
df = ak.stock_zh_a_daily(symbol="sh600000", start_date="20250101", end_date="20260212")

# 2. 策略定义
class MyStrategy(Strategy):
    # 3. 策略逻辑
    def on_bar(self, bar):
        # 获取当前持仓
        current_pos = self.get_position(bar.symbol)
        # 1. 当收盘价 > 开盘价 (阳线) -> 买入
        if current_pos == 0 and bar.close > bar.open:  
            self.buy(bar.symbol, 100)  # 买入 100 股

        # 2. 当收盘价 < 开盘价 (阴线) -> 卖出
        elif current_pos > 0 and bar.close < bar.open:
            self.close_position(bar.symbol)  # 卖出所有持仓

# 3. 运行回测
print("开始回测...")
result = run_backtest(
    data=df,  # 输入数据
    strategy=MyStrategy,  # 输入策略
    cash=100000.0,  # 初始资金
    symbol="sh600000"  # 交易的股票代码
)
# 4. 查看结果
print(result)  # 跟 print(result.metrics_df) 等效
# 查看详细的成交指标
print(result.trades_df)
# 查看详细的订单指标
print(result.orders_df)
# 查看详细的持仓指标
print(result.positions_df)

result.trades_df包含每笔平仓交易的详细信息。

指标名 含义 单位/类型 计算说明
symbol 标的代码 String 交易标的
entry_time 开仓时间 Datetime 开仓成交时间
exit_time 平仓时间 Datetime 平仓成交时间
entry_price 开仓均价 Float 开仓成交均价
exit_price 平仓均价 Float 平仓成交均价
quantity 交易数量 Float 成交数量
side 交易方向 String long(做多)或short(做空)
pnl 毛盈亏 Float 不包含手续费的盈亏
net_pnl 净盈亏 Float pnl-commission
return_pct 收益率 Float 交易收益率(小数)
commission 手续费 Float 交易产生的佣金
duration_bars 持仓K线数 Int 持仓期间经历的Bar数量
duration 持仓时长 Timedelta exit_time-entry_time

result.orders_df包含所有历史订单记录(包括已成交、取消、拒绝等)。

指标名称(Name) 含义(Description) 单位/类型 计算说明
id 订单ID String 唯一标识符
symbol 标的代码 String 交易标的
side 订单方向 String buy(买入)或sell(卖出)
order_type 订单类型 String market(市价),limit(限价),stop(止损)
quantity 订单数量 Float 下单数量
filled_quantity 成交数量 Float 实际成交数量
limit_price 限价 Float 限价单的价格(Market单为NaN)
stop_price 触发价 Float 止损单的触发价格
avg_price 成交均价 Float 实际成交的平均价格
commission 手续费 Float 订单产生的手续费
status 订单状态 String filled,cancelled,rejected
time_in_force 有效期 String gtc,day,ioc
created_at 创建时间 Datetime 订单创建时间

result.positions_df包含每日(或每Bar)持仓快照。

指标名称(Name) 含义(Description) 单位/类型 计算说明
date 日期 Datetime 持仓快照时间
symbol 标的代码 String 交易标的
long_shares 多头持仓 Float 多头方向的持仓数量
short_shares 空头持仓 Float 空头方向的持仓数量
close 收盘价 Float 当时的收盘价
equity 账户权益 Float 包含持仓盈亏的账户总权益
market_value 持仓市值 Float 当前持仓的市场价值
margin 占用保证金 Float 当前持仓占用的保证金
unrealized_pnl 未实现盈亏 Float 持仓浮动盈亏