Repository navigation
v0.6.0
v0.6.0 是 0.6 系列首个正式版本,整合了 v0.6.0-beta.1 至 v0.6.0-beta.12 的全部内容及之后的实盘修复。以下以上一个正式版本 v0.5.8 为基线,说明升级后的完整变化。
亮点
- 截面与多因子引擎:在原时序策略引擎之外,新增因子计算图、研究、回测和实盘能力;时序与因子策略可以在同一配置、同一账户中混合运行。
- 共享账户执行:多策略共享执行账户,按策略资本预算、净额执行与订单归因,支持检查点恢复、启动对账和迁移。
- 统一运行架构:任务级 Runtime 与统一 RunSpec,统一历史与实时数据的订阅、初始化和生命周期。
- 统一命令入口:
backtest/trade读取同一份 YAMLrun_policy,自动选择时序、因子或混合引擎。 - WebUI 双引擎支持、新增 Ulcer Index / UPI 风险指标,以及全面的依赖安全升级。
截面与多因子引擎
- 因子图提供时序与截面算子、多列因子输出、组合构建以及 Full / Patch 目标组合。因子可以用 YAML 表达式编写(启动时编译为原生计算图),也可以注册 Go 因子策略和自定义组合构建器。
- 内置 18 类常用技术指标、共 22 个可独立引用的输出:SMA、RMA、WMA、VWMA、RSI、ROC、MOM、MACD(线/信号/柱)、CCI、Stoch、Williams %R、TR、ATR、布林带、滚动 Highest / Lowest、OBV、MFI。Batch 与持续运行的 Session 共用 banta 的指标定义;缺失、NULL、非数值输入不推进指标状态。详见指标指南。
- 因子回测提供
weights(近似权重账本)和events(事件执行)两种模式,默认events;混合回放必须使用events。 - 新增
Result.IncompleteStreams诊断,按 SID、Source、TimeFrame 汇总缺失与无效数据,区分数据未到达和不符合网格要求;不完整快照仍拒绝部分横截面计算。
组合与持仓生命周期
- 显式
portfolio.policy: lifecycle-v1将调仓、选股、持有期限、过渡与资金配置拆分,支持 direct、linear-exit、cohort、geometric、target-step 等过渡方式。 - 支持按首次真实成交计龄、最短/最长持有、排名缓冲、分位/分组配额、单币覆盖、重入和冷却。
- 版本化 allocation 目标区分 NAV 权重与精确资产数量;quantity 退出不会在 NAV 上涨或外部减仓后被买回。
- target-step 对新旧资产统一按 alpha 插值,新资产从零权重开始;alpha=1 时旧资产会正确归零。
- 详见组合指南。
研究工具
- 根命令
research支持标签成熟、IC 诊断,以及等权、固定权重、历史 IC / RankIC / ICIR / EWMA 等组合方式,并提供样本与质量门槛、排名自相关。 - 新增 MAD winsorize、robust zscore、多暴露 OLS/WLS 中性化及分组表达式;多 horizon 共用冻结 Frame。
- Go 接口提供有界参数扫描、PIT 参数收缩、trial ledger、随机基线、模型 fit/predict、滚动 purge/embargo、协方差与风险优化等可扩展基线。
- 新增统计套利数值工具(回归、平稳性/协整检验、价差、在线估计等);历史 research / weights / events 支持显式 source-event 决策时钟。paper 账户支持现金结算欧式期权;CrossVenuePaper 是独立的研究模拟器。详见统计套利指南。
共享账户执行与实盘
- 共享执行账户支持策略资本预算、净额执行、归属分配、保证金与风险约束、订单桥接、结算与幂等处理,提供内存和 SQLite 执行存储。
- 同一账户下的时序与因子策略自动装配共享订单桥和资本预算;独立时序账户单独启动,未指定账户的旧时序策略仍展开到活跃生产账户。
- 实盘启动会验证数据、交易接口和账户能力,证据不足时明确拒绝启动,不自动降级为 paper;预算来自对账后的真实账户。
- 实盘订阅自动保留持仓、在途订单和活跃批次所需的价格 / funding 数据,归零结算后释放。
- 实盘修复:
数据与运行架构
- 任务级 Runtime 与统一 RunSpec 管理任务状态、时钟、账户、订阅、计算会话及 Stop / Join 生命周期;兼容的消费者可以共享计算,同时保持账户与策略状态独立。
- 统一历史与实时数据的订阅规划、初始化、分页预算和订阅代际。
- 因子版本记录、不可变归档与决策快照按当时可见数据计算,区分严格 PIT 与明确声明的最新值近似。
- 继续统一使用
DataSeries.Values map[string]any传递 K 线和自定义数据,保留字段类型、NULL 与缺失键语义。 - QuestDB:新增元数据迁移、WAL 可见性等待与恢复标记;WAL 查询改用
sequencerTxn/writerTxn/suspended,兼容 QuestDB 9.3.2。 - 配置离线市场快照时直接使用快照初始化,不再请求在线市场;快照 SHA-256 不匹配时直接失败。
命令与配置
| 旧入口(beta 早期) | 新入口 |
|---|---|
factor backtest |
backtest |
factor trade |
trade |
factor research |
research |
factor archive |
data archive |
factor validate / factor explain |
validate / explain |
- v0.5 标准 YAML 配置保持原名称和位置,可以直接使用。 普通加载只读,不会自动迁移或改写配置文件。
- 未声明
engine的旧策略按时序引擎运行;显式engine: time_series/factor启用新的策略身份、账户与资本预算语义。 - 因子字段直接写在
run_policy[];账户凭据与执行覆盖放在根accounts,公共执行默认值放在execution,公共数据设置放在data。 - 策略配置统一使用 YAML,不再接受 runner JSON 配置或
run_policy[].config包装。 - 因子或混合配置的
trade --dry-run使用历史数据进行events回放;纯时序实时模拟继续使用env: dry_run。
升级说明见配置兼容性对比,完整示例见 config.yml。
回测报告
- 新增 Ulcer Index(UI)与 Ulcer Performance Index(UPI / Martin Ratio):基于未平滑的每日 UTC 净值计算,覆盖回测摘要、品种 / 入场 / 出场分组、任务列表、优化日志及 CSV / Excel 导出。无法计算时显示为
--/N/A,无需数据库或配置迁移。公式说明见 ulcer_metrics_sources.md。 - 回测中途报告不再执行最终资金守恒校验,避免持仓保证金和挂单占款导致误报。
WebUI 与 Dashboard
- 新建回测页展示已注册的因子定义和组合构建器,支持多文件 YAML 编辑;新增
strategy_catalog和backtest_preflight接口,可在不连接数据库、不创建账户的情况下做静态配置检查。 - 因子回测结果展示统一报告的 Book、Summary、Manifest 与错误信息;未完成的报告不会把未初始化的净值显示为零。
- Dashboard 数据查看器绑定当前机器人的 Runtime;任意时序字段区分缺键、NULL、0、false、空字符串和 JSON,大整数精确解码。
- 配置保存支持摘要冲突检测与原子写入;回测报告适配桌面和移动端。
- 从资源管理器双击启动时可以正常打开 Web UI(#166)。
依赖与环境
- 最低 Go 版本 1.26.0,推荐 1.26.8(Docker 构建同步)。依赖 banexg v0.2.65、banta v0.4.1。
- 后端升级 pgx、SQLite、Fiber、Eino、validator、zap 等;前端升级 SvelteKit、Svelte、Vite、Tailwind、DaisyUI、TypeScript 等稳定版本。
- 根模块不再误引入
banstrats依赖;tmp/使用独立模块,go mod tidy不再扫描临时实验。
行为变化与升级提示
- 统一入口的因子回测默认
events模式;需要权重账本行为时请传入--mode weights或配置execution.mode: weights。 - 使用 target-step 且 alpha < 1 的策略,首次建仓也会渐进投入,历史回测结果可能变化。
- 部分 Go 分组计划 hash 因显式采样合同而变化,旧 manifest / checkpoint 和历史结果应重新验证。
- 已有 paper store 不是可以直接安全重启的账户恢复快照。
- source-event 与 history-IC 暂不支持实盘;实盘支持范围仍为文档规定的线性永续合约,期权与跨场所模拟仅用于研究。
版本与资源
- 后端
Version与前端UIVersion均为 v0.6.0;dist.zip为重新构建的前端资源,供 WebUI / Dashboard 自动下载。 - 附件:Windows / Linux amd64 程序、
dist.zip、build-info.json及 SHA-256 校验文件。
验证
- 使用
GOWORK=off与已发布依赖:go test ./... -count=1、go vet ./...、go mod verify通过。 - 前端生产构建通过;Windows / Linux amd64 构建通过(
CGO_ENABLED=0),Windows 程序输出banbot v0.6.0。 - 未进行真实交易所与外部数据库的端到端验收。
完整源码对比:v0.5.8 → v0.6.0