了解 BlaveClaw 工作区的每个文件与文件夹。
workspace/
├── strategies/ # 你的策略
├── examples/ # 示例策略(参考用)
├── lib/ # 共用函数库
├── manager/ # 投组管理系统
├── cache/ # API 数据缓存(自动生成)
├── references/ # 策略编写与部署指南
└── AGENTS.md # Bot 行为规范
每个策略放在自己的子文件夹。Bot 按 cron 计划执行 strategy.py,并自动写入输出文件。
strategies/
└── my_strategy/
├── strategy.py # 策略逻辑
├── scan.py # 参数扫描(可选)
├── stats.json # 回测结果 + 每日收益
├── state.json # 实时仓位状态
├── pnl.png # 资金曲线图
└── orders.jsonl # 下单记录
所有共用工具都在 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.py | PnL 图表、市场状态分析、滑点分析、随机 B&H 基准 |
param_scan.py | 2D 参数扫描:percentile_thresholds、scan_grid、find_plateau、plot_heatmap |
validation.py | 蒙特卡洛置换检验(mcpt)—— 验证策略统计显著性 |
notify.py | Telegram 发送:make_sender()、send_text()、send_photo() |
manager/ 负责多策略投组优化与订单调仓。删除个别策略时,不要动这个文件夹。
| 文件 | 用途 |
|---|---|
manager.py | 读取所有策略的 stats.json,找出让投组 slope/std 最大的权重,并将最优权重与杠杆写入 portfolio_config.json。运行: python3 manager/manager.py --target-vol 0.30 |
reconciler.py | 每 5 秒轮询一次;检测到策略 state.json 变动后,计算目标仓位(含杠杆)并在交易所下单。运行: python3 manager/reconciler.py |
portfolio_config.json | 由 manager.py 写入。包含权重、杠杆、目标与实际波动率。 |
leverage = target_vol / ann_volatility,使投组实际风险符合目标(例如年化 30% 波动率)。reconciler 下单时,所有仓位大小都乘以此系数。strategy.py ──► state.json ──────────┐
(cron) stats.json ├──► reconciler.py ──► exchange
manager.py ──► portfolio_config.json ┘
Reconciler 同时需要两个来源才能算出下单金额:target = account_value × leverage × weight × position