功能特色
标准化持仓管理
让交易代理拥有自己的持仓——知道当前该持什么、和目标差多少、为什么这么持,从「一次性出主意」变成「连续经营一个组合」。
一个不知道自己持了什么的交易代理,只是一个「每次都从零开始的选股器」:这一轮让你买 A,下一轮让你买 B,两轮之间没有连续性,更谈不上加仓、减仓、调仓——因为这些动作的前提,是它得先知道自己有仓。
标准化持仓管理,就是给代理这份「自己的持仓」。 有了它,代理才从「一次性出主意」变成「能连续经营一个组合的交易主体」。
为什么要给代理它自己的持仓
持仓,本质上是代理的状态。有了状态,它的每一步决策才建立在上一步之上,而不是自相矛盾、反复重来:
- 它知道当前持什么、该持什么,才谈得上「往目标调」,而不是每轮推倒重来;
- 它记得为什么这么持,下一个判断才接得住上一个判断,决策是连贯的;
- 它有完整的变更历史,复盘时追得到决策链——人也才敢把仓位这件事交给它。
一句话:持仓管理是让代理具备「连续经营组合」能力的地基。没有它,代理没有记忆、没有立场,只能一次次拍脑袋;有了它,代理才是一个对自己的仓位负责、可被追溯的交易主体。
一套账,三个问题永远有答案
Bastix 用一套标准化的持仓模型贯穿研究与执行:代理的目标仓位、当前仓位、变更历史都落到同一份账本上,而不是散落在各处的临时数字。三份东西出自一处,因此永远对得上。
这套账要回答的,就是仓位管理最核心的三个问题:
- 我现在该是什么仓位(目标)
- 和现在差多少(现状)
- 为什么一步步变成现在这样(历史)
代理怎么管持仓
代理通过 strategy_position 读写仓位,目标与现状分离、每次调整留痕:
- 设定目标仓位:代理为标的写入目标持仓,并附上调整理由。每次写入都追加一条带时间戳的记录,历史留痕、不覆盖。
- 查询当前仓位:随时读取每只标的最新的目标持仓,即「现在应该是什么仓位」。
- 回看变更历史:按时间倒序读取调整流水,配合每次都必填的理由,回看「仓位是怎么一步步变成现在这样、每次为什么调」。
配套的标的池(symbol_pool)负责组织标的,支持增删、解析与去重;条件选股的结果可以直接沉淀为标的池,供后续节点复用。标的代码在写入时统一归一化(裸代码 / 带交易所后缀 / 各类别名),同一只标的在不同环节指向同一个对象,不会因为写法不同而在账本里裂成两条。
沙箱级隔离
持仓账本按代理 沙箱 隔离,每次运行、每个投研任务的仓位状态互不干扰,不会串到其他策略上。
这让「我现在该是什么仓位、和目标差多少、为什么变成现在这样」始终有据可查——代理因此能连续地经营一个组合,而不是每次都从头再来。