工作区结构

了解 Blave Agent 工作区的每个文件与文件夹。

目录概览

workspace/
├── strategies/          # 你的策略
├── examples/            # 示例策略(参考用)
├── lib/                 # 共用函数库
├── manager/             # 投组管理系统
├── cache/               # API 数据缓存(自动生成)
├── references/          # 策略编写与部署指南
└── AGENTS.md            # Bot 行为规范

strategies/

每个策略放在自己的子文件夹。Bot 按 cron 计划执行 strategy.py,并自动写入输出文件。

strategies/
└── my_strategy/
    ├── strategy.py      # 策略逻辑
    ├── scan.py          # 参数扫描(可选)
    ├── stats.json       # 回测结果 + 每日收益
    ├── state.json       # 实时仓位状态
    ├── pnl.png          # 资金曲线图
    └── orders.jsonl     # 下单记录

lib/

所有共用工具都在 lib/。从这里 import,不要在策略文件中重复实现。

文件用途
runner.py统一回测与实时执行器(Type A 与 C)
data.py所有数据获取——K 线、Alpha 指标、台股、期货
execute.py实时状态管理:加载/保存/更新仓位、下单记录
pnl.py将每日收益写入 stats.json;为 manager 加载所有策略
portfolio.py汇总目标仓位、计算差值、执行 reconcile
strategy.py波动率 targeting 工具:add_realized_vol、apply_vol_scaling
analysis.pyPnL 图表、市场状态分析、滑点分析、随机 B&H 基准
param_scan.py2D 参数扫描:percentile_thresholds、scan_grid、find_plateau、plot_heatmap
validation.py蒙特卡洛置换检验(mcpt)—— 验证策略统计显著性
notify.pyTelegram 发送:make_sender()、send_text()、send_photo()

manager/

manager/ 负责多策略投组优化与订单调仓。删除个别策略时,不要动这个文件夹。

文件用途
manager.py读取所有策略的 stats.json,找出让投组 slope/std 最大的权重,并将最优权重与杠杆写入 portfolio_config.json
运行:python3 manager/manager.py --target-vol 0.30
reconciler.py每 5 秒轮询一次;策略 state.json、下单金额或下单开关变动时对账(每 5 分钟另有保底轮),下单抹平目标与实际部位的差额。
运行:bash manager/start_reconciler.sh
flatten.py把所有已连接交易所的持仓全部市价平掉(工作区「全部平仓」按钮跑的就是它)。执行前会先挂上下单开关,平仓后不会再开新仓。
运行:python3 manager/flatten.py
portfolio_config.json每个策略的下单金额(实盘仓位计算基准)、交易所路由,以及优化器的权重与杠杆。一律由工具维护——绝不手改。
orders.jsonl交易历史——每笔已执行订单一行,逐腿记录交易所返回的成交价与数量。工作区「交易历史」标签页读的就是这个文件。
金额与权重:优化器的权重与杠杆是建议配置;真正决定实盘仓位的是每个策略的下单金额(target = amount × position),从工作区「下单设置」页保存。

数据流

strategy.py ──► state.json ──────────┐
   (cron)       stats.json           ├──► reconciler.py ──► exchange
manager.py ──► portfolio_config.json ┘

Reconciler 同时需要两个来源才能算出下单金额:target = amount × position