Skip to content

v0.6.0

Latest

Choose a tag to compare

@anyongjin anyongjin released this 15 Oct 14:53
· 2 commits to main since this release

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 读取同一份 YAML run_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 数据,归零结算后释放。
  • 实盘修复:
    • 本地订单同步在回退处理前,先按交易所订单 ID 刷新已提交的平仓单,避免平仓单已在交易所成交但成交推送未到达时,错误平掉其他订单(#168)。
    • 账户余额距上次主动拉取超过 1 小时,会在下单或展示钱包前重新拉取,避免 WebSocket 余额静默漂移(#184)。

数据与运行架构

  • 任务级 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