股票持仓管理方法
股票持仓管理不只是计算占比,还要明确账本责任人、目标版本、变更依据、数据例外、外部成交核对和定期复盘,才能让每次调整都可追溯。本文提供四张台账、状态流转以及缺价和不可交易对象的治理方法,帮助建立可复核的持仓记录流程,不给具体仓位建议。
股票持仓管理首先是治理问题,然后才是计算问题。一套可用制度要说明:谁提出目标、依据是什么、谁能修改、数据异常时谁处理、真实成交以哪里为准、多久复核一次、错误如何更正。
Bastix 可以保存沙箱策略账本中的目标或当前仓位、标的、仓位比例、变更时间和原因。但这本账不是券商持仓、委托回报或资金流水,不能承担真实账户对账。怎样核对这些策略记录,见持仓分析工具;本页只讲管理制度与责任链。1
先把三本账分开
| 账本 | 唯一用途 | 责任来源 | 禁止混入 |
|---|---|---|---|
| 研究目标账 | 保存研究对象、目标版本、理由、证据与例外 | 研究负责人或策略智能体,用户复核 | 未确认的真实成交和账户余额 |
| 券商事实账 | 保存真实数量、成交、费用、现金和账户状态 | 券商正式记录 | 模型推测、模拟交易、研究目标 |
| 证据档案 | 保存公告、数据快照、会议决定、更正说明 | 材料所有者与复核人 | 无来源截图、过期链接、无法识别版本的结论 |
三本账可以相互引用,但不能把字段复制后丢掉来源。例如研究目标变更可以引用券商成交编号;没有成交编号时,状态只能是“待外部核对”,不能写成“已调仓”。
四张台账构成最小管理系统
1. 组合主表:定义对象和责任
| 字段 | 填写规则 |
|---|---|
portfolio_id | 永久唯一,不用组合名称代替 |
portfolio_name | 可读名称;改名不改变 ID |
purpose | 研究、模拟、真实账户对账三选一 |
base_currency | 组合基础币种 |
owner | 最终责任人 |
editor_list | 可以提出或写入变更的人 |
reviewer | 定期复核人,不能与所有编辑者完全重合 |
source_of_truth | 研究账本、券商名称或文件路径 |
review_cycle | 每日、每周、月度或事件触发 |
retention_rule | 历史与证据保留规则 |
status | draft、active、frozen、closed |
若 purpose=研究,页面必须显示“非真实账户”;若 purpose=真实账户对账,必须填写券商或托管记录作为事实来源。
2. 目标与变更表:每次修改都形成新记录
| 字段 | 含义 |
|---|---|
change_id | 本次变更唯一编号 |
submitted_at / submitted_by | 提交时间与提交者 |
symbol | 归一化后的完整代码 |
previous_target | 修改前目标;首次建立可为空 |
proposed_target | 提议目标,不代表平台建议 |
reason | 可读的变更原因 |
evidence_refs | 公告、数据快照、研究记录等来源编号 |
data_as_of | 形成提议时的数据截止时间 |
review_status | pending、approved_for_ledger、rejected、needs_information |
reviewed_by / reviewed_at | 复核人和时间 |
ledger_write_ref | 写入策略账本后的记录编号 |
broker_execution_ref | 真实执行编号;没有真实执行则必须为空 |
“批准写入研究账本”和“批准真实交易”是两种不同状态。本模板只定义前者,不设计交易审批,也不提供目标比例判断。
3. 数据例外表:把未知从结果里拆出来
| 字段 | 示例状态 |
|---|---|
exception_id | PX-20260814-001 |
detected_at | 发现时间 |
scope | 标的、现金、价格、企业行为、权限或代码映射 |
error_type | price_missing、stale_data、duplicate_symbol、cash_mismatch、corporate_action_unknown |
affected_outputs | 当前权重、净值、集中度或报告 |
last_good_as_of | 最近一次可确认数据时间 |
temporary_action | 留空结果、冻结变更、改用正式来源等 |
owner / due_at | 处理人和期限 |
resolution | 修复方式和证据 |
closed_by / closed_at | 关闭人和时间 |
例外未关闭前,受影响结果应显示“不可用”或“部分可用”。0 是一个数值,不是缺失状态;不能用零填充未知价格、未知现金或未知仓位。
4. 复核与更正表:不覆盖旧值
| 字段 | 用途 |
|---|---|
review_id、period | 标识复核批次和期间 |
expected_records / actual_records | 应有记录与实际记录数量 |
open_exceptions | 未关闭例外编号 |
broker_reconciled | 是否与券商事实账核对;研究组合填“不适用” |
rule_version | 本期采用的数据与管理规则版本 |
corrections | 更正编号列表 |
review_result | pass、pass_with_exceptions、rework |
reviewer、reviewed_at | 复核责任链 |
发现错误时新增一条更正记录,包含旧值、新值、原因、影响范围和复核人。不要直接覆盖旧记录,否则后续无法解释历史报表为什么改变。
状态流转:目标不是写完就结束
草稿
↓ 字段完整
待复核
├─→ 退回补证 ─→ 待复核
├─→ 拒绝(终态)
└─→ 批准写入研究账本
↓ 写入并核对记录编号
已记录
↓ 定期复核或事件触发
继续 / 修订 / 关闭如果需要真实交易,已记录 后另行进入券商或机构批准的交易流程。Bastix 内置能力没有券商连接或真实下单,研究账本写入成功不能作为成交证明。2
一次变更的管理时间线
以下用“示例甲”说明记录顺序,不提供任何具体目标比例。
| 时间 | 事件 | 应写入的对象 |
|---|---|---|
| 周一 08:50 | 研究负责人发现新公告 | 证据档案:原文、发布日期、来源 |
| 周一 09:05 | 提交目标变更 | 变更表:前值、提议值、理由、data_as_of |
| 周一 09:20 | 数据负责人发现最新价格缺失 | 例外表:price_missing,受影响输出 |
| 周一 09:25 | 复核人退回 | 变更状态改为 needs_information,不写目标 |
| 周一 14:10 | 数据恢复并核对时间 | 关闭例外,附来源和最近有效时间 |
| 周一 14:30 | 复核通过 | approved_for_ledger,记录复核人 |
| 周一 14:35 | 写入研究账本 | 保存 ledger_write_ref;成交编号仍为空 |
| 周五 16:00 | 周度复核 | 检查理由、例外、历史和是否继续 |
这条时间线的重点是:缺价发生后,变更停在待补证状态;数据恢复不是自动批准;写入账本后也没有虚构真实成交。
两类高风险例外怎么处理
价格缺失或复权口径冲突
- 冻结受影响的当前权重和净值结论;
- 保存最近一次可确认价格及时间,但标记为历史值;
- 确认价格类型、复权方式、企业行为和供应商修订;
- 重新计算后生成新版本,不覆盖旧报告;
- 由不同于修改人的复核者关闭例外。
这是一套通用治理方法,不代表 Bastix 当前已经提供上述价格计算、缺价降级或基准重置行为。相关能力只有在字段、算法、失败样本和责任审批齐备后,才能写进产品说明。
负方向目标或不可交易对象
Bastix 当前公开事实没有批准针对负方向目标、指数、停牌或退市对象的具体提示与拦截行为,因此不能把这些行为写成产品现状。无论使用什么工具,管理制度都应对“研究表达可能无法真实执行”的情况增加人工处理:
- 把对象、限制来源和核验日期写入例外表;
- 将变更状态设为
needs_information; - 若研究确实需要负方向表达,说明它只是研究假设,不是现实可成交声明;
- 从交易所、券商或正式产品资料核对对象状态、账户资格与可用工具;
- 未获得可交易性证据前,
broker_execution_ref保持为空; - 产品没有明确拦截证据时,不把“记录已保存”解释成“规则已校验”。
“系统保存成功”不等于“市场可执行”,更不等于“已经成交”。
每日、每周和事件复核各看什么
| 节奏 | 复核内容 | 输出 |
|---|---|---|
| 每日或每次运行 | 标的解析、价格时间、现金、开放例外 | 当日数据状态,不重做策略判断 |
| 每周 | 目标版本、变更理由、未关闭例外、责任人逾期 | 继续、补证、修订或关闭 |
| 月度 | 券商对账、企业行为、权限和导出备份 | 更正记录和权限调整 |
| 事件触发 | 停牌、退市、代码变更、数据源切换、责任人交接 | 冻结范围、迁移计划和新版本 |
复核频率应根据组合用途和风险确定,本页不提供统一周期建议。研究组合可以把主要精力放在理由和证据;真实账户还必须完成券商数量、现金、费用和成交核对。
可直接复制的空白变更记录
change_id:
portfolio_id:
symbol:
submitted_at:
submitted_by:
previous_target:
proposed_target:
reason:
evidence_refs: []
data_as_of:
open_exception_ids: []
review_status: pending
reviewed_by:
reviewed_at:
ledger_write_ref:
broker_execution_ref:
next_review_at:只要 open_exception_ids 非空,或 data_as_of、理由、证据缺失,记录就不应进入 approved_for_ledger。如果团队没有独立复核人,应至少在变更记录中标明“提交者与复核者相同”,不要制造不存在的职责分离。